C語言 例題3-1 計算微分近似解 (向前差 / 向後差 / 中央差)
以 f(x) = sin(x) ,取 h = 0.01,
以 C 語言計算在 x=1 之微分值為何,並與 cos(1) 做結果比較。
#include <stdio.h>
#include <math.h>
double func(double x) // 欲微分函數
{ return sin(x) ;}
double FordDiff(double x, double h, double (*fx)(double))
{ // 前差微分
return ( fx(x+h) - fx(x) ) / h;
}
double BackDiff(double x, double h, double (*fx)(double))
{ // 後差微分
return ( fx(x) - fx(x-h) ) / h;
}
double MidDiff(double x, double h,double (*fx)(double))
{ // 中差微分
return 0.5 * ( fx(x+h) - fx(x-h) ) / h;
}
int main()
{
double x = 1.0, h=0.01, delta;
double ans = cos(x); // 答案
double cal;
cal = FordDiff(x, h, func), delta = cal - ans;
printf("FordDiff : %lf, delta = %lf\n",cal,delta);
cal = BackDiff(x, h, func), delta = cal - ans;
printf("BackDiff : %lf, delta = %lf\n",cal,delta);
cal = MidDiff(x, h, func), delta = cal - ans;
printf("MidDiff : %lf, delta = %lf\n",cal,delta);
return 0;
}
輸出結果
FordDiff : 0.536086, delta = -0.004216
BackDiff : 0.544501, delta = 0.004198
MidDiff : 0.540293, delta = -0.000009
訂閱:
張貼留言 (Atom)
2024_09 作業3 以Node-Red 為主
2024_09 作業3 (以Node-Red 為主 Arduino 可能需要配合修改 ) Arduino 可能需要修改的部分 1)mqtt broker 2) 主題Topic (發行 接收) 3) WIFI ssid , password const char br...
-
python pip 不是内部或外部命令 -- 解決方法 要安裝 Pyqt5 1. 首先,開啟命令提示字元。 2. 輸入 pip3 install pyqt5 好像不能執行 ! ! 錯誤顯示 : ‘ pip3 ’ 不是內部或外部命令、可執行的程式或批...
-
課程講義 下載 11/20 1) PPT 下載 + 程式下載 http://www.mediafire.com/file/cru4py7e8pptfda/106%E5%8B%A4%E7%9B%8A2-1.rar 11/27 2) PPT 下載...
-
• 認 識 PreFix、InFix、PostFix PreFix(前序式):* + 1 2 + 3 4 InFix(中序式): (1+2)*(3+4) PostFix(後序式):1 2 + 3 4 + * 後 序式的運算 例如: 運算時由 後序式的...
沒有留言:
張貼留言