资源描述:
《雅克比迭代法…….doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验课程名称:数值分析实验项目名称运用插值法实验成绩实验者江骏专业班级软件0803组别同组者实验日期年月日第一部分:实验分析与设计一、实验容描述⑴研究用Jacobi迭代法与Gauss-Seidel迭代法解下列方程组Ax=b的收敛性,通过上机计算,验证分析是否正确,并观察右端项对迭代收敛是否有影响,比较两法的收敛速度⑵松弛因子对超松弛因子迭代法收敛速度的影响,要求对不同的阶数进行迭代⑶观察欧拉显式方法的收敛性⑷观察欧拉隐式方法的收敛性⑸写出实验报告二、实验基本原理与设计①Jacobi迭代法:∑nj
2、=1aijxj=bi(i=1,2,…,n)②Gauss-Seidel迭代法:xi(K+1)=[bi-∑i-1j=1aijxj(k+1)-∑nj=i+1aijxj(k)]/aij③超松弛因子迭代法:Dx(k+1)=Dx(k)+Ex(k+1)+Fx(k)+b-Dx(k)X(k+1)=x(k)+D-1R④三角分解法:利用三角矩阵将方程组化解为两个方程组,从而简化运算。⑤欧拉显式方法:在任意节点tn+1=t0+(n+1)h处,u(tn+1)的近似值由Euler公式给出:un+1=un+hf(tn,un)
3、⑥欧拉隐式方法:改进的Euler公式n+1=yn+hf(xn,yn)yn+1=yn+[f(xn,yn)+f(xn+1,n+1)]三、主要仪器设备及耗材WindowsXpVC++6.0第二部分:实验调试与结果分析一、调试过程①Jacobi迭代法#include#defineN10floatABS(float,float);intmain(void){inti,j,n;floata[N][N],b[N];floatx[N],y[N];floate,total;printf("Ple
4、aseinputthedimension:");scanf("%d",&n);printf("PleaseinputtheCoefficientMatrix:");for(i=0;i5、n;i++)scanf("%f",&x[i]);do{for(i=0;i0.0001);for(i=0;i6、tf("x%d=%ft",i,x[i]);printf("");return0;}floatABS(floatx,floaty){inttotal;if(xintmain(){doubl
7、ex[3]={0,0,0};doublea[3][3]={6,2,-1,1,4,-2,-3,1,4};doubley[3]={-3,2,4};doubled[3][3],g[3];intround=5,i,j;for(i=0;i<3;++i){g[i]=y[i]/a[i][i];for(j=0;j<3;++j){d[i][j]=i==j?0:-a[i][j]/a[i][i];}}while(round--){for(i=0;i<3;++i){x[i]=g[i];for(j=0;j<3;++j){
8、x[i]+=d[i][j]*x[j];}printf("%lf",x[i]);}printf("");}}结果:流程图:开始系数矩阵增广阵for(i=0;i<3;++i)d[i][j]=i==j?0:-a[i][j]/a[i][i]for(j=0;j<3;++j)x[i]+=d[i][j]*x[j]结束③超松弛因子迭代法#include#includeusingnamespacestd;float*one_array_malloc(intn);float**