當前位置:編程學習大全網 - 編程語言 - 高分懸賞 求三維數據點C語言插值計算程序

高分懸賞 求三維數據點C語言插值計算程序

問題補充,因字數限制,挪到這

1.拉格朗日插值簡介:

對給定的n個插值節點x1,x2,…,xn,及其對應的函數值y1=f(x1), y2=f(x2),…, yn=f(xn);使用拉格朗日插值公式,計算在x點處的對應的函數值f(x);

2.壹維拉格朗日插值c語言程序:

Int lagrange(x0, y0, n, x, y)

Float xo[], yo[], x;

Int n;

Float *y

{

Int i, j;

Float p;

*y=0;

If (n>1)

{

For(i=0;i<n;i++)

{

P=1;

For(j=1;j<n;j++)

{

If(i!=J)

P=p*(x-x0[j]/x0[i]-x0[j]);

}

*y=*y+p*y0[i];

Return(0);

}

Else

Return(-1);

}

3.例題。已知函數如下表所示,求x=0.472處的函數值:

X 0.46 0.47 0.48 0.49

Y 0.484655 0.4903745 0.502750 0.511668

計算這個問題的c語言程序如下:

#minclude stdio

#includeM<nath.h>

Main()

{

Float x0[4]={ 0.46, 0.47,0.48,0.49};

Float y0[4]={ 0.484655 ,0.4903745 ,0.502750 ,0.511668};

Float x, y;

Int n, rtn;

N=4;

X=0.472;

Rth=lagrange(x0,y0,n,x,&y);

If(rtn=0)

{

Prinf(“Y(0.472)=:%f\n”,y);

}

Else

{

Prinf(“n must be larger than 1.\n”);

}

}

計算結果:Y(0.472)=:0.495553

4.問題補充

我的問題與上面的例子類似,計算三維空間壹點(x,y,z)對應的函數值(Vx,Vy,Vz).不同的是自變量(point_coordinate.txt)為三維空間散亂點(不是正方體的頂點),因變量(point_data.txt)為矢量(向量 )。插值算法比較多,常數法,拉格朗日插值,埃特金插值,三階樣條插值等。最簡單的就是常數法,查找離目標點(x,y,z)距離最近的已知自變量(Xi,Yi,Zi),把該點的函數值賦給目標點做函數值,求高手幫忙寫寫。

  • 上一篇:數控系統的單片機編程
  • 下一篇:工商管理和金融那個專業更好?
  • copyright 2024編程學習大全網