求导数有两种,一种是表达式求导,一种是数值求导。
表达式求导:需要对表达式进行词法分析,然后用常见的求导公式进行演算,求得导函数。在这方面,数学matrix,maple做得非常好。如果自己用C进行编程,不建议。
数值求导:利用导数的定义,用差分计算,当自变量趋于0时,前后两次差分收敛到需要精度,计算结束。这种方法可以求得某一点的导数。例如:求一阶导数,原函数
y
=
f(x),
程序中是float
f(float
x){
}
t="code"
l="cpp">dx=0.01;
//设
dx
初值
do{
dd1=(f(x0)
-
f(x0+dx))/dx;
//计算导数dd1
dx
=
0.5
*
dx;
//
减小步长
dd2=(f(x0)
-
f(x0+dx))/dx;
//计算导数dd2
}while
(fabs(dd1-dd2)
>=
1e-06)
//判断新旧导数值之差是否满足精度,满足则得结果,不满足则返回