📄 sor.cpp
字号:
//
// SOR.cpp
//
#include "stdafx.h"
#include "SOR.h"
SOR::SOR(int n, double** A, double* B, double OMEGA)
{
m_nDimension= n;
MatrixA = A;
VectorB = B;
m_dblOmega = OMEGA;
}
SOR::~SOR()
{
}
double* SOR::GetSolution()
{
int i, j;
double sum = 0;
double* X = new double[m_nDimension+1];
double* XOld = new double[m_nDimension+1];
for(i=0; i<=m_nDimension; i++)
{
X[i] = 0;
XOld[i] = 0;
}
//////////////////////////////////////////////////
bool bContinue = true;
while(bContinue)
{
for(i=0; i<=m_nDimension; i++)
{
XOld[i] = X[i];
}
for(i=0; i<=m_nDimension; i++)
{
sum = VectorB[i];
for(j=0; j<=m_nDimension; j++)
{
if(i != j)
{
sum -= MatrixA[i][j]*X[j];
}
}
sum /= MatrixA[i][i];
X[i] = X[i] + m_dblOmega*(sum-X[i]);
}
for(i=0; i<=m_nDimension; i++)
{
if(fabs(XOld[i]-X[i]) > 1e-16)
{
bContinue = true;
break;
}
bContinue = false;
}
}
return X;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -