1 / 19
文档名称:

数值分析大作业三.doc

格式:doc   大小:533KB   页数:19页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数值分析大作业三.doc

上传人:s1188831 2019/11/18 文件大小:533 KB

下载得到文件列表

数值分析大作业三.doc

相关文档

文档介绍

文档介绍:《数值分析B》(简单迭代法不收敛,对原题中给出的,,(的11*21组分别求出原题中方程组的一组解,于是得到一组和对应的。,使用分片二次代数插值法对原题中关于的数表进行插值得到。于是产生了z=f(x,y的11*21个数值解。=1开始逐渐增大k的值,并使用最小二乘法曲面拟合法对z=f(x,y进行拟合,得到每次的。当时结束计算,输出拟合结果。,以观察逼近的效果。其中。源程序代码#include#include#defineN4doublee=1e-12;doublegauss(doublea[N][N+1],doublex[N]//gauss求线性方程组{inti,j,k;doublep=0;for(k=0;k{if(a[k][k]==0{printf("a[%d][%d]=0\n",k,k;return1;}for(i=k+1;i{p=a[i][k]/a[k][k];for(j=k;ja[i][j]=a[i][j]-p*a[k][j];}}if(a[N-1][N-1]==0{printf("a[%d][%d]=0\n",N-1,N-1;return1;}x[N-1]=a[N-1][N]/a[N-1][N-1];for(i=N-2;i>=0;i--{p=0;for(j=N-1;j>i;j--{p=p+a[i][j]*x[j];}x[i]=(a[i][N]-p/a[i][i];}return0;}voidA_ni(doubleA[10][10],intn//求逆矩阵{doublea[10][10],b[10][20],c[10][10],t;inti,j,m;for(i=0;ifor(j=0;jb[i][j]=A[i][j];for(i=0;ifor(j=n;j<2*n;j++b[i][j]=0;for(i=0;ib[i][n+i]=1;for(m=0;m{t=b[m][m];i=m;while(b[m][m]==0{b[m][m]=b[i+1][m];i++;}if(i>m{b[i][m]=t;for(j=0;j{t=b[m][j];b[m][j]=b[i][j];b[i][j]=t;}for(j=m+1;j<2*n;j++{t=b[m][j];b[m][j]=b[i][j];b[i][j]=t;}}for(i=m+1;ifor(j=2*n-1;j>=m;j--b[i][j]-=b[i][m]*b[m][j]/b[m][m];for(j=2*n-1;j>=m;j--b[m][j]/=b[m][m];}m=n-1;while(m>0{for(i=0;ifor(j=2*n-1;j>=m;j--b[i][j]-=b[i][m]*b[m][j];m--;}for(i=0;ifor(j=0;jc[i][j]=b[i][n+j];for(i=0;i{for(j=0;j{A[i][j]=c[i][j];}}}voidNewton(doublex,doubley,doubletu[4]//Newton迭代法解非线性方程组{inti,j;doubleA[4][5],result[4]={1,2,1,2},result1[4];doublenum1,num2;while(1{for(i=0;i<4;i++result1[i]=result[i];A[0][0]=-*sin(result[0];A[0][1]=1;A[0][2]=1;A[0][3]=1;A[1][0]=1;A[1][1]=*cos(result[1];A[1][2]=1;A[1][3]=1;A[2][0]=;A[2][1]=1;A[2][2]=-1*sin(result[2];A[2][3]=1;A[3][0]=1;A[3][1]=;A[3][2]=1;A[3][3]=cos(result[3];A[0][4]=-1*(*cos(result[0]+result[1]+result[2]+result[3]-x-;A[1][4]=-1*(result[0]+*sin(result[1]+result[2]+result[3]-y-;A[2][4]=-1*(*result[0]+result[1]+cos(result[2]+result[3]-x-;A[3][4]=-1*(result[0]+*result[1]+result[2]+sin(result[3]-y-;gauss(A,result;num1=num2=0;for(i=0;i<4;i++{num1+=result[i]*result[i];num2+=re