?? sor迭代法解方程組.txt
字號(hào):
#include<iostream.h>
#include<math.h>
int K;
void SOR(double A[6][6],double x[2][6],double b[6],double w,int n)
{ int i,j,k,r;
double t,s,h;
for(k=1;;k++)
{ for(i=0;i<n;i++)
{ s=0.0;
for(j=0;j<=i-1;j++)
{ if(k%2==0)
s=s+A[i][j]*x[1][j];
else s=s+A[i][j]*x[0][j];
}
t=0.0;
for(j=i;j<=n-1;j++)
{ if(k%2==0)
t=t+A[i][j]*x[0][j];
else t=t+A[i][j]*x[1][j];
}
if(k%2==0)
{ x[1][i]=x[0][i]+w*(b[i]-s-t)/A[i][i];}
else x[0][i]=x[1][i]+w*(b[i]-s-t)/A[i][i];
}
h=0.0;
for(r=0;r<n;r++)
{ h=h+(x[1][r]-x[0][r])*(x[1][r]-x[0][r]);}
if(sqrt(h)<=(1e-5))
break;
}
cout<<k<<endl;
K=k;
}
void main()
{ int i,j,n=6;
double b[6]={0,5,0,6,-2,6};
double A[6][6]={{4,-1,0,-1,0,0},{-1,4,-1,0,-1,0},{0,-1,4,0,0,-1},{-1,0,0,4,-1,0},{0,-1,0,-1,4,-1},{0,0,-1,0,-1,4}};
double x[2][6]={{0,0,0,0,0,0},{1,1,1,1,1,1}};
double w=0.95;
SOR(A,x,b,w,n);
for(i=0;i<n;i++)
{ if(K%2==0)
cout<<x[1][i]<<endl;
else cout<<x[0][i]<<endl;
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -