C語言 例題1-8 已知5點的座標值 使用牛頓內插法
利用外插法求P(1.5) P(2.5)之值=?
輸入資料
n=4
0.0 0.0
1.0 -3.0
2.0 0.0
3.0 15.0
4.0 48.0
輸出結果
Divided Difference Table:
=================================
i x(i) f(i) f(i,i+1) f(i,i+1.i+2), ......
0 0.0 0.0 -3.0 3.0 1.0 0.0
1 1.0 -3.0 3.0 6.0 1.0
2 2.0 0.0 15.0 9.0
3 3.0 15.0 33.0
4 4.0 48.0
因為P(1.5)的外差法
所以以 i=2到i=4共三點的牛頓差除表 0.0 15.0 9.0 得到
P(x)=0.0 + 15.0 (x-2.0) + 9.0 (x-2.0)(x-3.0)
將 1.5帶入上式中P(1.5)= -0.75
與 f(x)=x^3 - 4x = -2.625 誤差很大 因為外差點離[x0,xn]太遠
將 2.5帶入上式中P(2.5)= 5.25
與 f(x)=x^3 - 4x = 5.625 誤差還是比內插法大 外差點離[x0,xn]遠
利用Lagrange 與 Newton 內插法得到的方程式是相同的
程式
/* ex1-9.c is for developing the divided-defference
* table for Newton Interpolation polynomial.
*/
#include <stdio.h>
void main()
{
int i,j,n;
double f[40][40],x[40];
scanf("n=%d",&n);
for(i=0;i<=n;i++)
{
scanf("%lf %lf ",&x[i],&f[i][0]);
}
printf("\n Divided Difference Table:\n");
printf(" =========================\n");
for(j=1;j<=n;j++)
{
for(i=0;i<=n-j;i++)
{
f[i][j]=(f[i+1][j-1]-f[i][j-1])/(x[i+j]-x[i]);
}
}
printf("i x(i) f(i) f(i,i+1) f(i,i+1.i+2), ......\n");
for(i=0;i<=n;i++)
{
printf("%d %8.1lf ",i,x[i]);
for(j=0;j<=n-i;j++)
{
printf("%8.1lf ",f[i][j]);
}
printf("\n");
}
return;
}
訂閱:
張貼留言 (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 + * 後 序式的運算 例如: 運算時由 後序式的...
沒有留言:
張貼留言