const double EPSILONG = 0.001;
//
//列主元方法求解n阶线性方程组Ax=b
bool Solve(double** A, double* b, double* x, int n)
{
double** M = new double*[n];
for (int i=0; i<n; i++)
{
M[i] = new double[n+1];
for (int j=0; j<n; j++)
{
M[i][j] = A[i][j];
}
M[i][n] = b[i];
}
for (int k=0; k<n; k++)
{//n个主元
double colMax = fabs(M[k][k]);
int maxLineIndex = k;
for(int i=k+1; i<n; i++)
{//寻找第k列的最大元素
if(fabs(M[i][k]) > colMax)
{
colMax = fabs(M[i][k]);
maxLineIndex = i;
}
}
if(colMax < EPSILONG)
{//奇异矩阵
for (int i=0; i<n; i++)
{
delete M[i];
}
delete M;
return false;
}
double temp;
//交换k行和maxLineIndex行
for (int m=0; m<n+1; m++)
{
temp = M[k][m];
M[k][m] = M[maxLineIndex][m];
M[maxLineIndex][m]
基于C++的n阶线性方程组Ax=b求解
最新推荐文章于 2024-04-11 14:58:38 发布
该博客介绍了如何使用C++编程实现列主元方法解决n阶线性方程组Ax=b的问题。在解决过程中,涉及矩阵操作,包括寻找主元、交换行、消元以及回代求解步骤。当遇到奇异矩阵时,程序返回错误。
摘要由CSDN通过智能技术生成