雅克比迭代

来源:互联网 发布:淘宝宝贝长图怎么做 编辑:程序博客网 时间:2024/06/11 01:24
#include<iostream>#include<fstream>#include<string>using namespace std;int main(){double **A_B_Matrix;  //矩阵A和B结合double **X_Matrix;    //X取值    string s;            //缓存用    double dd;           //缓存用//int m;               //矩阵列数int n;               //矩阵的行数int k;               //要求迭代次数//m=0;n=0;char c;ifstream read("data.dat");while(getline(read,s))    //检测矩阵有几行{n++;}read.close();         /*read.open("data.dat");while(1)               //检测矩阵有几列{read>>dd;m++;c=read.peek();if('\n'==c)break;}read.close();    */  cout<<"请输入要求的迭代次数"<<endl;cin>>k;A_B_Matrix=(double **)new double *[n];//为矩阵AB分配行空间X_Matrix=(double **)new double[k+1];  //为X分配空间for(int i=0;i!=n;i++)     //为矩阵A_B分配空间{A_B_Matrix[i]=new double[n];}read.open("data.dat");int tem;              //缓存用tem=0;while(!read.eof())        //将文件中的矩阵输入到A_B中{for(int j=0;j!=n+1;j++){           read>>A_B_Matrix[tem][j];}  tem++;}read.close();for(int i=0;i!=k+1;i++)   //为X矩阵分配空间{X_Matrix[i]=new double[n];}    cout<<"请输入初始向量"<<endl;for(int i=0;i!=n;i++)             //输入初始向量X{cin>>X_Matrix[0][i];}    for(int i=1;i!=k+1;i++)         //进入迭代循环{for(int j=0;j!=n;j++){double sum=0;for(int nn=0;nn!=n;nn++){if(j==nn){sum+=0;}else{sum+=-A_B_Matrix[j][nn]*X_Matrix[i-1][nn];}}X_Matrix[i][j]=(sum+A_B_Matrix[j][n])/A_B_Matrix[j][j];  }}cout<<"经过"<<k<<"迭代,所得结果为"<<endl;for(int i=0;i!=n;i++){cout<<X_Matrix[k][i]<<'\t';}system("pause");return 0;}

0 0
原创粉丝点击