北航数值分析报告大作业三.docVIP

  • 12
  • 0
  • 约2.95万字
  • 约 18页
  • 2019-06-10 发布于安徽
  • 举报
实用标准 文档大全 数值分析大作业三 算法设计方案: 1、使用牛顿迭代法(简单迭代法不收敛),对原题中给出的,,()的11*21组分别求出原题中方程组的一组解,于是得到一组和对应的。 2、对于已求出的,使用分片二次代数插值法对原题中关于的数表进行插值得到。于是产生了z=f(x,y)的11*21个数值解。 3、从k=1开始逐渐增大k的值,并使用最小二乘法曲面拟合法对z=f(x,y)进行拟合,得到每次的。当时结束计算,输出拟合结果。 4、计算的值并输出结果,以观察逼近的效果。其中。 二、源程序: #include stdio.h #include math.h #define N 6 //矩阵的阶; #define M 4 //方程组未知数个数; #define EPSL 1.0e-12 //迭代的精度水平; #define K 10 //最小二乘法拟合时的次数上限; #define SIGSUM 1.0e-7 #define L 500 //迭代最大次数; #define X 11 #define Y 21 double mat_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.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; int main() { int i,j,x,y,kmin,tmp=0; double tmpval; int getval_z(double,double,int,int); int leasquare(); void result_out(int); p=fopen(Result.txt,w+); fprintf(p,1、差值得到的数表为:\n); fclose(p); for(i=0;iX;i++) for(j=0;jY;j++) tmp+=getval_z(0.08*i,0.5+0.05*j,i,j); if(!tmp) printf(迭代求解 z=f(x,y) 完毕。\n); else printf(迭代超过最大次数,计算结果可能不准确!\n); if(kmin=leasquare()) { printf(近似表达式已求出!\n); for(i=0;i8;i++) for(j=0;j5;j++) tmp+=getval_z(0.1*(i+1),0.5+0.2*(j+1),i,j); if(!tmp) { printf(迭代求解 z=f(x*,y*) 完毕。\n); for(x=0;x8;x++) { for(y=0;y5;y++) { tmpval=0; for(i=0;ikmin;i++) { for(j=0;jkmin;j++) { tmpval=tmpval+mat_crs[i][j]*pow(0.1*(x+1),i)*pow(0.5+0.2*(y+1),j); } }

文档评论(0)

1亿VIP精品文档

相关文档