分别使用迭代法(Jacobi与Gausss-Seidel迭代法)和直接求解法(消元法)求解线性方程组:
要求:使误差不超过。
目录
一、雅可比迭代(Jacobi)
二、高斯-赛德尔(Gausss-Seidel)迭代
三、高斯消去法(顺序高斯消去法)
一、雅可比迭代(Jacobi)
- 迭代公式:
- 代码:
#include#include #include using namespace std; int n=4; double A[4][4]={7.2,2.3,-4.4,0.5, 1.3,6.3,-3.5,2.8, 5.6,0.9,8.1,-1.3, 1.5,0.4,3.7,5.9};//定义系数矩阵 double B[4]={15.1,1.8,16.6,36.9};//定义行数列矩阵 double X0[4]={0};//定义迭代初值 double e=pow(10,-8);//定义精度 double C[4][5];//定义迭代公式中的各项系数矩阵 double X[4];//定义结果数组 void Jacobi();//定义雅可比函数 void Matrix();//定义求迭代公式中的各项系数矩阵的函数 bool Accuracy(double x1,double x2,double x3,double x4);//定义判断是否满足精度的函数 void output();//定义输出函数 int main() { Matrix();//求迭代公式中的各项系数矩阵的函数 cout<<"雅可比迭代:"< 二、高斯-赛德尔(Gausss-Seidel)迭代
- 迭代公式:
- 代码:
#include#include #include using namespace std; int n=4; double A[4][4]={7.2,2.3,-4.4,0.5, 1.3,6.3,-3.5,2.8, 5.6,0.9,8.1,-1.3, 1.5,0.4,3.7,5.9};//定义系数矩阵 double B[4]={15.1,1.8,16.6,36.9};//定义行数列矩阵 double X0[4]={0};//定义迭代初值 double e=pow(10,-8);//定义精度 double C[4][5];//定义迭代公式中的各项系数矩阵 double X[4];//定义结果数组 void Gauss();//定义高斯-赛德尔函数 void Matrix();//定义求迭代公式中的各项系数矩阵的函数 bool Accuracy(double x1,double x2,double x3,double x4);//定义判断是否满足精度的函数 void output();//定义输出函数 int main() { Matrix();//求迭代公式中的各项系数矩阵的函数 cout<<"高斯-赛德尔迭代:"< 三、高斯消去法(顺序高斯消去法)
- 计算步骤:
1)消元过程:
设,对计算
2)回代过程:
代码:
#include#include #include using namespace std; int n=4; double A[4][5]={7.2,2.3,-4.4,0.5,15.1, 1.3,6.3,-3.5,2.8,1.8, 5.6,0.9,8.1,-1.3,16.6, 1.5,0.4,3.7,5.9,36.9};//定义矩阵数组 double Ans[4]={0}; //定义答案数组 void Elimination();//消元法 void output();//定义输出函数 int main() { cout<<"消元法:"< =0;j--) A[i][j]+=-A[i][k]/A[k][k]*A[k][j];//消元过程 for(i=n-1;i>=0;i--)//回代过程 { Ans[i]=A[i][n]/A[i][i]; for(j=n-1;j>=0;j--) if(i!=j) Ans[i]+=-A[i][j]/A[i][i]*Ans[j]; } } void output()//输出函数 { int i; cout<<"结果为:"<



