Eka*_*Eka 13 c derivative
是否有可能使用c程序找到函数的导数.我正在使用matlab,它有一个内置函数diff(),可用于查找函数的导数.
f(x)=x^2
Run Code Online (Sandbox Code Playgroud)
是否有可能使用c找到上述函数的导数.算法是什么?
小智 18
是的,很有可能.但是,解决方案取决于您的需求.如果您需要一个简单的数值解法,以下将做(在某种程度上,有一些约束 - 天真的实现):
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
Run Code Online (Sandbox Code Playgroud)
对于更高级的数值计算,您可以使用GNU Scientific Library.
但是,如果您需要在分析中找到给定函数的导数的公式,那么您必须:
但是,你不需要做所有这些; 有很棒的C数学库提供这样的功能.
编辑:经过一些谷歌搜索,我找不到一个.我能想到的最接近的解决方案是看看GeoGebra的源代码 - 尽管它是用Java编写的,但对于任何一个能够使用类C语言的人来说,它都相当容易阅读.如果没有,请继续自己实施该算法:)