计算方法上机实验报告.docx
- 文档编号:5113555
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:29
- 大小:253.68KB
计算方法上机实验报告.docx
《计算方法上机实验报告.docx》由会员分享,可在线阅读,更多相关《计算方法上机实验报告.docx(29页珍藏版)》请在冰豆网上搜索。
计算方法上机实验报告
计算方法上机实验报告
姓名:
班级:
学号:
一、求解线性方程组(直接法或迭代法)
1、
程序代码:
/*liezhuyuanxiaoqufa*/
#include
#include
voidload1();
#definem4
floata[m][m+1];
main()
{
inti,j;
intc,k,r,p,n,n1;
floatx[m],l[m][m],s,d=0;
printf("\npleaseinputzenguangjuzhena[%d][%d]:
",m,m+1);
load1();
getch();
for(i=0;i { for(j=i;j c=(fabs(a[j][i])>fabs(a[i][i]))? j: i; for(n=0;n { s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s; } for(p=0;p printf("%f",a[i][p]); printf("\n"); for(k=i+1;k { l[k][i]=a[k][i]/a[i][i]; for(r=i;r { a[k][r]=a[k][r]-l[k][i]*a[i][r]; } } } x[m-1]=a[m-1][m]/a[m-1][m-1]; printf("x[%d]=%f",m-1,x[m-1]); for(i=m-2;i>=0;i--) { for(j=i+1;j d=d+a[i][j]*x[j]; x[i]=(a[i][m]-d)/a[i][i]; printf("x[%d]=%f",i,x[i]); d=0; } getch(); } voidload1() { inti,j; for(i=0;i for(j=0;j { scanf("%f",&a[i][j]); } } 实验结果: 程序代码: /*liezhuyuanxiaoqufa*/ #include #include voidload1(); #definem6 floata[m][m+1]; main() { inti,j; intc,k,r,p,n,n1; floatx[m],l[m][m],s,d=0; printf("\npleaseinputzenguangjuzhena[%d][%d]: ",m,m+1); load1(); getch(); for(i=0;i { for(j=i;j c=(fabs(a[j][i])>fabs(a[i][i]))? j: i; for(n=0;n { s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s; } for(p=0;p printf("%f",a[i][p]); printf("\n"); for(k=i+1;k { l[k][i]=a[k][i]/a[i][i]; for(r=i;r { a[k][r]=a[k][r]-l[k][i]*a[i][r]; } } } x[m-1]=a[m-1][m]/a[m-1][m-1]; printf("x[%d]=%f",m-1,x[m-1]); for(i=m-2;i>=0;i--) { for(j=i+1;j d=d+a[i][j]*x[j]; x[i]=(a[i][m]-d)/a[i][i]; printf("x[%d]=%f",i,x[i]); d=0; } getch(); } voidload1() { inti,j; for(i=0;i for(j=0;j { scanf("%f",&a[i][j]); } } 实验结果: 程序代码: /*liezhuyuanxiaoqufa*/ #include #include voidload1(); #definem8 floata[m][m+1]; main() { inti,j; intc,k,r,p,n,n1; floatx[m],l[m][m],s,d=0; printf("\npleaseinputzenguangjuzhena[%d][%d]: ",m,m+1); load1(); getch(); for(i=0;i { for(j=i;j c=(fabs(a[j][i])>fabs(a[i][i]))? j: i; for(n=0;n { s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s; } for(p=0;p printf("%f",a[i][p]); printf("\n"); for(k=i+1;k { l[k][i]=a[k][i]/a[i][i]; for(r=i;r { a[k][r]=a[k][r]-l[k][i]*a[i][r]; } } } x[m-1]=a[m-1][m]/a[m-1][m-1]; printf("x[%d]=%f",m-1,x[m-1]); for(i=m-2;i>=0;i--) { for(j=i+1;j d=d+a[i][j]*x[j]; x[i]=(a[i][m]-d)/a[i][i]; printf("x[%d]=%f",i,x[i]); d=0; } getch(); } voidload1() { inti,j; for(i=0;i for(j=0;j { scanf("%f",&a[i][j]); } } 实验结果: 程序代码: /*liezhuyuanxiaoqufa*/ #include #include voidload1(); #definem5 floata[m][m+1]; main() { inti,j; intc,k,r,p,n,n1; floatx[m],l[m][m],s,d=0; printf("\npleaseinputzenguangjuzhena[%d][%d]: ",m,m+1); load1(); getch(); for(i=0;i { for(j=i;j c=(fabs(a[j][i])>fabs(a[i][i]))? j: i; for(n=0;n { s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s; } for(p=0;p printf("%f",a[i][p]); printf("\n"); for(k=i+1;k { l[k][i]=a[k][i]/a[i][i]; for(r=i;r { a[k][r]=a[k][r]-l[k][i]*a[i][r]; } } } x[m-1]=a[m-1][m]/a[m-1][m-1]; printf("x[%d]=%f",m-1,x[m-1]); for(i=m-2;i>=0;i--) { for(j=i+1;j d=d+a[i][j]*x[j]; x[i]=(a[i][m]-d)/a[i][i]; printf("x[%d]=%f",i,x[i]); d=0; } getch(); } voidload1() { inti,j; for(i=0;i for(j=0;j { scanf("%f",&a[i][j]); } } 实验结果: 二、用追赶法求解下列方程组(6位有效数字)。 程序代码: /*liezhuyuanxiaoqufa*/ #include #include voidload1(); #definem5 floata[m][m+1]; main() { inti,j; intc,k,r,p,n,n1; floatx[m],l[m][m],s,d=0; printf("\npleaseinputzenguangjuzhena[%d][%d]: ",m,m+1); load1(); getch(); for(i=0;i { for(j=i;j c=(fabs(a[j][i])>fabs(a[i][i]))? j: i; for(n=0;n { s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s; } for(p=0;p printf("%f",a[i][p]); printf("\n"); for(k=i+1;k { l[k][i]=a[k][i]/a[i][i]; for(r=i;r { a[k][r]=a[k][r]-l[k][i]*a[i][r]; } } } x[m-1]=a[m-1][m]/a[m-1][m-1]; printf("x[%d]=%f",m-1,x[m-1]); for(i=m-2;i>=0;i--) { for(j=i+1;j d=d+a[i][j]*x[j]; x[i]=(a[i][m]-d)/a[i][i]; printf("x[%d]=%f",i,x[i]); d=0; } getch(); } voidload1() { inti,j; for(i=0;i for(j=0;j { scanf("%f",&a[i][j]); } } 实验结果: 程序代码: /*liezhuyuanxiaoqufa*/ #include #include voidload1(); #definem10 floata[m][m+1]; main() { inti,j; intc,k,r,p,n,n1; floatx[m],l[m][m],s,d=0; printf("\npleaseinputzenguangjuzhena[%d][%d]: ",m,m+1); load1(); getch(); for(i=0;i { for(j=i;j c=(fabs(a[j][i])>fabs(a[i][i]))? j: i; for(n=0;n { s=a[i][n]; a[i][n]=a[c][n]; a[c][n]=s; } for(p=0;p printf("%f",a[i][p]); printf("\n"); for(k=i+1;k { l[k][i]=a[k][i]/a[i][i]; for(r=i;r { a[k][r]=a[k][r]-l[k][i]*a[i][r]; } } } x[m-1]=a[m-1][m]/a[m-1][m-1]; printf("x[%d]=%f",m-1,x[m-1]); for(i=m-2;i>=0;i--) { for(j=i+1;j d=d+a[i][j]*x[j]; x[i]=(a[i][m]-d)/a[i][i]; printf("x[%d]=%f",i,x[i]); d=0; } getch(); } voidload1() { inti,j; for(i=0;i for(j=0;j { scanf("%f",&a[i][j]); } } 实验结果: 三、求解下列积分(E=1E-6) 实验代码: /*rombergmethod*/ #include #include #definen1 floatf(floatx); floattt(intm,floatt1,floatt2); main() { floatt[20][20]; inti,m,k; floatp,a,b; printf("\npleaseinputzone[a,b]"); scanf("%f,%f",&a,&b); p=f(a); for(i=1;i p=p+f(b); t[0][0]=(b-a)*p/(2*n); p=0; k=1; m=1; do { for(i=0;i t[0][k]=0.5*t[0][k-1]+(b-a)*p/(pow(2,k)*n); p=0; for(i=1;i<=m;i++)t[i][k-i]=tt(i,t[i-1][k-i],t[i-1][k-i+1]); k=k+1; m=m+1; if(m>=20)printf("m>20,stopacclerate,I=%f",t[m-1][0]); } while((t[m-2][1]-t[m-2][0])>1e-6); printf("\ntheintegralvalueofsin(x)/xinzone[%f,%f]isI=%f",a,b,t[m-1][0]); getch(); } floatf(floatx) { floaty; if(x<1e-10)y=1; else y=sin(x)/x; returny; } floattt(intm,floatt1,floatt2) { floattm; tm=(pow(4,m)*t2-t1)/(pow(4,m)-1); returntm; } floatf1(floatx) { floaty; y=1/exp(x); returny; } 实验结果: 程序代码: /*rombergmethod*/ #include #include #definen1 floatf(floatx); floattt(intm,floatt1,floatt2); main() { floatt[20][20]; inti,m,k; floatp,a,b; printf("\npleaseinputzone[a,b]"); scanf("%f,%f",&a,&b); p=f(a); for(i=1;i p=p+f(b); t[0][0]=(b-a)*p/(2*n); p=0; k=1; m=1; do { for(i=0;i t[0][k]=0.5*t[0][k-1]+(b-a)*p/(pow(2,k)*n); p=0; for(i=1;i<=m;i++)t[i][k-i]=tt(i,t[i-1][k-i],t[i-1][k-i+1]); k=k+1; m=m+1; if(m>=20)printf("m>20,stopacclerate,I=%f",t[m-1][0]); } while((t[m-2][1]-t[m-2][0])>1e-6); printf("\ntheintegralvalueofy=1/exp(x*x)inzone[%f,%f]isI=%f",a,b,t[m-1][0]); getch(); } floatf1(floatx) { floaty; if(x<1e-10)y=1; else y=sin(x)/x; returny; } floattt(intm,floatt1,floatt2) { floattm; tm=(pow(4,m)*t2-t1)/(pow(4,m)-1); returntm; } floatf(floatx) { floaty; y=1/exp(x*x); returny; } 实验结果: 四、求下列矩阵所有特征值和相应特征向量。 程序代码: /*jacobimethod*/ #include #include #definem6 voiditerat(); voidload(); floata[m][m],q[m][m]; floatmax; main() { inti,j; load(); for(i=0;i { for(j=0;j q[i][i]=1; } doiterat(); while(max>1e-3); for(i=0;i { printf("\ntheeigenvalueofmatrixar%d=%f\n",i,a[i][i]); printf("\ntheeigenvectorofmatrixax%dis: \n",i); printf("("); for(j=0;j printf(")"); } getch(); } voiditerat() { floata1[m][m],q1[m][m],g[m][m]; inti,j,k; ints=0; intt=0; floatrf,bt,cst,sst; floatp=0; for(i=0;i { for(j=0;j g[i][i]=1; } max=0; for(i=0;i { for(j=i+1;j { if(max { max=fabs(a[i][j]); s=i; t=j; } } } rf=(a[s][s]-a[t][t])/2; bt=sqrt(rf*rf+a[s][t]*a[s][t]); cst=sqrt(0.5+0.5*fabs(rf)/bt);/*cosoftheanglest*/ sst=0.5*a[s][t]/(bt*cst);/*sinoftheanglest*/ if(rf>0)sst=-sst; g[s][s]=cst; g[t][t]=cst; g[s][t]=sst; g[t][s]=-sst; for(i=0;i { for(j=0;j { for(k=0;k a1[i][j]=p; p=0; } } for(i=0;i { for(j=0;j { for(k=0;k a[i][j]=p; p=0; for(k=0;k q1[i][j]=p; p=0; } } for(i=0;i { for(j=0;j } printf("%f",max); } voidload() { floatb[m*m]; inti,j; printf("\npleaseinputmatrixa: \n"); for(i=0;i { for(j=0;j { scanf("%f",&b[j+i*m]); a[i][j]=b[j+i*m]; } } } 实验结果: 程序代码: /*jacobimethod*/ #include #include #definem5 voiditerat(); voidload(); floata[m][m],q[m][m]; floatmax; main() { inti,j; load(); for(i=0;i { for(j=0;j q[i][i]=1; } doiterat(); while(max>1e-3); for(i=0;i { printf("\ntheeigenvalueofmatrixar%d=%f\n",i,a[i][i]); printf("\ntheeigenvectorofmatrixax%dis: \n",i); printf("("); for(j=0;j printf(")"); } getch(); } voiditerat() { floata1[m][m],q1[m][m],g[m][m]; inti,j,k; ints=0; intt=0; floatrf,bt,cst,sst; floatp=0; for(i=0;i { for(j=0;j g[i][i]=1; } max=0; for(i=0;i { for(j=i+1;j { if(max { max=fabs(a[i][j]); s=i; t=j; } } } rf=(a[s][s]-a[t][t])/2; bt=sqrt(rf*rf+a[s][t]*a[s][t]); cst=sqrt(0.5+0.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算方法 上机 实验 报告