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;
    }
    高斯消元
  • 相关阅读:
    进程同步&&进程互斥
    CHAP4 字符串和格式化输入输出
    记录学习到的内容
    数据链路层 差错控制
    二叉树的顺序存储
    Java复习笔记
    Stream流
    函数式接口
    网络编程
    接口,多态,抽象类总结
  • 原文地址:https://www.cnblogs.com/Sky-Grey/p/4845209.html
Copyright © 2011-2022 走看看