文档介绍:实验五矩阵的lu分解法,雅可比迭代法班级:学号::实验五矩阵的LU分解法,雅可比迭代一、目的与要求:熟悉求解线性方程组的有关理论和方法;会编制列主元消去法、LU分解法、雅可比及高斯—塞德尔迭代法德程序;通过实际计算,进一步了解各种方法的优缺点,选择合适的数值方法。二、实验容:会编制列主元消去法、LU分解法、雅可比及高斯—塞德尔迭代法德程序,进一步了解各种方法的优缺点。三、程序与实例列主元高斯消去法算法:将方程用增广矩阵[A∣b]=(表示消元过程对k=1,2,…,n-1①选主元,找使得=②如果,则矩阵A奇异,程序结束;否则执行③。③如果,则交换第k行与第行对应元素位置,j=k,┅,n+1④消元,对i=k+1,┅,n计算对j=l+1,┅,n+1计算回代过程①若,则矩阵A奇异,程序结束;否则执行②。②;对i=n-1,┅,2,1,计算程序与实例程序设计如下:#include<iostream>#include<cmath>usingnamespacestd;voiddisp(double**p,introw,intcol){for(inti=0;i<row;i++){for(intj=0;j<col;j++)cout<<p[i][j]<<'';cout<<endl;}}voiddisp(double*q,intn){cout<<"====================================="<<endl;for(inti=0;i<n;i++)cout<<"X["<<i+1<<"]="<<q[i]<<endl;cout<<"====================================="<<endl;}voidinput(double**p,introw,intcol){for(inti=0;i<row;i++){cout<<"输入第"<<i+1<<"行:";for(intj=0;j<col;j++)cin>>p[i][j];}}intfindMax(double**p,intstart,intend){intmax=start;for(inti=start;i<end;i++){if(abs(p[i][start])>abs(p[max][start]))max=i;}returnmax;}voidswapRow(double**p,intone,intother,intcol){doubletemp=0;for(inti=0;i<col;i++){temp=p[one][i];p[one][i]=p[other][i];p[other][i]=temp;}}booldispel(double**p,introw,intcol){for(inti=0;i<row;i++){intflag=findMax(p,i,row);//找列主元行号if(p[flag][i]==0)returnfalse;swapRow(p,i,flag,col);//交换行for(intj=i+1;j<row;j++){doubleelem=p[j][i]/p[i][i];//消元因子p[j][i]=0;for(intk=i+1;k<col;k++){p[j][k]-=(elem*p[i][k]);}}}returntrue;}doublesumRow(double**p,double*q,introw,intcol){doublesum=0;for(inti=0;i<col-1;i++){if(i==row)continue;sum+=(q[i]*p[row][i]);}returnsum;}voidback(double**p,introw,intcol,double*q){for(inti=row-1;i>=0;i--){q[i]=(p[i][col-1]-sumRow(p,q,i,col))/p[i][i];}}intmain(){cout<<"Inputn:";intn;//方阵的大小cin>>n;double**p=newdouble*[n];for(inti=0;i<n;i++){p[i]=newdouble[n+1];}input(p,n,n+1);if(!dispel(p,n,n+1)){cout<<"奇异"<<endl;return0;}double*q=newdouble[n];for(inti=0;i<n;i++)q[i]=0;back(p,n,n+1,q);disp(q,n);delete[]q;for(inti=0;i<n;i++)delete[]p[i];delete[]p;}=-==-=-