#include <iostream>
#include <time.h>
#include <cmath>
#include <stdio.h>
using namespace std;
double max(double x[],double y[],int n)
{
double max_=abs(x[0]-y[0]);
for(int i=1;i<n;i++)
if(abs(x[i]-y[i])>max_)
max_=abs(x[i]-y[i]);
return max_;
}
int main()
{
double a[3][3]={{1,-2,2},
{-1,1,-1},
{-2,-2,1}};
double b[3]={1,0,-2},x[3]={1,1,1},x1[3],s;
int i,j,count=1;
do
{
for(i=0;i<3;i++)
{
s=0;
for(j=0;j<3;j++)
s=s+a[i][j]*x[j];
x1[i]=x[i]+(b[i]-s)/a[i][i];
}
printf("%-3d: ",count++);
for(i=0;i<3;i++)
printf("%-10lf ",x1[i]);
cout<<endl;
if(max(x,x1,3)<10e-6)
break;
else
{
for(i=0;i<3;i++)
x[i]=x1[i];
}
}while(1);
return 0;
}
线性方程组的迭代解法:雅可比迭代法
最新推荐文章于 2024-04-23 16:52:56 发布
本文介绍了一个使用C++实现的迭代法求解线性方程组的示例程序。通过定义一个名为max的函数来计算两个向量之间的最大误差,并利用此误差作为迭代停止条件,实现了对线性方程组的逐次逼近求解。
3043

被折叠的 条评论
为什么被折叠?



