2010-06-03 135 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