cpu天梯图 8代酷睿:SOR迭代 程序

来源:百度文库 编辑:高考问答 时间:2024/04/29 20:17:10
谁会数值分析中的SOR算法啊 ???
我这有我编的确 但是不知道那里错了
哪位高手帮帮忙!!
有悬赏的^
#include<stdio.h>
#include<math.h>
#define max 10
void main()
{
double a[max][max],b[max],x0[max],x[max],e,w,S,S1;
int i,j,N,k,n;
char loop;
printf("请输入矩阵维数n:");
scanf("%d",&n);
printf("请输入系数矩阵A:");
for(i=1;i<n+1;i++)
for(j=1;j<n+1;j++)
{scanf("%f",&a[i][j]);
}
printf("请输入b:");
for(i=1;i<n+1;i++)
scanf("%f",&b[i]);
do
{
printf("请输入初始向量:");
for(i=1;i<n+1;i++)
{scanf("%f",&x0[i]);}
printf("精确度e、最大迭代次数N、松弛因子w:");
scanf("%f",&e);
scanf("%d",&N);
scanf("%f",&w);
for(i=1;i<n+1;i++)
x[i]=x0[i];
for(k=1;k<N;k++){
S=0;
for(i=1;i<n+1;i++)
{
for(j=1;j<n+1;j++)
S1=w*(b[i]-a[i][j]*x[j])/a[i][i];
if(abs(S1)>abs(S)) S=S1;
x[i]+=S1;
}
if(abs(S)<=e)
{
for(i=1;i<n+1;i++)
printf("x[%d]=%f\n",i,x[i]);
printf("k=%d\n\n\n",k);
}
}
for(i=1;i<n+1;i++)
{printf("x[%d]=%f\n",i,x[i]);
printf("k=%d\n\n\n",k);}
printf("继续吗?是:y,不是:n.");
scanf("%c",loop);

}while(loop=='y');
}

楼主还是用matlab吧。
我都忘了SOR的迭代过程了。
虽然上学期刚学完(汗!)