线性方程组 精确解 近似解 算法整理

线性代数方程组 精确解 近似解的几种方法
摘要由CSDN通过智能技术生成

线性方程组
此时我们只讨论当m==n时的情况,即n阶线性方程组,它的系数矩阵为n+1列为b。
note:
代码假设输入格式为n,代表n阶行列式,随后紧跟着n行,每行n+1个数,代表系数矩阵。

  1. 求精确解的方法:
    1.1 高斯消元法:
//Gauss消元
#include <iostream>

using namespace std;

double matrix[20][21], x[20];
int n;

void print_matrix() {
    for(int i = 1; i <= n; i++) {
        for(int j = 1; j <= n+1; j++)
            cout << matrix[i][j] << " ";
        cout << endl;
    }
    cout << endl;
}

int main() {


    //输入
    cin >> n;
    for(int i = 1; i <= n; i++)
        for(int j = 1; j <= n+1; j++)
            cin >> matrix[i][j];
    print_matrix();

    //消元过程
    for(int i = 1; i <= n-1; i++) {
        for(int j = i+1; j <= n; j++) {
  //第j行
            double l = matrix[j][i] / matrix[i][i];
            cout << "l[" << j << "][" << i << "] = " << l << endl;
            for(int k = i; k <= n+1; k++)//j行的每一个元素
                matrix[j][k] = matrix[j][k] - l*matrix[i][k];
            print_matrix();
        }
    }

    //回代过程
    for(int i = n; i >= 1; i--) {
        double sum = 0;
        for(int j = i+1; j <= n; j++)//求累加和
            sum += matrix[i][j] * x[j];
        x[i] = (matrix[i][n+1] - sum) / matrix[i][i];
    }
    for(int i = 1; i <= n; i++)
        cout << 
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值