c++解线性方程组

来源:百度知道 编辑:UC知道 时间:2024/09/20 04:01:47
具体问题是方程组
2x-y+3z=1
4x+2y+5z=4
x+2y=7
要求用约当消元法解,编程序如下:
#include<iostream>
using namespace std;
int main()
{
int i,j,k;
float a[3][4];
float b[3];
b[1]=b[2]=b[3]=0;
a[0][0]=2;a[0][1]=-1;a[0][2]=3;a[0][3]=1;
a[1][0]=4;a[1][1]=2;a[1][2]=5;a[1][3]=4;
a[2][0]=1;a[2][1]=2;a[2][2]=0;a[2][3]=7;
for(k=0;k<3;k++)
{
{for(i=k;i<4;i++)
a[k][i]=a[k][i]/a[k][k];
}
for(j=1;j<3;j++)
{for(i=k;i<4;i++)
a[j][i]=a[j][i]-(a[j][k]*a[k][i]);
}
}
/*for(j=0;j<3;j++)
{for(i=0;i<4;i++)
cout<<a[j][i]<<" ";
cout<<endl;
}*/
for(i=0;i<3;i++)
b[i]=a[i][3];
cout<<b[0]<<" "<<b[1]<<" "<<b[2]<<endl;
return 0;
}
但是结果始终不对,经过我的分析发现是
{for(i=k;i<4;i++)
a[k][i]=a[k][i]/a[k][k];

楼主,建议你不要自己在瞎折腾了,下个gsl库,就容易搞定了。

for(k=0;k<3;k++)
{
{for(i=k;i<4;i++)
a[k][i]=a[k][i]/a[k][k];
}
for(j=1;j<3;j++)
{for(i=k;i<4;i++)
a[j][i]=a[j][i]-(a[j][k]*a[k][i]);
}
}

既然你的i j k都是用来做数组下表变量的,那么就不要用他们来循环了~ 最好再声明一个FOR循环变量~