Crout分解法 | matlab

本文介绍了一种使用Crout分解法求解线性方程组的方法,详细展示了如何将系数矩阵分解为下三角矩阵L和单位上三角矩阵U,再通过前向和后向替换求得方程组的解。以具体实例[A,b]说明了整个求解过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function [x, L, U]=Crout(A, b)
% Crout分解法求解线性方程组
% A为系数矩阵,b为常数项列
N = size(A);
n = N(1);
L = zeros(n, n); % 下三角矩阵
U = eye(n, n);   % 上三角矩阵
L(1:n, 1) = A(1:n, 1);    % L的第一列
U(1, 1:n) = A(1, 1:n) / L(1, 1);  % U的第一行
for k = 2:n
    for i = k:n
        % L的第k列
        L(i, k) = A(i, k) - L(i, 1:(k-1)) * U(1:(k-1), k);
    end
    for j = (k+1):n
        % U的第k行
        U(k, j) = (A(k, j) - L(k, 1:(k-1)) * U(1:(k-1), j)) / (L(k, k));
    end
end

y = SolveDownTriangle(L ,b);
x = SolveUpTriangle(U, y);
function x=SolveDownTriangle(A, b)
% 求解下三角矩阵Ax=b的解
N = size(A);
n = N(1);
for i = 1:n
    if i>n
        s = A(i, 1:(i-1)) * x(1:(i-1), 1);
    else
        s = 0;
    end 
    x(i, 1) = (b(i) - s) / A(i, i);
end
function x=SolveUpTriangle(A, b)
% 求解上三角矩阵Ax=b的解
N = size(A);
n = N(1);
for i = n:-1:1
    if (i<n)
        s = A(i, (i+1):n) * x((i+1):n, 1);
    else
        s = 0;
    end
    x(i, 1) = (b(i) - s) / A(i, i);
end
A = [3, 2, 0, 0; -1, 3, 2, 0; 0, -1, 3, 2; 0, 0, -1, 3];
b = [7; 11; 15; 9];
[x, L, U] = Crout(A, b)

%=> x = [1.3538, 1.4693, 2.8063, 2.5252]
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值