2010-06-03 44 views
2

我有一些功能,功能衍生

int somefunction(//parameters here, let's say int x) { 
    return something Let's say x*x+2*x+3 or does not matter 
} 

如何找到这个函数的导数?如果我有

int f(int x) { 
    return sin(x); 
} 

衍生后它必须返回cos(x)。

+0

相关:http://stackoverflow.com/questions/422594/衍生产品 - 在cc – 2010-06-03 13:12:45

回答

3

您可以通过查看小间隔内的梯度来近似导数。例如

const double DELTA=0.0001; 
double dfbydx(int x) { 
    return (f(x+DELTA) - f(x))/DELTA; 
} 

根据你正在评估的功能,你可以从(f(x+DELTA) - f(x-DELTA))/2*DELTA而不是取得更好的成绩。

(我假设你的问题“诠释”是一个错字如果他们真的是使用整数你可能有精度问题,这种方式。)

+0

aaa谢谢安迪,那么我应该使用浮点数或双精度是吗?它会更正确 – 2010-06-03 13:18:42

+0

@davit是的,当你开始寻找像这样的小范围,你将需要使用浮点数或双精度。您的原始功能对于某些用途而言并非不正确,但它们不够精确,无法从中获取衍生产品。 – 2010-06-03 13:24:48

+0

感谢例如,如果我们要编写使用牛顿方法的程序或类似这样的东西,我想学习如何在编程中实现派生程序,因为有时候需要找到最大的函数打开一些间隔或像这样的东西 – 2010-06-03 13:29:07