📄 逐次超松弛迭代法.cpp
字号:
#include "stdio.h"
#include "math.h"
void SOR(double w,double a[3][3],double b[3],double x[3],double esp)
{
double t[3];
int flag=0;
int n=0;
while(!flag)
{
flag=1;n++;
t[0]=x[0];t[1]=x[1];t[2]=x[2];
for(int i=0;i<3;i++)
{
double m=b[i];
for(int j=0;j<3;j++)
{
m-=(a[i][j]*x[j]);
}
x[i]=x[i]+w*m/a[i][i];
}
for(i=0;i<3;i++)
{
if(fabs(x[i]-t[i])>=esp)
{
flag=0;
break;
}
}
}
printf("%d\n",n);
}
void main()
{
double a[3][3];
double b[3];
double x[3];
double w,esp;
a[0][0]=5;a[0][1]=2;a[0][2]=1;
a[1][0]=-1;a[1][1]=4;a[1][2]=2;
a[2][0]=2;a[2][1]=-3;a[2][2]=10;
b[0]=-12;b[1]=20;b[2]=3;
x[0]=x[1]=x[2]=0;
w=0.9;esp=0.0001;
SOR(w,a,b,x,esp);
for(int i=0;i<3;i++)
printf("%f\n",x[i]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -