【问题标题】:Solve linear equation system by given LU decomposition and vector of constants通过给定的LU分解和常数向量求解线性方程组
【发布时间】:2013-05-24 01:49:12
【问题描述】:

给定 LU LU decomposition 和常量向量 b 这样 LU*x=b ,是否有任何内置函数可以找到 x ?意思是 -

X = functionName(L,U,b) 

请注意,在LU 中,我们都在处理可以直接由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)。它适用于任何人吗?

【问题讨论】:

  • 你的向量和矩阵是符号的吗?如果是这样,您需要在问题中详细说明。
  • 另外,mldivideoverloaded for symbolic systems,但不会完全一样。
  • 什么是“矩阵符号”?
  • linalg::matlinsolveLUSymbolic Toolbox 中。如果您的LU 是浮点值,而不是通过symsyms 创建的,那么linalg::matlinsolveLU 无论如何都不会适合您。
  • @URL87:我认为您将数字解决方案与符号解决方案混淆了......

标签: matlab linear-algebra matrix-decomposition matrix-factorization


【解决方案1】:

我想这就是你要找的东西:

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,它实现了QR decomposition,而不是使用LU 分解。 qr可以直接解决A*x = b类型的问题,效率更高。另请查看linsolve。对于符号系统,您可能仍然可以使用mldivide,或在 MuPAD 中尝试linalg::matlinsolveLU

【讨论】:

  • 感谢@Amro 的链接。
【解决方案2】:

如果你有:

A = rand(3);
b = rand(3,1);

那么系统的解可以简单地计算为:

x = A\b

或者如果你已经有 A 的 LU 分解,那么:

[L,U] = lu(A);
xx = U\(L\b)

mldivide 函数是 smart enough,用于检测矩阵是否为三角形并相应地选择算法(向前/向后替换)

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-13
相关资源
最近更新 更多