线性方程组的迭代解法:高斯-塞德尔迭代法

来源:互联网 发布:西安软件开发平均工资 编辑:程序博客网 时间:2024/04/27 17:25
#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;}