逐次超松弛迭代法.cpp
来自「定步长辛普森公式计算.二分法.列主高斯消去法.龙贝格.牛顿迭代法.弦截法.逐次超」· C++ 代码 · 共 52 行
CPP
52 行
#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 + =
减小字号Ctrl + -
显示快捷键?