兰州交通大学
工程测量实习报告
班 级:
学 号:
姓 名:
指导老师:
一、测量实习内容、目的和要求
[实习内容]
1根据指定地形,通过实地测量,绘制断面图。
2根据指定地形(假设房屋地基),通过实地测量,计算该地形(挖方 填方)土石方量。
[目的和要求]
1根据测量成果绘制横,纵断面图。计算土石方量
2纵向150m范围内每10m一个测点(地形变化大的区域增设测点)
3横向以线路中线为基础左右各延伸20m一个测点(地形变化大的区域增设测点)
4房屋地基纵向轴线以测量断面纵向轴线为主(20X15)边坡设计为(1:0.3)
[仪器和工具]
1全站仪
2棱镜
3钢卷尺
[主要步骤]
1假设已知点坐标A(50,50,1600)B(50,50.254,1600)
2设站A点后视B点定向(假设坐标系成立)
3根据题目要求将棱镜立在各测点上红外测量,记录测点坐标(对于地形变化交大通视条件不好的区域通过转点方式增设控制点)
4导出数据,制成表格
5根据测量成果绘制图形
[教师评语、成绩]
二、纵断面测量记录表格
三、纵断面图
四、横断面测量记录表格
五、横断面图
六、土石方测量记录表格
七、土石方计算
实习总结
20##年3月10日我们正式开始了为期三周的“横纵断面测量及土石方计算实习”,在此之前,我们在老师的带领下进行了一系列的准备工作。首先,说明了测量任务和测量的实际意义及重要性,我们跟随老师来到测区地点,看了测区的地形,虽然测区比较小,但是地形变化很明显,为了尽快完成任务,我们每一天都努力,尽管很累,很辛苦,可我们还是克服了种种困难,同时我们也在实习中感觉到了充实,
在此之前,我们在老师的带领下到工地上进行实地勘察,但那毕竟是理论的,实际操作对我们来说还是模糊的,所以,这次实习就是对我们大学四年的一次大检验。我们把这次实习当做我们以后工作的一次磨练,把我们学到的知识与实际联系起来,从实践中发现自己的不足,弥补我们的缺陷。
测量是一项务实求真的工作,半点马虎都不行,我们在测量实习中必须保持数据的原始性,这也是很重要的。为了确保计算的正确性和有效性,我们得反复校核对各个测点的数据是否正确。我们在测量中不可避免的犯下一些错误,比如读数不够准确,气泡没居中等等,都会引起一些误差。因此,我们在测量中内业计算和测量同时进行,这样就可以及时发现错误,及时纠正,同时也避免了很多不必要的麻烦,节省了时间,也提高了工作效率。
测量也是一项精确的工作,通过测量学的学习和实习,在我的脑海中形成了一个基本的测量学的轮廓。测量学内容主要包括测定和测设两个部分,要完成的任务在宏观上是进行精密控制,从微观方面讲,测量学的任务为按照要求测绘各种比例尺地形图;为各个领域提供定位和定向服务,建立工程控制网,辅助设备安装,检测建筑物变形的任务以及工程竣工服务等。而这一任务是所有测量学的三个基本元素的测量实现的:角度测量、距离测量、高程测量。
在这次实习中,我们学到了测量的实际能力,更有面对困难的忍耐力,同时也认识到小组团结的重要性。最重要的是学会了怎样测量横纵断面图以及计算测区土石方量以及后期的成图制作方法。在今后的工作学习中肯定会受益匪浅。
第二篇:计算实习报告3
数 值 分 析(B) 大 作 业(三)
姓名: 学号: 电话:
1、算法设计:
①整体思路
这一次的作业和前面两次相比,感觉要难很多,最明显的就是书上没有完整的算法实现流程。再加上插值和逼近这一段在课上也没听太懂什么意思,所以刚开始思考这个程序时感觉很吃力。不过经过后来好好看书和向同学请教,渐渐对插值和分片元二次拟合有点懂了,也大概知道了解决本次问题分别要完成的子问题。
要完成本次任务,主体上有三部分问题要解决:
(1)解非线性方程组。将D内的(xi,yi))当作已知量代入题目给定的非线性方程组,得到与(xi,yi)相对应的t[i][j],u[i][j]。
(2)分片双二次插值。采用分片双二次插值,得到与t[11][21],u[11][21]]对应的z[11][21],也即建立(xi,yi)与f(xi,yi)的对应关系,得到二元函数z?f(xi,yi)。
(3)曲面拟合。利用x[i],y[j],z[11][21]建立二维函数表,再根据精度的要求选择适当k值,并得到曲面拟合的系数矩阵C[k][k]。
(4)观察逼近效果。观察逼近效果只需要重复上面(1)和(2)的过程,得到与新的插值节点(xi,yi)对应的f(xi,yi),再与对应的p(xi,yi)比较即可。
程序示意图如下所示:
②各部分问题的算法实现
(1)解非线性方程组
非线性方程组常用数值解法有简单迭代法和牛顿法。牛顿法收敛快,一般都能达到平方收敛,因此这里选择Newton法解非线性方程组。
牛顿法解方程组F(x)?0的解x*,可采用如下算法:
1)在x*附近选取x(0)?D,给定精度水平??0和最大迭代次数M。
2)对于k?0,1,?M执行
① 计算F(x(k))和F?(x(k))。
② 求解关于?x(k)的线性方程组
F?(x(k))?x(k)??F(xk( ))
③ 若?x(k)
?x(k)???,则取x?x*(k),并停止计算;否则转④。
④ 计算x(k?1)?x(k)??x(k)。
⑤ 若k?M,则继续,否则,输出M次迭代不成功的信息,并停止计算。 注:第③步中?x(k)的求取,用到了解线性方程组,使用的是列主元素Gauss消去法。 另外,本次作业中解非线性方程组实际求取的是解向量t和u,方程组中的x、y 是已知值,为当前节点(xi,yj)的值。
(2)分片双二次插值
给定已知数表以及需要插值的节点,进行分片二次插值的算法:
设已知数表中的点为: ???xi?x0?ih(i?0,1,?,n)
??yj?y0?j?(j?0,1,?,m) ,需要插值的节点为(x,y)。
1) 根据(x,y)选择插值节点(xi,yj): 若x?x1?若y?y1?h2或x?xn?1?h2,插值节点对应取i?1或i?n?1, ,插值节点对应取j?1或i?m?1。 ?2或y?yn?1??2
hh?x??x?x?,2?i?n?2ii??22 若? ???y??y?y?,2?j?m?2jj??22
则选择(xk,yr)(k?i?1,i,i?1;r?j?1,j,j?1)为插值节点。
2)计算
i?1
lk(x)?
?
t?i?1t?kj?1
x?xtxk?xty?ytyr?yt
k(?i?1i,i?,1)
l?r(y)?
r(?j?1j,j?,
1)
?
t?j?1
t?r
插值多项式的公式为:
i?1
j?1
p(x,y)?
??
k?i?1r?j?1
lk(x)l?r(y)f(xk,yr)
注:在(1)中通过解非线性方程组得到的解向量t和u与插值节点(xi,yj)有着一一对应关系,而本题题目给出的函数表为z关于(t,u)的函数关系。因此,为得到z关于(x,y)的函数关系,本题中应先根据给定数表对(t,u)进行插值,再利用(xi,yj)与
(t,u)的一一对应关系得到z与(xi,yj)的对应关系。
(3)曲面拟合
根据插值得到的数表xi,yj,f(xi,yj)进行曲面拟合的过程: 1) 根据拟合节点和基底函数写出矩阵B和G:
?(x0)0?0(x1)? B?
????(x)0?n
(x0)(x1)?(xn)
T
1
???
1
1
?
?1
T
k
?(y0)0(x0)?
?k?0
(x1)?(y1)? G?
????
??k?(y)0
(xn)???m
T
?1
(y0)(y1)?
1
???
1
(ym)
1
?
k
(y0)?
k?(y1)?
??
?k
(ym)??
2) 计算 C?(BB)BUG(GG)。
在这里,为了简化计算和编程、避免矩阵求逆,记:
A?(BB)BU,DT?G(GTG)?1
对上面两式进行变形,得到如下两个线性方程组: (BB)A?BU,(GG)D?G
T
T
T
T
T?1T
通过解上述两个线性方程组,则有:C?AD
k
k
rs
T
3) 对于每一个(xi,yj), p(xi,yj)?4) 拟合需要达到的精度条件为:
n
m
*
*
??C
r?0s?0
(xi)(yj)。
rs
??
??[p
i?0j?0
(xi,yj)?uij]?10
2?7
。
其中uij对应着插值得到的数表xi,yj,f(xi,yj)中f(xi,yj)的值。
5) 让k逐步增加,每一次重复执行以上几步,直到
nm
*????[p
i?0j?0(xi,yj)?uij]?102?7 成立。此时的k值就是所需最小的k。
注:曲面拟合过程中用到的数表为前面插值得到的数表,即xi,yj,f(xi,yj)。
在2)中,求矩阵A和D的过程用的是列主元素Gauss消去法。
(4)观察逼近效果。
观察逼近效果主要要做的是,通过新的插值节点(xi,yi),i?1,2,?8,j?1,2,?5
建立新的插值数表xi,yj,f(xi,yj),同时求出对应的p(xi,yi),比较即可。
2、程序源代码:
#include "stdio.h"
#include "conio.h"
#include "math.h"
#define Epsilon1 1e-12 //解线性方程组时近似解向量的精度
#define MaxM 200 //解线性方程组时的最大迭代次数
#define K 10 //预估的能达到精度要求的k值,K>=k
#define givenX 11 //已知要求的插值节点xi个数
#define givenY 21 //已知要求的插值节点yi个数
#define testX 8 //观察逼近效果时,插值节点xi个数
#define testY 5 //观察逼近效果时,插值节点yi个数
/***************************************************************/ /* 函数功能描述: */ /***************************************************************/ /* norm():求向量x的无穷范数 */ /* Newton_Nonlinear():牛顿法解非线性方程组的主干部分 */ /* GaussElemitation_select():线性方程组的列主元素Gauss消去法 */ /* Interplate():分片二元二次插值 */ /* Surfacefit():曲面拟合,函数返回满足精度要求的最小k值 */ /* Calculate_A():根据拟合曲面的系数矩阵C=A(DT),求矩阵A */ /* Calculate_D():根据拟合曲面的系数矩阵C=A(DT),求矩阵D */ /* Test_observe():观察逼近效果子函数 */ /***************************************************************/ double norm(double x[4]);
int Newton_Nonlinear(double xstar[4],double xi,double yi);
void GaussElemitation_select(double dF[4][4],double F[4],double delta_x[4]);
void Interplate(double t[11][21],double u[11][21],double z[11][21],int numi,int numj); int Surfacefit(double z[11][21],double x[11],double y[21],double C[K][K]); void Calculate_A(double A[K][21],double z[11][21],double x[11],int k);
void Calculate_D(double D[K][21],double z[11][21],double y[11],int k);
void Test_observe(int k,double C[K][K],double z[11][21]);
void main()
{
/*********************************************************************/ /* 变量描述: */ /*********************************************************************/ /* x[11]、y[21]:插值节点(xi,yi) */ /* t[11][21]、u[11][21]:与节点(xi,yi)对应的二元组(t[i][j],u[i][j]) */ /* GaussElemitation_select():线性方程组的列主元素Gauss消去法 */ /* z[11][21]:存放插值得到的数表 */ /* C[K][K]:存放曲面拟合得到的系数矩阵,其中K是预估的最小k值 */ /*********************************************************************/ double t[11][21],u[11][21],x[11],y[21],z[11][21],C[K][K];
double xstar[4];
int i,j,k,flag;
/********************************************************/
/* 解非线性方程组 */
/********************************************************/
for(i=0;i<=givenX-1;i++) //通过解非线性方程组,建立(x,y)与(t,u)的对应关系 {
for(j=0;j<=givenY-1;j++)
{
x[i]=0.08*i;
y[j]=0.5+0.05*j;
xstar[0]=1;
xstar[1]=1;
xstar[2]=1;
xstar[3]=1; //选取迭代初始值x(0)
flag=Newton_Nonlinear(xstar,x[i],y[j]); //牛顿法解非线性方程组 if(flag==-1) goto END; //如果非线性方程组求解失败,中止程序 t[i][j]=xstar[0];
u[i][j]=xstar[1];
} }
/********************************************************/
/* 插值并输出插值得到的数表 */
/********************************************************/
Interplate(t,u,z,11,21); //分片二次插值
printf("1、插值得到的数表为:\n");
for(i=0;i<=10;i++) //输出插值得到的数表:xi,yi,f(xi,yi)
{
for(j=0;j<=20;j++)
{
printf("x[%d]= %.6f ",i,x[i]);
printf("y[%d]= %.6f ",j,y[j]);
printf("z[%d][%d]= %.12e\n",i,j,z[i][j]);
}
}
printf("\n");
/********************************************************/ /* 曲面拟合并输出拟合得到的矩阵C */ /********************************************************/ k=Surfacefit(z,x,y,C); //曲面拟合,返回满足精度要求的最小k值 printf("系数矩阵C为:\n");
for(i=0;i<=k;i++) //输出曲面拟合得到的系数矩阵C
{
for(j=0;j<=k;j++)
{
printf("C[%d][%d]=%.12e ",i,j,C[i][j]);
if(j!=0&&j%2==1) printf("\n"); //两个一行输出
}
/********************************************************/ /* 观察插值的逼近效果 */ /********************************************************/ printf("3、观察插值的逼近效果:\n");
Test_observe(k,C,z); //观察逼近效果
END:
; //作为求解非线性方程组迭代次超限的出口
getch();
}
/* 牛顿法解非线性方程组 */
int Newton_Nonlinear(double xstar[4],double xi,double yj)
{
int k,l;
double delta_x[4],F[4],dF[4][4];
k=0;
while(1)
{
/* 计算F(x(k))的值 */
F[0]=0.5*cos(xstar[0])+xstar[1]+xstar[2]+xstar[3]-xi-2.67; F[1]=xstar[0]+0.5*sin(xstar[1])+xstar[2]+xstar[3]-yj-1.07; } printf("\n");
F[2]=0.5*xstar[0]+xstar[1]+cos(xstar[2])+xstar[3]-xi-3.74;
F[3]=xstar[0]+0.5*xstar[1]+xstar[2]+sin(xstar[3])-yj-0.79;
/* 计算F'(x(k))的值,F'(x(k))为一个4x4矩阵*/
dF[0][0]=-0.5*sin(xstar[0]);
dF[0][1]=1;
dF[0][2]=1;
dF[0][3]=1;
dF[1][0]=1;
dF[1][1]=0.5*cos(xstar[1]);
dF[1][2]=1;
dF[1][3]=1;
dF[2][0]=0.5;
dF[2][1]=1;
dF[2][2]=-sin(xstar[2]);
dF[2][3]=1;
dF[3][0]=1;
dF[3][1]=0.5; dF[3][2]=1; dF[3][3]=cos(xstar[3]); GaussElemitation_select(dF,F,delta_x); //列主元素Gauss消去法解线性方程组 if((norm(delta_x)/norm(xstar))<=Epsilon1) //达到精度要求,跳出 break;
for(l=0;l<=3;l++)
xstar[l]=xstar[l]+delta_x[l]; //未达到精度要求,x(k?1)?x(k)??x(k) k++;
if(k>=MaxM) //迭代次数超限,返回-1作为后面程序是否执行的标志 {
printf("迭代次数k=%d超出限制!\n",k);
return(-1);
} }
}
/* 列主元素Gauss消去法解线性方程组 */
void GaussElemitation_select(double dF[4][4],double F[4],double delta_x[4]) {
int i,j,k,line_flag;
double m_ik,temp;
for(k=0;k<=2;k++)
{
/*选行号*/
line_flag=k;
for(i=k;i<=2;i++)
{
if(fabs(dF[i][k])<fabs(dF[i+1][k])) line_flag=i+1; else ;
}
if(line_flag!=k) //第K个主元不在第K行时,交换两行元素 {
for(i=k;i<=3;i++)
{
temp=dF[k][i];
dF[k][i]=dF[line_flag][i];
dF[line_flag][i]=temp;
}
temp=F[k];
F[k]=F[line_flag];
F[line_flag]=temp;
}
/*消元*/
for(i=k+1;i<=3;i++)
{
m_ik=dF[i][k]/dF[k][k];
for(j=k;j<=3;j++) { dF[i][j]=dF[i][j]-m_ik*dF[k][j]; } }
}
/*回代过程*/
delta_x[3]=-F[3]/dF[3][3];
for(k=2;k>=0;k--)
{
temp=0;
for(j=k+1;j<=3;j++) {temp+=delta_x[j]*dF[k][j];}
delta_x[k]=(-F[k]-temp)/dF[k][k];
}
}
/* 求向量x的无穷范数 */
double norm(double x[4])
{
int i;
double temp=0;
for(i=0;i<=3;i++)
{
if(temp<fabs(x[i]))
temp=fabs(x[i]);
}
return(temp);
}
/* 分片二元二次插值 */
void Interplate(double t[11][21],double u[11][21],double z[11][21],int numi,int numj) {
int k[11][21],r[11][21];
int i,j,i1,j1,m;
double z0[6][6]={{-0.5,-0.34,0.14,0.94,2.06,3.5},
{-0.42,-0.5,-0.26,0.3,1.18,2.38},
{-0.18,-0.5,-0.5,-0.18,0.46,1.42},
{0.22,-0.34,-0.58,-0.5,-0.1,0.62},
{0.78,-0.02,-0.5,-0.66,-0.5,-0.02},
{1.5,0.46,-0.26,-0.66,-0.74,-0.5}}; //已知数表 double t0[6]={0,0.2,0.4,0.6,0.8,1.0};
double u0[6]={0,0.4,0.8,1.2,1.6,2.0}; //原始已知节点
double temp1,temp2;
/* 选择插值节点,xi、yi分开选择 */
for(i=0;i<=numi-1;i++) //选择插值节点xi
{
for(j=0;j<=numj-1;j++)
{
if(t[i][j]<=0.3) k[i][j]=1;
else if(t[i][j]>0.7) k[i][j]=4;
else
{
for(m=2;m<=3;m++)
{
if((t[i][j]>0.2*m-0.1)&&(t[i][j]<=0.2*m+0.1))
{
k[i][j]=m;
}
}
}//end if
}//end for
}//end xi
for(i=0;i<=numi-1;i++) //选择插值节点yi
{
for(j=0;j<=numj-1;j++)
{
if(u[i][j]<=0.6) r[i][j]=1;
else if(u[i][j]>1.4) r[i][j]=4;
else
{
for(m=2;m<=3;m++)
{
if((u[i][j]>0.4*m-0.2)&&(u[i][j]<=0.4*m+0.2))
{
r[i][j]=m;
}
}//end if
}//end for
}//end yi
/* 插值 */
for(i=0;i<=numi-1;i++)
{
for(j=0;j<=numj-1;j++)
{
z[i][j]=0; //初始化节点z[i][j]
for(i1=k[i][j]-1;i1<=k[i][j]+1;i1++)
{
for(j1=r[i][j]-1;j1<=r[i][j]+1;j1++)
{
temp1=1.0;
for(m=k[i][j]-1;m<=k[i][j]+1;m++) //计算lk(x)
{ if(m!=i1) temp1*=(t[i][j]-t0[m])/(t0[i1]-t0[m]); } temp2=1.0;
for(m=r[i][j]-1;m<=r[i][j]+1;m++) //l?r(y)
{ if(m!=j1) temp2*=(u[i][j]-u0[m])/(u0[j1]-u0[m]); } z[i][j]+=temp1*temp2*z0[i1][j1];
}
}//end 求插值节点z[i][j]
}
}//end 插值
}
/* 分片二次插值 */
int Surfacefit(double z[11][21],double x[11],double y[21],double C[K][K]) {
int i,j,k,m,i1,j1;
double A[K][21],D[K][21]; //A、D的阶数为kx21
double sigma=1,temp,p[11][21];
printf("2、选择过程中的k和σ值:\n");
k=0; }
while(sigma>1e-7)
{
Calculate_A(A,z,x,k); //求矩阵A
Calculate_D(D,z,y,k); //求矩阵D
/*计算矩阵C,C=A(DT)*/
for(i=0;i<=k;i++)
{
for(j=0;j<=k;j++)
{
temp=0;
for(m=0;m<=20;m++)
{ temp+=A[i][m]*D[j][m]; }
C[i][j]=temp;
}
}
/*计算sigma,选择满足精度要求的最小k*/
sigma=0;
for(i=0;i<=10;i++)
{
for(j=0;j<=20;j++)
{
p[i][j]=0;
for(i1=0;i1<=k;i1++)
{
for(j1=0;j1<=k;j1++)
{ p[i][j]+=C[i1][j1]*pow(x[i],i1)*pow(y[j],j1); }
}//end p(xi,yj)
sigma+=pow(p[i][j]-z[i][j],2);
}
}//end sigma
printf("k=%d σ=%.12e\n",k,sigma); //输出当前k值和σ
k++;
}
k--;
printf("曲面拟合达到精度要求,此时:\n");
printf("k=%d σ=%.12e\n",k,sigma);
return k;
}
/*********************************************************************/ /* 函数名:Calculate_A */ /*********************************************************************/ /* 功 能:根据公式 ((BT)B)A=(BT)U,通过解线性方程组得到矩阵A */ /*********************************************************************/
void Calculate_A(double A[K][21],double z[11][21],double x[11],int k)
{
int i,j,m,l,line_flag;
double B[11][K],BT[K][11],BTB[K][K],BTU[K][21]; //B和BT的阶数分别为11xk和kx11 double BTB_1[K][K],temp; //A的阶数为kx21
double m_ik;
/* 计算矩阵B */
for(i=0;i<=10;i++)
{
for(j=0;j<=k;j++)
{
B[i][j]=pow(x[i],j);
BT[j][i]=B[i][j];
}
}//end B
/* 计算矩阵BT和B相乘,并将结果存在矩阵BTB中 */
for(i=0;i<=k;i++)
{
for(j=0;j<=k;j++)
{
temp=0;
for(m=0;m<=10;m++)
{ temp+=BT[i][m]*B[m][j]; }
BTB[i][j]=temp;
}
}//end BTB
/* 计算矩阵BT和U相乘,并将结果存在矩阵BTU中 */
for(i=0;i<=k;i++)
{
for(j=0;j<=20;j++)
{
temp=0;
for(m=0;m<=10;m++)
{ temp+=BT[i][m]*z[m][j]; }
BTU[i][j]=temp;
}
}//end BTU
/* 列主元素Gauss消元法解矩阵A */
for(l=0;l<=20;l++)
{
/*复制矩阵BTB*/
for(i=0;i<=k;i++)
{
for(j=0;j<=k;j++)
{ BTB_1[i][j]=BTB[i][j]; }
}
/*Gauss消元法*/
for(m=0;m<=k-1;m++)
{
/*选行号*/
line_flag=m;
for(i=m;i<=k-1;i++)
{
if(fabs(BTB_1[i][m]<BTB_1[i+1][m])) line_flag=i+1;
else ;
}
if(line_flag!=m) //第K个主元不在第K行时,交换两行元素 {
for(i=m;i<=k;i++)
{
temp=BTB_1[m][i];
BTB_1[m][i]=BTB_1[line_flag][i];
BTB_1[line_flag][i]=temp;
}
temp=BTU[m][l];
BTU[m][l]=BTU[line_flag][l];
BTU[line_flag][l]=temp;
}
/*消元*/
for(i=m+1;i<=k;i++)
{
m_ik=BTB_1[i][m]/BTB_1[m][m];
for(j=m;j<=k;j++) { BTB_1[i][j]=BTB_1[i][j]-m_ik*BTB_1[m][j]; } BTU[i][l]=BTU[i][l]-m_ik*BTU[m][l];
}
}//end 消元
/*回代过程*/
A[k][l]=BTU[k][l]/BTB_1[k][k];
for(m=k-1;m>=0;m--)
{
temp=0;
for(i=m+1;i<=k;i++) { temp+=A[i][l]*BTB_1[m][i]; }
A[m][l]=(BTU[m][l]-temp)/BTB_1[m][m];
}//end 回代
}//end 求矩阵A
}
/*********************************************************************/
/* 函数名:Calculate_D */ /*********************************************************************/ /* 功 能:根据公式 ((GT)G)D=GT,通过解线性方程组得到矩阵D */ /*********************************************************************/ void Calculate_D(double D[K][21],double z[11][21],double y[11],int k)
{
int i,j,m,l,line_flag;
double G[21][K],GT[K][21],GTG[K][K]; //G和GT的阶数分别为11xk和kx11 double GTG_1[K][K],temp; //G的阶数为kx21
double m_ik;
/* 计算矩阵G */
for(i=0;i<=20;i++)
{
for(j=0;j<=k;j++)
{
G[i][j]=pow(y[i],j);
GT[j][i]=G[i][j];
}
}//end G
/* 计算矩阵GT和G相乘,并将结果存在矩阵GTG中 */
for(i=0;i<=k;i++)
{
for(j=0;j<=k;j++)
{
temp=0;
for(m=0;m<=20;m++)
{ temp+=GT[i][m]*G[m][j]; }
GTG[i][j]=temp;
}
}//end GTG
/* 列主元素Gauss消元法解矩阵D */
for(l=0;l<=20;l++)
{
/*复制矩阵GTG*/
for(i=0;i<=k;i++)
{
for(j=0;j<=k;j++)
{ GTG_1[i][j]=GTG[i][j]; }
}
/*Gauss消元法*/
for(m=0;m<=k-1;m++)
{
/*选行号*/
line_flag=m;
for(i=m;i<=k-1;i++)
{
if(fabs(GTG_1[i][m]<GTG_1[i+1][m])) line_flag=i+1;
else ;
}
if(line_flag!=m) //第K个主元不在第K行时,交换两行元素
{
for(i=m;i<=k;i++)
{
temp=GTG_1[m][i];
GTG_1[m][i]=GTG_1[line_flag][i];
GTG_1[line_flag][i]=temp;
}
temp=GT[m][l];
GT[m][l]=GT[line_flag][l];
GT[line_flag][l]=temp;
}
/*消元*/
for(i=m+1;i<=k;i++)
{
m_ik=GTG_1[i][m]/GTG_1[m][m];
for(j=m;j<=k;j++) { GTG_1[i][j]=GTG_1[i][j]-m_ik*GTG_1[m][j]; } GT[i][l]=GT[i][l]-m_ik*GT[m][l];
}
}//end 消元
/*回代过程*/
D[k][l]=GT[k][l]/GTG_1[k][k];
for(m=k-1;m>=0;m--)
{
temp=0;
for(i=m+1;i<=k;i++) { temp+=D[i][l]*GTG_1[m][i]; }
D[m][l]=(GT[m][l]-temp)/GTG_1[m][m];
}//end 回代
}//end 求矩阵D
}
/* 观察p(x,y)逼近f(x,y)效果 */
void Test_observe(int k,double C[K][K])
{
double testx[11],testy[21],t[11][21],u[11][21];
double xstar[4],p[11][21],z[11][21];
int i,j,i1,j1;
for(i=0;i<=testX-1;i++) //通过解非线性方程组,建立(x,y)与(t,u)的对应关系 {
for(j=0;j<=testY-1;j++)
{
testx[i]=0.1*(i+1);
testy[j]=0.5+0.2*(j+1);
xstar[0]=1;
xstar[1]=1;
xstar[2]=1;
xstar[3]=1; //选取迭代初始值x(0)
Newton_Nonlinear(xstar,testx[i],testy[j]);
t[i][j]=xstar[0];
u[i][j]=xstar[1];
}
}
Interplate(t,u,z,8,5); //分片二次插值,求与(xi,yi)对应的f(xi,yi)的值
for(i=0;i<=testX-1;i++) //求与(xi,yi)对应的p(xi,yi)的值,并与f(xi,yi)比较输出 {
for(j=0;j<=testY-1;j++)
{
p[i][j]=0;
for(i1=0;i1<=k;i1++) //求 p(xi,yj) 的值
{
for(j1=0;j1<=k;j1++)
{ p[i][j]+=C[i1][j1]*pow(testx[i],i1)*pow(testy[j],j1); } }
printf("x[%d]=%.6f y[%d]=%.6f\n",i+1,testx[i],j+1,testy[j]); printf("\t\tf(x[%d],y[%d])=%.12e\n",i+1,j+1,z[i][j]);
printf("\t\ttp(x[%d],y[%d])=%.12e\n",i+1,j+1,p[i][j]);
printf("\t\tσ=%.12e\n",z[i][j]-p[i][j]);
}
}
}
3、程序运行结果:
1、插值得到的数表为:
x[0]=0.000000 y[0]=0.500000 z[0][0]=4.465040184796e-001
x[0]=0.000000 y[1]=0.550000 z[0][1]=3.246832629271e-001
x[0]=0.000000 y[2]=0.600000 z[0][2]=2.101596866821e-001
x[0]=0.000000 y[3]=0.650000 z[0][3]=1.030436083154e-001
x[0]=0.000000 y[4]=0.700000 z[0][4]=3.401895561932e-003
x[0]=0.000000 y[5]=0.750000 z[0][5]=-8.873581363889e-002
x[0]=0.000000 y[6]=0.800000 z[0][6]=-1.733716327506e-001
x[0]=0.000000 y[7]=0.850000 z[0][7]=-2.505346114672e-001
x[0]=0.000000 y[8]=0.900000 z[0][8]=-3.202765063879e-001
x[0]=0.000000 y[9]=0.950000 z[0][9]=-3.826680661098e-001 x[0]=0.000000
x[0]=0.000000
x[0]=0.000000
x[0]=0.000000 y[10]=1.000000 z[0][10]=-4.377957667384e-001 y[11]=1.050000 z[0][11]=-4.857589414438e-001 y[12]=1.100000 z[0][12]=-5.266672548843e-001 y[13]=1.150000 z[0][13]=-5.606384797965e-001 x[0]=0.000000 y[14]=1.200000 z[0][14]=-5.877965387680e-001 x[0]=0.000000 y[15]=1.250000 z[0][15]=-6.082697790900e-001 x[0]=0.000000 y[16]=1.300000 z[0][16]=-6.221894528764e-001 x[0]=0.000000 y[17]=1.350000 z[0][17]=-6.296883781856e-001 x[0]=0.000000
x[0]=0.000000
x[0]=0.000000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[1]=0.080000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000 y[18]=1.400000 z[0][18]=-6.308997600028e-001 y[19]=1.450000 z[0][19]=-6.259561525454e-001 y[20]=1.500000 z[0][20]=-6.149885466094e-001 y[0]=0.500000 z[1][0]=6.380152265096e-001 y[1]=0.550000 z[1][1]=5.066117551454e-001 y[2]=0.600000 z[1][2]=3.821763692761e-001 y[3]=0.650000 z[1][3]=2.648634911520e-001 y[4]=0.700000 z[1][4]=1.547802002825e-001 y[5]=0.750000 z[1][5]=5.199268348826e-002 y[6]=0.800000 z[1][6]=-4.346804020719e-002 y[7]=0.850000 z[1][7]=-1.316010567898e-001 y[8]=0.900000 z[1][8]=-2.124310883092e-001 y[9]=0.950000 z[1][9]=-2.860045510581e-001 y[10]=1.000000 z[1][10]=-3.523860789794e-001 y[11]=1.050000 z[1][11]=-4.116554565222e-001 y[12]=1.100000 z[1][12]=-4.639049115193e-001 y[13]=1.150000 z[1][13]=-5.092367247006e-001 y[14]=1.200000 z[1][14]=-5.477611179629e-001 y[15]=1.250000 z[1][15]=-5.795943883393e-001 y[16]=1.300000 z[1][16]=-6.048572588895e-001 y[17]=1.350000 z[1][17]=-6.236734213318e-001 y[18]=1.400000 z[1][18]=-6.361682484133e-001 y[19]=1.450000 z[1][19]=-6.424676566901e-001 y[20]=1.500000 z[1][20]=-6.426971026996e-001 y[0]=0.500000 z[2][0]=8.400813957643e-001 y[1]=0.550000 z[2][1]=6.997641656711e-001 y[2]=0.600000 z[2][2]=5.660614423488e-001 y[3]=0.650000 z[2][3]=4.391716081175e-001 y[4]=0.700000 z[2][4]=3.192421380407e-001 y[5]=0.750000 z[2][5]=2.063761923873e-001 y[6]=0.800000 z[2][6]=1.006385238914e-001 y[7]=0.850000 z[2][7]=2.060740065455e-003 y[8]=0.900000 z[2][8]=-8.935402476753e-002 y[9]=0.950000 z[2][9]=-1.736269688649e-001 y[10]=1.000000 z[2][10]=-2.507999561599e-001
x[2]=0.160000 y[11]=1.050000 z[2][11]=-3.209322694454e-001 x[2]=0.160000
x[2]=0.160000
x[2]=0.160000
x[2]=0.160000 y[12]=1.100000 y[13]=1.150000 y[14]=1.200000 y[15]=1.250000 z[2][12]=-3.840977350050e-001 z[2][13]=-4.403821754175e-001 z[2][14]=-4.898811523127e-001 z[2][15]=-5.326979655344e-001 x[2]=0.160000 y[16]=1.300000 z[2][16]=-5.689418792922e-001 x[2]=0.160000 y[17]=1.350000 z[2][17]=-5.987265495151e-001 x[2]=0.160000 y[18]=1.400000 z[2][18]=-6.221686297503e-001 x[2]=0.160000 y[19]=1.450000 z[2][19]=-6.393865356972e-001 x[2]=0.160000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[3]=0.240000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000 y[20]=1.500000 z[2][20]=-6.504993507879e-001 y[0]=0.500000 z[3][0]=1.051515091798e+000 y[1]=0.550000 z[3][1]=9.029274308302e-001 y[2]=0.600000 z[3][2]=7.605802668593e-001 y[3]=0.650000 z[3][3]=6.247151981455e-001 y[4]=0.700000 z[3][4]=4.955197560008e-001 y[5]=0.750000 z[3][5]=3.731340427745e-001 y[6]=0.800000 z[3][6]=2.576567488723e-001 y[7]=0.850000 z[3][7]=1.491505594102e-001 y[8]=0.900000 z[3][8]=4.764698677273e-002 y[9]=0.950000 z[3][9]=-4.684932320151e-002 y[10]=1.000000 z[3][10]=-1.343567603849e-001 y[11]=1.050000 z[3][11]=-2.149133449278e-001 y[12]=1.100000 z[3][12]=-2.885737006351e-001 y[13]=1.150000 z[3][13]=-3.554063647875e-001 y[14]=1.200000 z[3][14]=-4.154913964886e-001 y[15]=1.250000 z[3][15]=-4.689182499695e-001 y[16]=1.300000 z[3][16]=-5.157838831254e-001 y[17]=1.350000 z[3][17]=-5.561910752001e-001 y[18]=1.400000 z[3][18]=-5.902469305629e-001 y[19]=1.450000 z[3][19]=-6.180615482413e-001 y[20]=1.500000 z[3][20]=-6.397468392579e-001 y[0]=0.500000 z[4][0]=1.271246751481e+000 y[1]=0.550000 z[4][1]=1.115002018146e+000 y[2]=0.600000 z[4][2]=9.646077272153e-001 y[3]=0.650000 z[4][3]=8.203473694749e-001 y[4]=0.700000 z[4][4]=6.824476781794e-001 y[5]=0.750000 z[4][5]=5.510852085972e-001 y[6]=0.800000 z[4][6]=4.263923859016e-001 y[7]=0.850000 z[4][7]=3.084629956332e-001 y[8]=0.900000 z[4][8]=1.973571296913e-001 y[9]=0.950000 z[4][9]=9.310562085938e-002 y[10]=1.000000 z[4][10]=-4.285992236877e-003 y[11]=1.050000 z[4][11]=-9.483392529703e-002 y[12]=1.100000 z[4][12]=-1.785729903641e-001
x[4]=0.320000 y[13]=1.150000 z[4][13]=-2.555537790549e-001 x[4]=0.320000
x[4]=0.320000
x[4]=0.320000
x[4]=0.320000 y[14]=1.200000 y[15]=1.250000 y[16]=1.300000 y[17]=1.350000 z[4][14]=-3.258401501576e-001 z[4][15]=-3.895069883635e-001 z[4][16]=-4.466382045995e-001 z[4][17]=-4.973249517677e-001 x[4]=0.320000 y[18]=1.400000 z[4][18]=-5.416640326994e-001 x[4]=0.320000 y[19]=1.450000 z[4][19]=-5.797564797952e-001 x[4]=0.320000 y[20]=1.500000 z[4][20]=-6.117062881477e-001 x[5]=0.400000 y[0]=0.500000 z[5][0]=1.498321052481e+000 x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[5]=0.400000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000 y[1]=0.550000 z[5][1]=1.334998632066e+000 y[2]=0.600000 z[5][2]=1.177125123739e+000 y[3]=0.650000 z[5][3]=1.025024055020e+000 y[4]=0.700000 z[5][4]=8.789600231743e-001 y[5]=0.750000 z[5][5]=7.391451087035e-001 y[6]=0.800000 z[5][6]=6.057448714869e-001 y[7]=0.850000 z[5][7]=4.788838610665e-001 y[8]=0.900000 z[5][8]=3.586506258813e-001 y[9]=0.950000 z[5][9]=2.451022361964e-001 y[10]=1.000000 z[5][10]=1.382683509273e-001 y[11]=1.050000 z[5][11]=3.815486540440e-002 y[12]=1.100000 z[5][12]=-5.525282116820e-002 y[13]=1.150000 z[5][13]=-1.419868808140e-001 y[14]=1.200000 z[5][14]=-2.220944390964e-001 y[15]=1.250000 z[5][15]=-2.956352324604e-001 y[16]=1.300000 z[5][16]=-3.626795115028e-001 y[17]=1.350000 z[5][17]=-4.233061642240e-001 y[18]=1.400000 z[5][18]=-4.776010361325e-001 y[19]=1.450000 z[5][19]=-5.256554266673e-001 y[20]=1.500000 z[5][20]=-5.675647436554e-001 y[0]=0.500000 z[6][0]=1.731892740382e+000 y[1]=0.550000 z[6][1]=1.562034577208e+000 y[2]=0.600000 z[6][2]=1.397216918208e+000 y[3]=0.650000 z[6][3]=1.237801006733e+000 y[4]=0.700000 z[6][4]=1.084087532674e+000 y[5]=0.750000 z[6][5]=9.363227723149e-001 y[6]=0.800000 z[6][6]=7.947044490537e-001 y[7]=0.850000 z[6][7]=6.593871980282e-001 y[8]=0.900000 z[6][8]=5.304875868396e-001 y[9]=0.950000 z[6][9]=4.080886854542e-001 y[10]=1.000000 z[6][10]=2.922442012291e-001 y[11]=1.050000 z[6][11]=1.829822068523e-001 y[12]=1.100000 z[6][12]=8.030849403456e-002 y[13]=1.150000 z[6][13]=-1.579041305165e-002 y[14]=1.200000 z[6][14]=-1.053445516210e-001
x[6]=0.480000 y[15]=1.250000 z[6][15]=-1.883980906096e-001 x[6]=0.480000
x[6]=0.480000
x[6]=0.480000
x[6]=0.480000 y[16]=1.300000 y[17]=1.350000 y[18]=1.400000 y[19]=1.450000 z[6][16]=-2.650071493189e-001 z[6][17]=-3.352378389041e-001 z[6][18]=-3.991645038869e-001 z[6][19]=-4.568681433020e-001 x[6]=0.480000 y[20]=1.500000 z[6][20]=-5.084349932790e-001 x[7]=0.560000 y[0]=0.500000 z[7][0]=1.971221786400e+000 x[7]=0.560000 y[1]=0.550000 z[7][1]=1.795329599501e+000 x[7]=0.560000 y[2]=0.600000 z[7][2]=1.624067113227e+000 x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[7]=0.560000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[8]=0.640000 y[3]=0.650000 z[7][3]=1.457830582702e+000 y[4]=0.700000 z[7][4]=1.296954649752e+000 y[5]=0.750000 z[7][5]=1.141718105447e+000 y[6]=0.800000 z[7][6]=9.923495333243e-001 y[7]=0.850000 z[7][7]=8.490326633294e-001 y[8]=0.900000 z[7][8]=7.119113522639e-001 y[9]=0.950000 z[7][9]=5.810941589193e-001 y[10]=1.000000 z[7][10]=4.566585132333e-001 y[11]=1.050000 z[7][11]=3.386544961389e-001 y[12]=1.100000 z[7][12]=2.271082557663e-001 y[13]=1.150000 z[7][13]=1.220250891929e-001 y[14]=1.200000 z[7][14]=2.339221963670e-002 y[15]=1.250000 z[7][15]=-6.881870197104e-002 y[16]=1.300000 z[7][16]=-1.546493442129e-001 y[17]=1.350000 z[7][17]=-2.341526664589e-001 y[18]=1.400000 z[7][18]=-3.073910919139e-001 y[19]=1.450000 z[7][19]=-3.744348623493e-001 y[20]=1.500000 z[7][20]=-4.353605565380e-001 y[0]=0.500000 z[8][0]=2.215667863688e+000 y[1]=0.550000 z[8][1]=2.034201133607e+000 y[2]=0.600000 z[8][2]=1.856955143619e+000 y[3]=0.650000 z[8][3]=1.684358164159e+000 y[4]=0.700000 z[8][4]=1.516776352397e+000 y[5]=0.750000 z[8][5]=1.354519041151e+000 y[6]=0.800000 z[8][6]=1.197844086673e+000 y[7]=0.850000 z[8][7]=1.046963049414e+000 y[8]=0.900000 z[8][8]=9.020460838022e-001 y[9]=0.950000 z[8][9]=7.632264776621e-001 y[10]=1.000000 z[8][10]=6.306048219543e-001 y[11]=1.050000 z[8][11]=5.042528145942e-001 y[12]=1.100000 z[8][12]=3.842167155456e-001 y[13]=1.150000 z[8][13]=2.705204766409e-001 y[14]=1.200000 z[8][14]=1.631685723996e-001 y[15]=1.250000 z[8][15]=6.214855811672e-002 y[16]=1.300000 z[8][16]=-3.256661939710e-002
x[8]=0.640000 y[17]=1.350000 z[8][17]=-1.210165348453e-001 x[8]=0.640000
x[8]=0.640000
x[8]=0.640000
x[9]=0.720000 y[18]=1.400000 z[8][18]=-2.032513996249e-001 y[19]=1.450000 z[8][19]=-2.793303595593e-001 y[20]=1.500000 z[8][20]=-3.493199575417e-001 y[0]=0.500000 z[9][0]=2.464684222660e+000 x[9]=0.720000 y[1]=0.550000 z[9][1]=2.278058979399e+000 x[9]=0.720000 y[2]=0.600000 z[9][2]=2.095251250840e+000 x[9]=0.720000 y[3]=0.650000 z[9][3]=1.916718127997e+000 x[9]=0.720000 y[4]=0.700000 z[9][4]=1.742854628775e+000 x[9]=0.720000 y[5]=0.750000 z[9][5]=1.573998427334e+000 x[9]=0.720000 y[6]=0.800000 z[9][6]=1.410434835231e+000 x[9]=0.720000 y[7]=0.850000 z[9][7]=1.252401750607e+000 x[9]=0.720000 y[8]=0.900000 z[9][8]=1.100094409623e+000 x[9]=0.720000 y[9]=0.950000 z[9][9]=9.536698512611e-001 x[9]=0.720000 y[10]=1.000000 z[9][10]=8.132510552468e-001 x[9]=0.720000 y[11]=1.050000 z[9][11]=6.789307429657e-001 x[9]=0.720000 y[12]=1.100000 z[9][12]=5.507748485027e-001 x[9]=0.720000 y[13]=1.150000 z[9][13]=4.288256769704e-001 x[9]=0.720000 y[14]=1.200000 z[9][14]=3.131047717398e-001 x[9]=0.720000 y[15]=1.250000 z[9][15]=2.036155140324e-001 x[9]=0.720000 y[16]=1.300000 z[9][16]=1.003454782395e-001 x[9]=0.720000
x[9]=0.720000
x[9]=0.720000
x[9]=0.720000 y[17]=1.350000 y[18]=1.400000 y[19]=1.450000 y[20]=1.500000 z[9][17]=3.268565183309e-003 z[9][18]=-8.765306591441e-002 z[9][19]=-1.724672478215e-001 z[9][20]=-2.512302207523e-001 x[10]=0.800000 y[0]=0.500000 z[10][0]=2.717811109469e+000 x[10]=0.800000 y[1]=0.550000 z[10][1]=2.526399501256e+000 x[10]=0.800000 y[2]=0.600000 z[10][2]=2.338411386860e+000 x[10]=0.800000 y[3]=0.650000 z[10][3]=2.154329377286e+000 x[10]=0.800000 y[4]=0.700000 z[10][4]=1.974574556652e+000 x[10]=0.800000 y[5]=0.750000 z[10][5]=1.799510579092e+000 x[10]=0.800000 y[6]=0.800000 z[10][6]=1.629448220553e+000 x[10]=0.800000 y[7]=0.850000 z[10][7]=1.464650043750e+000 x[10]=0.800000 y[8]=0.900000 z[10][8]=1.305334967649e+000 x[10]=0.800000 y[9]=0.950000 z[10][9]=1.151682621307e+000 x[10]=0.800000 y[10]=1.000000 z[10][10]=1.003837419905e+000 x[10]=0.800000 y[11]=1.050000 z[10][11]=8.619123372267e-001 x[10]=0.800000 y[12]=1.100000 z[10][12]=7.259923711106e-001 x[10]=0.800000 y[13]=1.150000 z[10][13]=5.961377115201e-001 x[10]=0.800000 y[14]=1.200000 z[10][14]=4.723866279132e-001 x[10]=0.800000 y[15]=1.250000 z[10][15]=3.547580958959e-001 x[10]=0.800000 y[16]=1.300000 z[10][16]=2.432541841760e-001 x[10]=0.800000 y[17]=1.350000 z[10][17]=1.378622225234e-001 x[10]=0.800000 y[18]=1.400000 z[10][18]=3.855677032275e-002
x[10]=0.800000 y[19]=1.450000 z[10][19]=-5.469859593446e-002 x[10]=0.800000 y[20]=1.500000 z[10][20]=-1.419496597088e-001
2、选择过程中的k和σ值:
k=0 σ=1.442880771836e+002
k=1 σ=3.220908973635e+000
k=2 σ=4.659960033092e-003
k=3 σ=1.721175379303e-004
k=4 σ=3.309534303718e-006
k=5 σ=2.541377733529e-008
曲面拟合达到精度要求,此时:
k=5 σ=2.541377733529e-008
系数矩阵C为:
C[0][0]=2.021230520739e+000 C[0][1]=-3.668426807913e+000 C[0][2]=7.092486450232e-001 C[0][3]=8.486053760593e-001 C[0][4]=-4.158974224093e-001 C[0][5]=6.743199236703e-002
C[1][0]=3.191909009197e+000 C[1][1]=-7.411103769997e-001 C[1][2]=-2.697124604390e+000 C[1][3]=1.631183409018e+000 C[1][4]=-4.847199783140e-001 C[1][5]=6.061428268036e-002
C[2][0]=2.568897470840e-001 C[2][1]=1.579919023246e+000 C[2][2]=-4.634088700351e-001 C[2][3]=-8.134366640968e-002 C[2][4]=1.020938929745e-001 C[2][5]=-2.101516622625e-002
C[3][0]=-2.692600955912e-001 C[3][1]=-7.302489487364e-001 C[3][2]=1.076147724979e+000 C[3][3]=-8.070154379184e-001 C[3][4]=3.028740659549e-001 C[3][5]=-4.597287314470e-002 C[4][0]=2.174593993333e-001 C[4][1]=-1.783704803948e-001 C[4][2]=-7.240970888861e-002 C[4][3]=2.433343508148e-001 C[4][4]=-1.413366117765e-001 C[4][5]=2.651059435651e-002
C[5][0]=-5.590308802179e-002 C[5][1]=1.431982915469e-001 C[5][2]=-1.362684114760e-001 C[5][3]=4.071767356087e-002 C[5][4]=3.775973422049e-003 C[5][5]=-2.667878654490e-003
3、观察插值的逼近效果:
x[1]= 0.100000 y[1]= 0.700000
f(x[1],y[1])= 1.947204079146e-001
p(x[1],y[1])= 1.947303575299e-001
σ= -9.949615280003e-006
x[1]= 0.100000 y[2]= 0.900000
f(x[1],y[2])= -1.830370791892e-001
p(x[1],y[2])= -1.830418387517e-001
σ= 4.759562534401e-006 x[1]= 0.100000 y[3]= 1.100000
f(x[1],y[3])= -4.454976469153e-001 p(x[1],y[3])= -4.455000418097e-001 σ= 2.394894326463e-006 x[1]= 0.100000 y[4]= 1.300000
f(x[1],y[4])= -5.975667076413e-001 p(x[1],y[4])= -5.975588569367e-001 σ= -7.850704676904e-006 x[1]= 0.100000
x[2]= 0.200000
x[2]= 0.200000
x[2]= 0.200000
x[2]= 0.200000
x[2]= 0.200000
x[3]= 0.300000
x[3]= 0.300000
x[3]= 0.300000
y[5]= 1.500000 f(x[1],y[5])= -6.464595939011e-001 p(x[1],y[5])= -6.464461108207e-001 σ= -1.348308033633e-005 y[1]= 0.700000 f(x[2],y[1])= 4.059791892881e-001 p(x[2],y[1])= 4.059895398119e-001 σ= -1.035052378684e-005 y[2]= 0.900000 f(x[2],y[2])= -2.251595837522e-002 p(x[2],y[2])= -2.252111611538e-002 σ= 5.157740163155e-006 y[3]= 1.100000 f(x[2],y[3])= -3.382208160399e-001 p(x[2],y[3])= -3.382240225553e-001 σ= 3.206515407861e-006 y[4]= 1.300000 f(x[2],y[4])= -5.444378315222e-001 p(x[2],y[4])= -5.444304509070e-001 σ= -7.380615210328e-006 y[5]= 1.500000 f(x[2],y[5])= -6.473613385680e-001 p(x[2],y[5])= -6.473480108613e-001 σ= -1.332770667384e-005 y[1]= 0.700000 f(x[3],y[1])= 6.347771951508e-001 p(x[3],y[1])= 6.347874529256e-001 σ= -1.025777475094e-005 y[2]= 0.900000 f(x[3],y[2])= 1.588011688388e-001 p(x[3],y[2])= 1.587962960019e-001 σ= 4.872836844139e-006 y[3]= 1.100000 f(x[3],y[3])= -2.073656941711e-001 p(x[3],y[3])= -2.073685803725e-001
σ= 2.886201454028e-006 x[3]= 0.300000 y[4]= 1.300000
f(x[3],y[4])= -4.653579068978e-001 p(x[3],y[4])= -4.653499232936e-001 σ= -7.983604177864e-006 x[3]= 0.300000 y[5]= 1.500000
f(x[3],y[5])= -6.202709530750e-001 p(x[3],y[5])= -6.202571389449e-001 σ= -1.381413002710e-005 x[4]= 0.400000
x[4]= 0.400000
x[4]= 0.400000
x[4]= 0.400000
x[4]= 0.400000
x[5]= 0.500000
x[5]= 0.500000
x[5]= 0.500000
x[5]= 0.500000
y[1]= 0.700000 f(x[4],y[1])= 8.789600231743e-001 p(x[4],y[1])= 8.789698653379e-001 σ= -9.842163594675e-006 y[2]= 0.900000 f(x[4],y[2])= 3.586506258813e-001 p(x[4],y[2])= 3.586460433466e-001 σ= 4.582534711972e-006 y[3]= 1.100000 f(x[4],y[3])= -5.525282116820e-002 p(x[4],y[3])= -5.525543686432e-002 σ= 2.615696122192e-006 y[4]= 1.300000 f(x[4],y[4])= -3.626795115028e-001 p(x[4],y[4])= -3.626710629737e-001 σ= -8.448529084160e-006 y[5]= 1.500000 f(x[4],y[5])= -5.675647436554e-001 p(x[4],y[5])= -5.675505828034e-001 σ= -1.416085202266e-005 y[1]= 0.700000 f(x[5],y[1])= 1.136610910156e+000 p(x[5],y[1])= 1.136620353282e+000 σ= -9.443126190112e-006 y[2]= 0.900000 f(x[5],y[2])= 5.749803409472e-001 p(x[5],y[2])= 5.749758427275e-001 σ= 4.498219742688e-006 y[3]= 1.100000 f(x[5],y[3])= 1.159923767916e-001 p(x[5],y[3])= 1.159893215066e-001 σ= 3.055285016512e-006 y[4]= 1.300000 f(x[5],y[4])= -2.385683040123e-001 p(x[5],y[4])= -2.385604192417e-001
σ= -7.884770622274e-006 x[5]= 0.500000 y[5]= 1.500000
f(x[5],y[5])= -4.914343936567e-001 p(x[5],y[5])= -4.914209005355e-001 σ= -1.349312123233e-005 x[6]= 0.600000 y[1]= 0.700000
f(x[6],y[1])= 1.406041798901e+000 p(x[6],y[1])= 1.406050687049e+000 σ= -8.888147533748e-006 x[6]= 0.600000
x[6]= 0.600000
x[6]= 0.600000
x[6]= 0.600000
x[7]= 0.700000
x[7]= 0.700000
x[7]= 0.700000
x[7]= 0.700000
x[7]= 0.700000
y[2]= 0.900000 f(x[6],y[2])= 8.059414940630e-001 p(x[6],y[2])= 8.059373018631e-001 σ= 4.192199902442e-006 y[3]= 1.100000 f(x[6],y[3])= 3.044292210447e-001 p(x[6],y[3])= 3.044258321002e-001 σ= 3.388944505966e-006 y[4]= 1.300000 f(x[6],y[4])= -9.501613009975e-002 p(x[6],y[4])= -9.500894575031e-002 σ= -7.184349440192e-006 y[5]= 1.500000 f(x[6],y[5])= -3.939023077466e-001 p(x[6],y[5])= -3.938898375269e-001 σ= -1.247021974804e-005 y[1]= 0.700000 f(x[7],y[1])= 1.685783515308e+000 p(x[7],y[1])= 1.685791217282e+000 σ= -7.701974503505e-006 y[2]= 0.900000 f(x[7],y[2])= 1.049881153064e+000 p(x[7],y[2])= 1.049877739228e+000 σ= 3.413835998556e-006 y[3]= 1.100000 f(x[7],y[3])= 5.082937839393e-001 p(x[7],y[3])= 5.082910447826e-001 σ= 2.739156630405e-006 y[4]= 1.300000 f(x[7],y[4])= 6.614879670555e-002 p(x[7],y[4])= 6.615635554722e-002 σ= -7.558841663716e-006 y[5]= 1.500000 f(x[7],y[5])= -2.768343417776e-001 p(x[7],y[5])= -2.768220433696e-001
σ= -1.229840796335e-005 x[8]= 0.800000 y[1]= 0.700000
f(x[8],y[1])= 1.974574556652e+000 p(x[8],y[1])= 1.974581261269e+000 σ= -6.704617012909e-006 x[8]= 0.800000 y[2]= 0.900000
f(x[8],y[2])= 1.305334967649e+000 p(x[8],y[2])= 1.305332003899e+000 σ= 2.963750110441e-006 x[8]= 0.800000
x[8]= 0.800000
x[8]= 0.800000
y[3]= 1.100000 f(x[8],y[3])= 7.259923711106e-001 p(x[8],y[3])= 7.259893106086e-001 σ= 3.060501982732e-006 y[4]= 1.300000 f(x[8],y[4])= 2.432541841760e-001 p(x[8],y[4])= 2.432607904561e-001 σ= -6.606280120669e-006 y[5]= 1.500000 f(x[8],y[5])= -1.419496597088e-001 p(x[8],y[5])= -1.419387887818e-001 σ= -1.087092704488e-005