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

原创 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");
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

#!/usr/bin/env python# coding=gb2312# 以上的信息随自己的需要改动吧def print_matrix( info, m ): # 输出矩阵 i = 0; j = 0...

亚当高斯消元法解线性方程组

PROGRAM hwIMPLICIT NONEINTEGER,PARAMETER::DBL=SELECTED_REAL_KIND(p=13)REAL(KIND=DBL),ALLOCATABLE,DIM...

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

一、高斯消去法的基本思想     例1. 解方程组:                   解 方程组矩阵形式...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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