理解Matlab linsolve

时间:2014-09-26 09:20:56

标签: matlab linear-algebra equation-solving

1. A \ b和linsolve(A,b)之间有什么区别(不同算法?)?

2.解决A * x = b和A' * A * x = A' * b的区别是什么?更准确?

第二个等式来自Least squares approximation

简单的matlab测试代码:

A=[1,2,3;4,5,6;7,8,9]
b=[1;2;3]

x1= A\b
x1 =

   -0.3333
    0.6667
         0
x2=linsolve(A,b)
x2 =

   -0.3333
    0.6667
         0
x3=linsolve(A'*A,A'*b)
x3 =

    0.2487
   -0.4974
    0.5820
x4=(A'*A)\(A'*b)
x4 =

   -0.8182
    1.6364
   -0.4848

阅读linsolve文档我发现

  

[X,R] = linsolve(A,B)求解矩阵方程AX = B并返回   如果A是方阵,则A的条件数的倒数,   和否则A的等级。

所以使用R我们可以测试精度(第二个问题)?

1 个答案:

答案 0 :(得分:2)

关于您的第一个问题:可以将mldivdex = A\B)视为linsolve函数的包装。函数linsolve允许用户指定有关矩阵A的信息,这可以帮助Matlab选择更合适(更快)的算法来解决系统问题。然而,通过使用linsolve,它很容易搞砸。引自Matlab的documentation

  

如果A没有您在opts中指定的属性,则linsolve返回不正确的结果,并且不会返回错误消息。如果您不确定A是否具有指定的属性,请改用mldivide。

如果您在执行算法时可以100%确定地评估矩阵A的类型,那么请转到linsolve。否则使用mldivide