资源描述:
《北航数值分析报告大作业三》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用标准数值分析大作业三一、算法设计方案:1、使用牛顿迭代法(简单迭代法不收敛),对原题中给出的,,()的11*21组分别求出原题中方程组的一组解,于是得到一组和对应的。2、对于已求出的,使用分片二次代数插值法对原题中关于的数表进行插值得到。于是产生了z=f(x,y)的11*21个数值解。3、从k=1开始逐渐增大k的值,并使用最小二乘法曲面拟合法对z=f(x,y)进行拟合,得到每次的。当时结束计算,输出拟合结果。4、计算的值并输出结果,以观察逼近的效果。其中。二、源程序:#include#include#defineN6//矩阵的阶;#defineM4
2、//方程组未知数个数;#defineEPSL1.0e-12//迭代的精度水平;#defineK10//最小二乘法拟合时的次数上限;#defineSIGSUM1.0e-7#defineL500//迭代最大次数;#defineX11#defineY21doublemat_u[N]={0,0.4,0.8,1.2,1.6,2.0},mat_t[N]={0,0.2,0.4,0.6,0.8,1.0},mat_ztu[N][N]={{-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.
3、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},},mat_val_z[X][Y]={0},文档大全实用标准init_tuvw[4]={1,2,1,2},mat_crs[K][K]={0};FILE*p;intmain(){inti,j,x,y,kmin,tmp=0;doubletmpval;intgetval_z(double,double,int,int);intleasquare();voidre
4、sult_out(int);p=fopen("Result.txt","w+");fprintf(p,"1、差值得到的数表为:");fclose(p);for(i=0;i5、p+=getval_z(0.1*(i+1),0.5+0.2*(j+1),i,j);if(!tmp){printf("迭代求解z=f(x*,y*)完毕。");for(x=0;x<8;x++){for(y=0;y<5;y++){tmpval=0;for(i=0;i6、d],y*[%d])=%.12le,p(x*[%d],y*[%d])=%.12le",x+1,0.1*(x+1),y+1,0.5+0.2*(y+1),x+1,y+1,mat_val_z[x][y],x+1,y+1,tmpval);fclose(p);文档大全实用标准}}}printf("结果见Result.txt!");getchar();}else{printf("近似表达式未求出,增大K值后重试");getchar();}}//牛顿迭代法求方程的解intgetval_z(doublex,doubley,inti,intj){doublevec_tuvw[M],vec_del
7、ta[M],fdao[M][M],f[M],mo_k,mo_delta_k,shang,t,u;intn=0,k,flag_max,flag_stat;voidsolve(doublefdao[M][M],doublevec_delta[M],doublef[M]);doubleinterpolation(double,double);flag_stat=1;for(k=0;k