對二維陣列,做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,其結果又如何?解 假定連續傳送且不出錯。若...