2

MATLAB 中 A*x=b 的一般解由下式给出

x=A\b

例如

A = [2 -1 1; 1 2 3; 3 0 -1]

A =

     2    -1     1
     1     2     3
     3     0    -1

b = [8; 9; 3]

b =

     8
     9
     3

x = A\b

x =

    2.0000
   -1.0000
    3.0000

系统解决方案怎么样 A*x=0?请帮帮我

奇异矩阵的测试

A=[1 2 3;2 1 4;3 3 7]

A =

     1     2     3
     2     1     4
     3     3     7

>> det(A)

ans =

     0
b=[0;0;0];
>> linsolve(A,b)
Warning: Matrix is close to singular or badly scaled.
         Results may be inaccurate. RCOND = 1.903239e-017.

ans =

     0
     0
     0

@罗伯特·P。

它是否正确?

A=[2 3 1;-1 3 1;1 6 2]

A =

     2     3     1
    -1     3     1
     1     6     2

>> det(A);
>> det(A)

ans =

     0

>> [U S V]=svd(A);
>> x=V(:,end);
>> A*x

ans =

  1.0e-015 *

    0.2220
    0.2220
    0.4441
4

3 回答 3

4

如果有非平凡的解决方案,您可以使用奇异值分解svd来获得x满足:Ax=0

A = [2 -1 1; 2 -1 1; 3 2 1];
[U S V] = svd(A);
x = V(:,end)

x =

  -0.39057
   0.13019
   0.91132

A*x = 

   0
   0
   0
于 2013-10-23T18:10:19.517 回答
2
A = [2 -1 1; 1 2 3; 3 0 -1]
b = [0; 0; 0]
x = A\b

假设“0”代表零向量而不是标量。

于 2013-10-23T17:48:42.410 回答
2

好的,在你的情况下:

>> A = [2 -1 1; 1 2 3; 3 0 -1]

A =

     2    -1     1
     1     2     3
     3     0    -1

>> b = [0; 0; 0]

b =

     0
     0
     0

>> x = A\b

x =

     0
     0
     0

或者您可以使用linsolve

>> linsolve(A,b)

ans =

     0
     0
     0

但是如果det(A==0)你应该使用特征向量对应零特征值,就像这样:

>> A = [2 -1 1; 1 2 3; 3 0 -1]

A =

     2    -1     1
     1     2     3
     3     0    -1

>> b = [0; 0; 0]

b =

     0
     0
     0

>> [v m] = eig(A)

v =

    1.0000    0.4472         0
         0    0.8944         0
         0         0    1.0000


m =

     0     0     0
     0     2     0
     0     0     3

您将有无限数量的解决方案,每个平行于的向量[1 0 0]都是一个解决方案。

于 2013-10-23T17:51:22.163 回答