cout<<\请输入最大偏差:\ cin>>e;
for(i=1;i<=n;i++) {
x[i]=0; y[i]=x[i]; } k=0;
while(k!=N) {
k++;
for(i=1;i<=n;i++) {
w=0;
for(j=1;j<=n;j++) {
if(j!=i)
w=w+a[i][j]*y[j]; }
y[i]=(b[i]-w)/double(a[i][i]); }
max=fabs(x[1]-y[1]); for(i=1;i<=n;i++) {
se=fabs(x[i]-y[i]); if(se>max) max=se; }
if(max cout< for(i=1;i<=n;i++) cout<<\ break; } for(i=1;i<=n;i++) { x[i]=y[i]; } } if(k==N) cout<<\迭代失败!!\ choice=0; } } 3、三对角形线性方程组 ?4?100000000??x1???14?10000000??x????2??0?14?1000000??x3?????00?14?100000???x4??000?14?10000??x5? ???? = ?0000?14?1000??x6??00000?14?100??x????7??000000?14?10??x8??0000000?14?1??x????9???00000000?14????x10??x= ( 2, 1, -3, 0, 1, -2, 3, 0, 1, -1 ) *T?7??5?????13???2???6??? ??12??14?????4??5??????5??3.SOR方法 #include using namespace std; int main() { int n; cout<<\输入维数:\ cin>>n; vector cout<<\输入系数矩阵:\ for(int i=0;i for(int j=0;j<=n;++j) { double dtemp; cin>>dtemp; vd.push_back(dtemp); } va.push_back(vd); vd.clear(); } cout<<\输入初始解向量:\vector vd.push_back(dtemp); } cout<<\输入精度:\double d; cin>>d; cout<<\输入最大迭代次数:\int mcount; cin>>mcount; cout<<\输入松弛因子:\double xd; cin>>xd; vector double dmax=0.0; vtemp.assign(vd.begin(),vd.end()); for(int i=0;i for(int j=0;j dtemp+=(*(ia+i))[j]*vd[j]; } else if(j>=i) { dtemp+=(*(ia+i))[j]*vtemp[j]; } } dtemp=(*(ia+i))[n]-dtemp; vd[i]=xd*dtemp/(*(ia+i))[i]; vd[i]+=vtemp[i]; } ++count; for(int i=0;i if(dmax if(dmax cout<<\输出迭代次数: \ cout< cout<<\输出迭代解:\ for(int i=0;i cout< cout< flag=false; } else if(count>mcount) { cout<<\已达到最大迭代次数!\ cout<<\输出迭代解:\ for(int i=0;i cout< cout< flag=false; } } system(\ return 0; } 精度e=0.001 松弛因子w=0.8 四、程序运行结果讨论和分析: 迭代法即使不考虑计算过程中的舍入误差,迭代法也很难获得精确解。 采用SOR迭代法,不同的松弛因子,会影响迭代次数。 经过计算可知Gauss-Seidel方法比Jacobi方法计算量小,可是精确度底。SOR是