- 论坛徽章:
- 0
|
回复 #7 net_robber 的帖子
忽如一夜春风来,千树万树梨花开
#include <iostream>
using namespace std;
void Gauss(double A[],double b[],int n) //高斯算法
{
int i,j,k;
for(i=0;i<n;i++)
{
for(j=i+1;j<n;j++)
{
A[i*n+j]/=A[i*n+i];
for(k=i+1;k<n;k++)
{
A[k*n+j]-=A[k*n+i]*A[i*n+j];
}
}
b[i]/=A[i*n+i];
for(k=i+1;k<n;k++)
{
b[k]-=A[k*n+i]*b[i];
}
}
//回代
for(i=n-1;i>=0;i--)
{
for(j=i+1;j<n;j++)
{
b[i]-=A[i*n+j]*b[j];
}
}
}
int main()
{
double A[16]={8,2,1,2.5,1,8,-0.5,2,1.5,2,8,-1,1,0.5,0.7,8}; // 一维数组
double b[4]={1.5,-3,-4.5,3.2};
int k;
Gauss(A,b,4);
for(k=0;k<4;k++)
{
cout<<"x["<<k<<"]= "<<b[k]<<endl;
}
system("pause");
} |
这里用的是有回代高斯消元法,答案也是正确的,怎么修改为无回代高斯消元法
高手帮忙啊
[ 本帖最后由 pilow 于 2008-6-4 10:21 编辑 ] |
|