#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;
}
线性方程组的迭代解法:雅可比迭代法
最新推荐文章于 2022-11-17 23:36:40 发布