c/c++解奇次线形方程组

来源:互联网 发布:程序员三强 编辑:程序博客网 时间:2024/05/24 01:04

根据线形代数的部分理论,齐次线形方程组可以解得基础解系:

简单代码附上:

#include <cmath>
#include <iostream>
using namespace std;
void outPut(float a[6][6]);
/*//6X6齐次线性方程组求基础解系数


 1 2 3 4 5 6
 2 3 4 5 6 7
 3 4 5 6 7 8
 4 5 6 7 8 9
 5 6 7 8 9 10
 0 0 0 0 0 0
 1 2 3 4 5 6
 0 3 4 5 6 7
 0 0 5 6 7 8
 0 0 0 7 8 9
 0 0 0 0 9 10
 0 0 0 0 0 0
 -0.203175 -0.0507936 -0.0253968 -0.015873 -1.11111 1


*/
//返回一个二维数组
void  **baseFun(float a[6][6])
{
// float b[6][6] = {0};
for(int i = 0; i < 6; i++)
{
for(int j = i+1; j < 6; j++)
{
for(int k = i; k < 6; k++)
{
a[j][k] = a[j][k] - a[j][i]*a[i][k]/a[i][i];
}
}
}
outPut(a);
float b[6] = {0,0,0,0,0,1};
//b为基础解系
float sum = 0;
for(int i = 4; i >= 0; i--)
{
for(int m = 0; m < 6; m++ )
{
sum = sum + a[i][m] * b[m];
}
b[i] = - sum / a[i][i];
sum = 0;
}
for(int i = 0; i < 6; i++)
{
cout << ' ' << b[i];
}
}
void outPut(float a[6][6])
{
for(int i = 0; i < 6; i++)
{
for(int j = 0; j < 6; j++)
{
cout << ' ' << a[i][j];
}
cout << '\n';
}


}


int main()
{

float a[6][6] = {{-7.22222,-14.4444,-21.6667,-28.8889,-43.3333,-65},
{7,14,21,28,42,63},{2.25,4.5,6.75,9,13.5,20.25},
{-2.93878,-5.87755,-8.81633,-11.7551,-17.6327,-26.449},
{5.22449,10.449,15.6735,20.898,31.3469,47.0204},{0}};
outPut(a);
baseFun(a);


}









原创粉丝点击