hduscimc 发表于 2009-6-21 19:04

#include<iostream>
#include<cmath>
using namespace std;
int main()
{
        int i;
        float *x;
        float c ={0.101,2.304,3.555,1.183,
                                        -1.347,3.712,4.623,2.137,
                                        -2.835,1.072,5.643,3.035};
        float *ColPivot(float *,int);
        x=ColPivot(c,3);
        for( i=0;i<=2;i++ )
                cout<<"x("<<i<<")="<<x<<endl;
}

float *ColPivot( float *c,int n )
{
        int i,j,t,k;
        float *x,p;
        x=new float;
        for( i=0;i<=n-2;i++)
        {
                k=i;
                for(j=i+1;j<=n-1;j++)
                        if(fabs(*(c+j*(n+1)+i))>(fabs(*(c+k*(n+1)+i))))
                                k=j;
                        if(k!=i)
                                for( j=i;j<=n;j++ )
                                {
                                        p=*(c+i*(n+1)+j);
                                        *(c+i*(n+1)+j)=*(c+k*(n+1)+j);
                                        *(c+k*(n+1)+j)=p;
                                }
                for( j=i+1;j<=n-1;j++ )
                {
                        p=(*(c+j*(n+1)+i))/(*(c+i*(n+1)+i));
                        for( t=i;t<=n;t++ )
                                *(c+j*(n+1)+t)-=p*(*(c+i*(n+1)+t));
                }
        }
        for( i=n-1;i>=0;i--)
        {
                for( j=n-1;j>=i+1;j--)
                        (*(c+i*(n+1)+n))-=x*(*(c+i*(n+1)+j));
                x=*(c+i*(n+1)+n)/(*(c+i*(n+1)+i));
        }
        return x;
}

xiaozhangwh 发表于 2009-7-1 21:56

谢谢分享,来试一下

deven1985 发表于 2010-1-1 09:06

,不错,前几天的数值分析课上也是做的这个!

Rekcahpu 发表于 2010-11-23 13:44

刚学高斯消元

0.9清1.8清2.7清 发表于 2012-8-31 16:04

wuyuwuyul 自己程序拿出来看看呗!干嘛还要体力A!

弘道 发表于 2014-7-29 09:12

谢谢楼主……辛苦啦!………………
页: 1 [2]
查看完整版本: [讨论]高斯消元法的程序对比