高斯消元

n元线性方程组:
1.唯一解
2.无穷解
3.无解
高斯消元:
枚举每一列:
找到当前绝对值最大的行
将这行换到最上面去
将该行第一个数变成1
将下面所有行的当前列消成0

int r,c;
for(r=0,c=0;c<n;c++){
    int t = r;
    for(int i = r;i<n;i++){
        if(fabs(a[i][c])>fabs(a[t][c])) t = i;
    }
    if(fabs(a[t][c]<eps) continue;
    for(int i = c;i<=n;i++) swap(a[t][i],a[r][i]);
    for(int i = n;i>=c;i--) a[r][j]/=a[r][c];
    for(int i = r+1;i<n;i++){
        if(fabs(a[i][c])>eps)
        for(int j = n;j>=c;j--)
            a[i][j] -= a[r][j]*a[i][c];
    }
    r++;
}

if(r<n){
    for(int i = r;i<n;i++){
        if(a[i][n]>eps) return  "无解";
        else return "有无穷多组解";
    }
}
for(int i = n-1;i>=0;i--){
    for(int j =i+1;j<n;j++){
        a[i][n] -= a[i][j] * a[j][n];
    }
}

全部评论

相关推荐

Ncsbbss:又想干活又想要工资,怎么什么好事都让你占了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务