本帖最后由 netspirit 于 2021-5-28 20:22 编辑
写了一个python求多阶导数的算法,总是报错
递归我不太熟悉,请问一下这类算法该怎么优化?
好像只要求导次数超过2就会报错了
用递归的方法我又不知道怎么写
我知道有些库可以直接算导数,我就是想研究一下算法的.
[Python] 纯文本查看 复制代码 #coding=utf-8
def get_daoshu_value(func,x):
#求出一个函数导数值
# jieshu = jieshu-1
result=(func(x+0.00001)-func(x))/0.00001
return result
#1.
def get_2jie_daoshu(func,x):
#获取二阶导数
result=(get_daoshu_value(func,x+0.00001)-get_daoshu_value(func,x))/0.00001
return result
def get_3jie_daoshu(func,x):
#获取二阶导数
result=(get_2jie_daoshu(func,x+0.00001)-get_2jie_daoshu(func,x))/0.00001
return result
def get_njie_daoshu(func,x,n):
#获取n阶导数
func_list=[]
for i in range(n):
if i == 0:
def func_x(x):
return (func(x+0.00001)-func(x))/0.00001
func_list.append(func_x)
else:
func1=func_list[-1]
def func_x(x):
return (func1(x+0.00001)-func1(x))/0.00001
func_list.append(func_x)
return func_list[-1](x)
def main():
func1=lambda x:x**5
# print(get_2jie_daoshu(func1,4))
print(get_njie_daoshu(func1,5,3))
if __name__ == '__main__':
main()
把func_list.append(func_x)替换成func_list.append(copy.deepcopy(func_x))还是不行..... |