#include <iostream>
#include <time.h>
#include <cmath>
#include <stdio.h>
using namespace std;
double max(double x[],int n)
{
double max_=abs(x[0]);
for(int i=1;i<n;i++)
if(abs(x[i])>max_)
max_=abs(x[i]);
return max_;
}
int main()
{
double a[3][3]={{4,2,-2},
{2,2,-3},
{-2,-3,14}};
double b[3]={10,5,4},x[3]={7,9,11},diff[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];
diff[i]=(b[i]-s)/a[i][i];
x[i]+=diff[i];
}
printf("%-3d: ",count++);
for(i=0;i<3;i++)
printf("%-10lf ",x[i]);
cout<<endl;
}while(max(diff,3)>10e-6);
return 0;
}
线性方程组的迭代解法:高斯-塞德尔迭代法
最新推荐文章于 2023-03-23 21:32:10 发布