#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(' '==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]<<' '; } system("pause"); return 0; }