數值分析第三次大作業

2021-07-02 21:01:54 字數 3061 閱讀 5621

對二維陣列,做f關於t,u的分片二次插值,根據插值節點,形成16個二元二次函式。

對每一組xi

=0.08∗i

,yj=

0.5+

0.05∗j

(i=0

,1,⋯

,10,j

=0,1

,⋯,20

) 帶入方程組,用迭代法求解出相對應的t,u,根據t,u的取值範圍,選擇合適的二元二次插值函式,求出f(

xi,y

j). 對於k

=0,1

,⋯,10

,使用最小二乘法法求出f(x,y)在區域d=

的近似表示式 p(

x,y)

=∑r=

0k∑s

=0kc

rsxr

ys,其中r=

kr=0

,s=k

s=0 是基函式,具體演算法如下:

初始化p(x,y),對xi

=0.1∗i

,yj=

0.5+

0.2∗j(

i=1,

2,⋯,

8;j=

1,2,

⋯,5)

,重新計算 f(

xi,y

j)以及 p(

x∗i,

y∗j)

.

#include

#include

double t,u;

double max(double x,double y)

void nonlinear(double x,double y)

; double v,w,t1,u1,v1,w1,norm;

double minu,maxu,maxt,mint;

int k;

v=0.5;

w=0.5;

t=0.5;

u=0.5;

for(k=1;k<10000;k++)

}}double interpolation(double x,double y)

, ,,,

,};int i,j,k,r,s;

for(i=0;i<6;i++)

if(x<=0.3)i=1;

if(x>0.3&&x<=0.5)i=2;

if(x>0.5&&x<=0.7)i=3;

if(x>0.7)i=4;

if(y<=0.6)j=1;

if(y>0.6&&y<=1.0)j=2;

if(y>1.0&&y<=1.4)j=3;

if(y>1.4)j=4;

for(k=i-1;k<=i+1;k++)

}return p;

}int main()

}printf("press any key to continue:\n");

getch();

for(k=0;k<=10;k++)

for(i=0;i<=10;i++)//b

for(j=0;j<=k;j++)

b[i][j]=pow(x[i],j);

for(i=0;i<=k;i++)//v=b^t*b

for(j=0;j<=k;j++)

for(r=0;r<=10;r++)

v[i][j]=v[i][j]+b[r][i]*b[r][j];

for(i=0;i<=k;i++)//v1=b^t*f

for(j=0;j<=20;j++)

for(r=0;r<=10;r++)

v1[i][j]=v1[i][j]+b[r][i]*f[r][j];

for(s=0;s<=20;s++)//v*a=v1

for(r=0;r//消元過程

}for(r=k;r>=0;r--)//回代過程

}for(i=0;i<=20;i++)//g

for(j=0;j<=k;j++)

g[i][j]=pow(y[i],j);

for(i=0;i<=k;i++)//g1=g^t*g

}for(i=0;i<=k;i++)//c1=a*g

for(s=0;s<=k;s++)//g1*c^t=c1^t

for(r=0;r//消元過程

}for(r=k;r>=0;r--)//回代過程

c[s][r]=(c1[s][r]-sum)/gg[r][r];}}

m=0;

for(i=0;i<=10;i++)

m=m+pow(f[i][j]-p[i][j],2);}}

printf("k=%d 精度m=%.12e\n",k,m);

if(m<=1e-7)

break;}}

for(i=0;i<10;i++)

for(j=0;j<10;j++)

p[i][j]=0;

for(i=1;i<=8;i++)

printf("x[%d]=%-5.2fy[%d]=%-5.2ff[%d][%d]=%-23.12ep[%d][%d]=%-20.12e\n",i,x[i],j,y[j],i,j,f[i][j],i,j,p[i][j]);}}

return

0;}

陣列(x

選擇過程中的k,

達到精度要求時的k,

σ,以及p(

x,y)

中的係數cr

數表:

演算法分析第三次作業

在乙個排好序的陣列t 1.n 中查詢x,如果x在t中,輸出x在t的下標j 如果x不在t中,輸出j 0.遍歷陣列 二分陣列 遍歷陣列的演算法,就是乙個個按順序查詢 二分演算法 判斷乙個搜尋集,每次判斷搜尋集的中間,減去一半區間 遍歷演算法 o n 二分演算法 o logn 1 include2 inc...

第三次作業

2 12有600 mb 兆位元組 的資料,需要從南京傳送到北京。一種方法是將資料寫到磁碟上,然後託人乘火車這 些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料。試比較這兩種方法的優劣。若資訊傳送速率為33.6kb s,其結果又如何?解 當傳送速率為2.4k...

第三次作業

1 有600mb 兆位元組 的資料,需要從南京傳送到北京 一種方法是將資料寫到磁碟上,然後託人乘火車將這些磁碟捎去。另一種方法是用計算機通過長途 線路 設資訊傳送的速率為2.4kb s 傳送此資料,試比較這兩種方法的優劣。若資訊傳送的速率為33.6kb s,其結果又如何?解 假定連續傳送且不出錯。若...