高斯消元法求解线性方程组

原创 2015年07月10日 17:35:54
local Solve = function(tAb)
    local Output = function()
        local print = print;
        for y=1,#tAb do
            print(table.concat(tAb[y],"\t"));
        end
        print();
    end

    local Choose = function(b)
        local L, V = b, tAb[b][b];
        for l=b+1, #tAb do
            if (tAb[l][b] > V) then
                L, V = l, tAb[l][b];
            elseif (-tAb[l][b] > V) then
                L, V = l, tAb[l][b];
            end
        end
        tAb[b], tAb[L] = tAb[L], tAb[b];
        Output();
    end

    for b=1, #tAb-1 do
        Choose(b);
        local Lb = tAb[b];
        for y=b+1, #tAb do
            local Ly = tAb[y];
            local d = Ly[b]/Lb[b];
            for x=b, #Ly do
                Ly[x] = Ly[x] - d * Lb[x];
            end
            Output();
        end
        Output();
    end

    --回算
    local x = {};
    for v=1,#tAb do
        x[v] = 0;
    end

    for v=#tAb,1,-1 do
        local Lv = tAb[v];
        local S = Lv[#Lv];
        for i=(v+1),(#Lv-1) do
            S = S - (Lv[i] * x[i]);
        end
        x[v] = S / Lv[v];
    end

    return x;
end


local tA1 = 
{
    {1,  1,  1,  1, 10},
    {2,  3,  1,  1, 15},
    {3, -1,  2, -1,  3},
    {4,  1, -3,  2,  5},
};

local tA2 = 
{
    { 1, 2, -1, -3},
    { 4, 0,  1,  6},
    {-1, 3, -2, -8},
};

local tA3 = 
{
    {2, 3,11, 5, 2},
    {1, 1, 5, 2, 1},
    {2, 1, 3, 2,-3},
    {1, 1, 3, 3,-3},
};

local r,x = pcall(Solve,tA1);
print("\nx[] = \t" .. table.concat(x,"\t") .. "\n");

local r,x = pcall(Solve,tA2);
print("\nx[] = \t" .. table.concat(x,"\t") .. "\n");

local r,x = pcall(Solve,tA3);
print("\nx[] = \t" .. table.concat(x,"\t") .. "\n");

邝斌的ACM模板(高斯消元法求方程组的解)

本博客整理自邝斌的ACM模板 2.10、高斯消元法求方程组的解 2.10.1 一类开关问题,对 2 取模的 01 方程组 POJ 1681 需要枚举自由变元,找解中 1 个数最少的//对2取模的...
  • qq_38576126
  • qq_38576126
  • 2017年08月13日 15:36
  • 159

高斯消元法(Gauss Elimination) 分析 & 题解 & 模板——czyuan原创

//最近一直在做一个数论专题,后期有待整理,先将有关资料收藏下,在学习高斯消元的时候看了czyuan大牛的此文获益匪浅,czyuan的此份模板可以解决大多高斯问题,当然并不是万能的,其中建立矩阵是难点...
  • duanxian0621
  • duanxian0621
  • 2012年03月29日 21:09
  • 14065

高斯消元法解线性方程组(C++实现)

最近在学数值分析,正好学到求解线性方程组。就自己动手简单实现了一下。关于本算法的原理可以在《数值分析》第5版(李庆扬编),对应于该书的P145页,详细讲解了公式。因本人时间有限,暂时不详细编辑公式,等...
  • qq_26025363
  • qq_26025363
  • 2016年11月03日 23:28
  • 7371

采用GAUSS列主消元法求解线性方程组(MATLAB)

程序清单: %%求解任意线性方程组的解 clc; clear all; format long e disp('线性方程组求解,请输入参数'); n=input('维数n='); A=i...
  • Duke_Laurence
  • Duke_Laurence
  • 2016年10月27日 22:56
  • 1657

高斯列主元消元法mpi实现

列主元法mpi实现 列主元消元法在求解线性方程组时很好的解决了因为计算机本身字长的限制而产生的问题。本文中使用mpi将矩阵分行处理,并将通信量最小化。这是课程作业,学弟学妹们参考参考就好 直接放代...
  • yhf_naive
  • yhf_naive
  • 2017年07月01日 05:38
  • 314

MPI 高斯消元

高斯消元 解方程组的预备工作 将矩阵化为上三角 不分主从线程 每个线程负责一个方程 #include "mpi.h" #include #include typedef struct{ fl...
  • pouloghost
  • pouloghost
  • 2012年08月24日 15:03
  • 3066

求解线性方程组之高斯消元法

// Gauss消去法求解线性方程组 #include #include #include using namespace std; class gauss { private: ...
  • u011378809
  • u011378809
  • 2013年07月22日 11:14
  • 434

高斯消元法——求解线性方程组

学习了《挑程》中的高斯消元法,它是求解最基础的线性方程组(未知数个数和方程个数相等,并且有唯一解)的算法。首先举一个例子:求解如下方程组: ⎧⎩⎨x−2y+3z=6..........①4x−5y+...
  • karry_zzj
  • karry_zzj
  • 2017年08月17日 13:23
  • 265

Python计算——高斯消元法解线性方程组

#!/usr/bin/env python# coding=gb2312# 以上的信息随自己的需要改动吧def print_matrix( info, m ): # 输出矩阵 i = 0; j = 0...
  • nokiapc
  • nokiapc
  • 2014年03月13日 19:49
  • 5762

【计算方法笔记】列高斯消元法解线性方程组

针对齐次方程组解线性方程组AX=b
  • zhulinzhulinlin
  • zhulinzhulinlin
  • 2017年09月27日 21:55
  • 668
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:高斯消元法求解线性方程组
举报原因:
原因补充:

(最多只允许输入30个字)