直接利用数学中导数的定义就行

代码实现就是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| MIN=1e-9 #一个足够小的数
import numpy as np def f_yuan(x_2): y_2=x_2**2 #这里的函数可以改 return y_2 def F_daoshu_yuan(x_1): a_1=(f_yuan(x_1+MIN)-f_yuan(x_1))/MIN return a_1
A_1=F_daoshu_yuan(1) print(A_1) print("*******************************************") A_2=F_daoshu_yuan(10) print(A_2) print("*******************************************") A_3=F_daoshu_yuan(1000) print(A_3) print("*******************************************") A_4=F_daoshu_yuan(10000) print(A_4) print("*******************************************")
# 2.000000165480742 # ******************************************* # 20.00000165480742 # ******************************************* # 2000.0152289867399 # ******************************************* # 20012.259483337402 # ******************************************* # # 进程已结束,退出代码0
|
优缺点
优点是泛用性非常好,也十分好理解,在合适的范围,函数可以变得不规则,但是依旧可以求出导数的大约值,并不会与真实值差的很多
缺点很明显在数据十分大的时候误差也会越来越大,原因就是MIN的值还是太大了。