是否有可能使用c程序找到函数的导数。我正在使用matlab,因为它具有内置函数diff(),可用于查找函数的派生类。
f(x)=x^2
是否有可能使用c找到上述函数的导数。该算法是什么?
是的,很有可能。但是,解决方案取决于您的需求。如果您需要一个简单的数值解,则可以执行以下操作(在一定程度上有一些限制-天真的实现):
double derive(double (*f)(double), double x0)
{
const double delta = 1.0e-6; // or similar
double x1 = x0 - delta;
double x2 = x0 + delta;
double y1 = f(x1);
double y2 = f(x2);
return (y2 - y1) / (x2 - x1);
}
// call it as follows:
#include <math.h>
double der = derive(sin, 0.0);
printf("%lf\n", der); // should be around 1.0
对于更高级的数字计算,可以使用GNU Scientific Library.
但是,如果您需要通过分析来找到给定函数的导数的公式],则必须:
但是,您不需要做所有这一切;有很多提供这种功能的C数学库。
编辑:经过谷歌搜索后,我找不到一个。我能想到的最接近入门的解决方案是GeoGebra's source code-尽管它是用Java编写的,但是对于任何精通C语言的人来说,它都是很容易阅读的。如果没有,那就继续自己实现该算法:)
对于简单函数,以下数值微分效果很好:
C语言中没有内置实现此功能的工具。尽管您可以在线搜索,但也许可以找到一个数值库来执行此操作,尽管我会怀疑是否有任何可用的方法可以提供符号导数。您可以考虑自己使用正向,反向和/或中心差来编码近似数值导数。
在C语言中,您可以相对容易地进行粗略的数值微分,但是任何类型的符号微分都需要第三方框架或使用自己的框架。
对于想要在f'(x)后进行数学运算的好奇的偷窥者,我们使用从限制中得出的导数的标准定义,请参见:Formula for derivative.
我知道我来晚了,但是我已经写了一个库来做到这一点。