有没有办法计算c中函数的部分导数的值,到目前为止还不知道?我在这里阅读:Compute a derivative using discrete methods关于如何实现派生,这只有在我确切知道函数f(x)x =(x0,x1,...,xn)时才有可能。但是,如果我想将函数f(x)作为参数传递,这在某种程度上是可能的吗?我想这不是因为我需要以某种方式解析字符串(显然必须作为字符串传递,如'x0 * exp(x1)* ln(x2 * x1)')!? 谢谢到目前为止!
编辑:我的问题不是关于如何将函数作为指针传递给c,而是关于如何评估数学函数,例如由用户输入为字符串。
答案 0 :(得分:4)
您可以传递某种代表表达式的parse-tree而不是字符串。对于非隐式函数,符号微分是一个简单而完全机械的任务,因此一旦你决定如何表示它就区分表达式会相对容易。
答案 1 :(得分:2)
对C中的函数指针执行搜索,这对您有帮助。
编辑:添加一个例子,这样就更明显了......
#include <stdio.h>
typedef float (*real_univariate_function)(float x);
float calculate_derivative(real_univariate_function f, float x, float h) {
return (f(x+h)-f(x))/h;
}
float square(float x) {
return x*x;
}
int main() {
printf("derivative for x^2 in 2 with h 0.001 is: %f\n",
calculate_derivative(&square, 2, 0.001));
}
可能存在一些语法错误,我的C生锈了......
答案 2 :(得分:1)
我知道我迟到了,但也许这可以帮助别人。 我写了一个完全符合这个目的的库: https://github.com/B3rn475/MathParseKit
您可以将字符串解析为函数树并计算导数。