鉴于L
和U
LU decomposition以及b
常量向量LU*x=b
,是否存在找到x
的内置函数}?意思是 -
X = functionName(L,U,b)
请注意,在L
和U
中,我们处理的是三角矩阵,可以forward and backward substitution直接求解,而无需使用Gaussian elimination过程。
修改:
解决这个线性方程系统应该按照以下步骤 -
1. define y - s.t Ux=y
2. solve Ly=b by forward substitution
3. solve Ux=y by backward substitution
4. return y
编辑2:
我找到了linalg::matlinsolveLU,但我没有尝试,因为我的版本太旧(R2010a
)。它适用于任何人吗?
答案 0 :(得分:5)
如果你有:
A = rand(3);
b = rand(3,1);
然后系统的解决方案可以简单地计算为:
x = A\b
或者,如果您已经分解了A的LU,那么:
[L,U] = lu(A);
xx = U\(L\b)
mldivide
函数为smart enough以检测矩阵为三角形并相应地选择算法(向前/向后替换)
答案 1 :(得分:3)
我认为这就是你要找的东西:
A = rand(3,3); % Random 3-by-3 matrix
b = rand(3,1); % Random 3-by-1 vector
[L,U] = lu(A); % LU decomposition
x = U\(L\b) % Solve system of equations via mldivide (same as x = A\b or x = (L*U)\b)
err = L*U*x-b % Numerical error
使用mldivide
求解方程组。您还可以查看实现qr
而不是使用LU分解的QR decomposition。 qr
可以直接解决A*x = b
类型问题,效率更高。另请参阅linsolve
。对于符号系统,您仍然可以使用mldivide
,或在MuPAD中尝试linalg::matlinsolveLU。