欢迎来到天天文库
浏览记录
ID:46899693
大小:77.50 KB
页数:6页
时间:2019-11-29
《矩阵雅克比迭代算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、雅克比迭代实验目的:1.学习和掌握线性代数方程组的jacobi迭代法。2.运用jacobi迭代法进行计算。方法原理:设方程组Ax=b的系数矩阵A非奇异而且,将A分裂为A=D+L+U,可以使计算简便。其中,A=D+L+U,其中,将方程组乘以,得到等价的方程组,i=1,2,…n,简记为。其中,.我们称为迭代函数。任取初始向量,按照形成迭代格式,称这种迭代方法为Jacobi迭代法。算法描述:Step1:给定一组x,即初值。Step2:用for循环计算:x[k+1]=(b[i]-)/a[i][i].St
2、ep3:当fabs(x[k+1]-x[k])typedefdoubleDatatype;classMatrix{private:Datatype**ar;intM;intN;public:Matrix(inta=0,intb=0);Matrix(Matrix&A);~Matrix();voidprint();voidInit();voidJacobi(Matrixb,Matrixx,Matrix&xx);boolcompa
3、re(MatrixX);voidchange(Matrixxx);};CPP文件:#include#include#include#include"Jacobi.h"#defineE0.0000001#includeMatrix::Matrix(inta,intb)///////////////////构造函数{M=a;N=b;ar=(Datatype**)malloc(sizeof(Datatype*)*M);f
4、or(inti=0;i5、)malloc(sizeof(Datatype*)*M);for(inti=0;i6、;}cout<>ar[i][j];}}}voidMatrix::Jacobi(Matrixb,Matrixx,Matrix&xx){for(inti=0;i7、){if(i==j)continue;sum+=ar[i][j]*x.ar[j][0];}xx.ar[i][0]=(b.ar[i][0]-sum)/ar[i][i];}}boolMatrix::compare(MatrixX){intflag=0;for(inti=0;iE){flag=1;break;}}break;}if(flag==1)returnfalse;//程序需继续迭代8、elsereturntrue;//迭代结束}voidMatrix::change(Matrixxx){for(inti=0;i>row;MatrixA(row,row),b(row,1),x(row,1),xx(row,1);cout<<"请输入系数矩阵"<
5、)malloc(sizeof(Datatype*)*M);for(inti=0;i6、;}cout<>ar[i][j];}}}voidMatrix::Jacobi(Matrixb,Matrixx,Matrix&xx){for(inti=0;i7、){if(i==j)continue;sum+=ar[i][j]*x.ar[j][0];}xx.ar[i][0]=(b.ar[i][0]-sum)/ar[i][i];}}boolMatrix::compare(MatrixX){intflag=0;for(inti=0;iE){flag=1;break;}}break;}if(flag==1)returnfalse;//程序需继续迭代8、elsereturntrue;//迭代结束}voidMatrix::change(Matrixxx){for(inti=0;i>row;MatrixA(row,row),b(row,1),x(row,1),xx(row,1);cout<<"请输入系数矩阵"<
6、;}cout<>ar[i][j];}}}voidMatrix::Jacobi(Matrixb,Matrixx,Matrix&xx){for(inti=0;i7、){if(i==j)continue;sum+=ar[i][j]*x.ar[j][0];}xx.ar[i][0]=(b.ar[i][0]-sum)/ar[i][i];}}boolMatrix::compare(MatrixX){intflag=0;for(inti=0;iE){flag=1;break;}}break;}if(flag==1)returnfalse;//程序需继续迭代8、elsereturntrue;//迭代结束}voidMatrix::change(Matrixxx){for(inti=0;i>row;MatrixA(row,row),b(row,1),x(row,1),xx(row,1);cout<<"请输入系数矩阵"<
7、){if(i==j)continue;sum+=ar[i][j]*x.ar[j][0];}xx.ar[i][0]=(b.ar[i][0]-sum)/ar[i][i];}}boolMatrix::compare(MatrixX){intflag=0;for(inti=0;iE){flag=1;break;}}break;}if(flag==1)returnfalse;//程序需继续迭代
8、elsereturntrue;//迭代结束}voidMatrix::change(Matrixxx){for(inti=0;i>row;MatrixA(row,row),b(row,1),x(row,1),xx(row,1);cout<<"请输入系数矩阵"<
此文档下载收益归作者所有