gpt4 book ai didi

matlab - 解决*稀疏*上三角系统

转载 作者:太空宇宙 更新时间:2023-11-03 19:33:51 31 4
gpt4 key购买 nike

如果我想求解一个完整上三角系统,我可以调用linsolve(A,b,'UT')。然而,这目前不支持稀疏矩阵。我该如何克服这个问题?

最佳答案

UT 和 LT 系统是最容易解决的系统之一。读一读on the wiki关于它。知道这一点,就很容易编写自己的 UT 或 LT 求解器:

%# some example data
A = sparse( triu(rand(100)) );
b = rand(100,1);

%# solve UT system by back substitution
x = zeros(size(b));
for n = size(A,1):-1:1
x(n) = (b(n) - A(n,n+1:end)*x(n+1:end) ) / A(n,n);
end

LT 系统的过程非常相似。

话虽如此,使用 Matlab 的反斜杠运算符通常更容易、更快捷:

x = A\b

这也适用于备用矩阵,正如 nate 已经指出的那样。

请注意,此运算符还求解具有非正方形 A 的 UT 系统或者如果 A在主对角线上有一些元素等于零(或 < eps )。它以最小二乘法解决了这些情况,这对您来说可能是理想的,也可能不是。您可以在执行求解之前检查这些情况:

if size(A,1)==size(A,2) && all(abs(diag(A)) > eps)
x = A\b;
else
%# error, warning, whatever you want
end

通过键入阅读有关(反)斜杠运算符的更多信息

>> help \

>> help slash

在 Matlab 命令提示符下。

关于matlab - 解决*稀疏*上三角系统,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12765184/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com