zoukankan      html  css  js  c++  java
  • 高斯消元

    如何既复习线性代数又复习C语言?

    #define _CRT_SECURE_NO_WARNINGS
    #include <stdio.h>
    #include <math.h>
    int main() {
        float a[100][100],b[100];
        int i, j, n;
        //intro
        printf("///////////////////////////////////////
    ");
        printf("/*      Programmed by Cherry Ye      */
    ");
        printf("/*    只能计算有唯一解的线性方程组   */
    ");
        printf("///////////////////////////////////////
    
    ");
        //输入
        printf("有n个未知数,n=");
        scanf("%d", &n);
        printf("请输入方程组的增广矩阵:
    ");
        for (i = 1; i <= n; i++) {
            for (j = 1; j <= n; j++) {
                scanf("%f", &a[i][j]);
            }
            scanf("%f", &b[i]);
        }
        printf("
    ");
        printf("您输入的方程组是:
    ");
        for (i = 1; i <= n; i++) {
            printf("%5.2fx%d", a[i][1], 1);
            for (j = 2; j <= n; j++) {
                if (a[i][j] < 0) printf("-%5.2fx%d", -a[i][j], j);
                else printf("+%5.2fx%d", a[i][j], j);
            }
            printf("=%5.2f
    ", b[i]);
        }
        printf("
    ");
        //消元
        float k;
        int t;
        for (i = 1; i <= n-1; i++) {
            for (j = i + 1; j <= n; j++) {
                k = a[j][i] / a[i][i];
                for (t = i; t <= n; t++) {
                    a[j][t] -= a[i][t] * k;
                }
                b[j] -= b[i] * k;
            }
        }
        printf("消元后的方程组是:
    ");
        for (i = 1; i <= n; i++) {
            printf("%5.2fx%d", a[i][1], 1);
            for (j = 2; j <= n; j++) {
                if (a[i][j] < 0) printf("-%5.2fx%d", -a[i][j], j);
                else printf("+%5.2fx%d", a[i][j], j);
            }
            printf("=%5.2f
    ", b[i]);
        }
        printf("
    ");
        //计算答案
        float ans[100];
        for (i = n; i >= 1; i--) {
            ans[i] = b[i] / a[i][i];
            for (j = n - 1; j >= 1; j--) {
                b[j] -= a[j][i] * ans[i];
            }
        }
        //输出答案
        printf("方程的解为:
    ");
        for (i = 1; i <= n; i++) {
            printf("x%d=%5.2f
    ", i, ans[i]);
        }
        return 0;
    }
    高斯消元
  • 相关阅读:
    Linux安装/卸载软件教程
    X-Window/GNOME/KDE的关系
    GNU和GPL的区别/关系
    VSS迁移详细教程
    VSS+SourceAnywhere for VSS搭建版本控制系统教程
    Windows添加用户和组命令
    Windows开启远程桌面服务(Win10)
    rdesktop安装教程
    Spring控制反转(依赖注入)的最简单说明
    TortioseSVN切换账号教程
  • 原文地址:https://www.cnblogs.com/Sky-Grey/p/4845209.html
Copyright © 2011-2022 走看看