求一道五元方程用C#或C++解答

来源:百度知道 编辑:UC知道 时间:2024/05/23 10:18:38
A*8+B*2+C*3+D*3+E*3=72.80
A*1+B*2*C*2+D*2*E*10=58.40
A*0.2+B*2.7+C*0.3+D*0.3*E*0.2=26.00
A*0.2+B*0.3+C*3+D*0.3+E*0.2=14.90
A*0.1+B*0.2+C*0.2+D*2+E*0.1=20.60

求解A、B、C、D、E。

- - - - -
如果用matlab解答:
原式为
T*X=b;
T为系数矩阵 X=[A B C D E]';b=[72.8 58.4 26 14.9 20.6]'
X=T^(-1)*b

matlab计算
T=[8,2,3,3,3;
1,2,2,2,10;
0.2,2.7,0.3,0.3,0.2;
0.2,0.3,3,0.3,0.2;
0.1,0.2,0.2,2,0.1];
b=[72.8 58.4 26 14.9 20.6]';
X=T^-1*b
X =
1.96794672160602
8.02552763337565
3.02269122966725
9.01525525237765
1.63051050475529

现在想知道如果用C#,或是C++如何编写程序直接运算?
还不是很完善,我需要能编译的。关键时候有注释的。

/*高斯迭代法求解 Ax=b */
#include <stdio.h>
#include <conio.h>
#include <math.h>
main()
{
int i,n=5;
double A[25]={ 8, 2, 3, 3, 3, \
1, 2, 2, 2, 10, \
0.2, 2.7, 0.3, 0.3, 0.2,\
0.2, 0.3, 3, 0.3, 0.2,\
0.1, 0.2, 0.2, 2, 0.1};
double b[5]={72.8, 58.4, 26, 14.9, 20.6},x[5];
void gauss_solve(int,double*,double*,double*);

system("cls");
gauss_solve(n,A,x,b);
for (i=0;i<n;i++)
printf("x[%d]=%.7lf\n",i,x[i]);
getch();
}

void gauss_solve(int n,double *A,double *x,double *b)
{
int i,j,k,r;
double max;
for (k=0;k<n-1;k++)
{
max=fabs(A[k*n+k]); /*找绝对值最大的元素*/
r=k;
for (i=k+1;i<n-1;i++)
if (max<fabs(A[i*n+i]))
{
max=fabs(A[i*n+i]);
r=i;
}
if (r!=k)