计算机数值技巧实验.docVIP

  • 1
  • 0
  • 约5.03千字
  • 约 8页
  • 2018-11-14 发布于江苏
  • 举报
计算机数值技巧实验

实验 解线性方程组的迭代法 实验目的: 掌握常用的几种迭代格式 实验环境: 1。Turbo C/C++2.0/3.0、Borland C/C++3.1、Microsoft Visual C++5.0以上版本 2.建立自己的工作目录 你需要在计算机上先建立自己的工作目录,所有的实验都在该工作目录下进行。使用Visual C++建立新项目时,需要指定该目录作为项目所在的目录。本书中假设你的工作目录为d:\student\your_name。用来存放本次实验所建立的文件、脚本与文档。 3。实验说明 时间 ____________________ 地点_______________________________________ 实验内容与要求: Jacobi迭代方法以及G-S迭代法 题目:用Jacobi迭代方法、G-S迭代法求解方程组: x1+2 x2-2 x3=1 x1+x2+x3=1 2x1+2 x2+x3=1 实验步骤 同实验一 实验预习与准备: 1. main() { float a[3][3]={{1,2,-2},{1,1,1},{2,2,1}},b[3]={1,1,1}; float y[3],sum; int flag; for (k=0;k100;k++) /*迭代的次数*/ { for(i=0;in;i++) { sum=0; for(j=0;jn;j++) { if(j!=i) sum=sum+a[i][j]*x[j]; } y[i]=(b[i]-sum)/a[i][i]; /*算出该迭代时的y[i]*/ } for(i=0;in;i++) { printf(x%d=%-10.6f,i+1,y[i]); } printf(\n); flag=function(y,x); /*调用函数function()*/ if(flag==1) /*结束循环*/ break; } } int function(float y[3],float x[3]) /*判断是否收敛,满足精度函数的定义*/ { int flag=0; /*标志主函数中的循环是否要结束*/ z=fabs(y[0]-x[0]); for(i=0;in;i++) if(zfabs(y[i]-x[i])) z=fabs(y[i]-x[i]); if(z10e-6) { flag=1; printf(die dai de ci shu shi k=%d\n,k+1); /*输出得到最后结果迭代的次数*/ printf(zui hou de jie guo shi:\n); for(i=0;in;i++) printf(x%d=%-10.6f,i+1,y[i]); /*输出方程组的解*/ printf(\n); } else for(i=0;in;i++) /*将y[i]的值赋给x[i],进行下一步的迭代*/ x[i]=y[i]; return (flag); } 2. main() { float a[3][3]={{1,2,-2},{1,1,1},{2,2,1}},b[3]={1,1,1}; float x[3]={0,0,0},sum1,sum2; int i,j,k,n; printf(please input n:\n); scanf(%d,n); /*输入未知数的个数*/ for (k=0;k6;k++) /*迭代的次数*/ { for(i=0;in;i++) { sum1=0;sum2=0; for(j=0;ji-1;j++) sum1=sum1+a[i][j]*x[j]; for(j=i+1;jn;j++) sum2=sum2+a[i][j]*x[j]; x[i]=(b[i]-sum1-sum2)/a[i][i]; /*运用公式*/ } for(i=0;in;i++

文档评论(0)

1亿VIP精品文档

相关文档