如何解决不一致的系统



我是MATLAB的新手,我想用它来求解Ax = b系统。我是在纸上写的,我想知道这是否正确。问题是,这是一个不一致的系统。

A=sym([3/sqrt(29) 3/sqrt(29) -1 0 0 0; 
1 -1 0 0 0 0; 
4/sqrt(29) 4/sqrt(29) 0 0 0 0; 
0 0 1 9/sqrt(101) 0 0; 
0 0 0 2/sqrt(101) -1/sqrt(5) 1/sqrt(5);
0 0 0 4/sqrt(101) 2/sqrt(5) 2/sqrt(5)])
c=sym([0 0 -a 0 0 -a])

当我尝试用找到解决方案时

A/c

我得到:

Warning: The system is inconsistent. Solution does not exist. 

我在网上找到了很多关于这方面的主题,但没有解决方案。这是否意味着MATLAB无法处理它,或者有办法得到解决方案?

不幸的是,系统没有得到正确解决。您需要使用ldivide)运算符,而不是rdivide/)。做A/c相当于A*c^{-1},这不是你想要的。要求解系统的解决方案,必须执行A^{-1}*c或等效的Ac。此外,为了确保获得正确的解决方案,c需要是列向量,而不是行向量。我还假设a是一个常量,它在当前代码中没有声明。

因此:

syms a; %// Added
A=sym([3/sqrt(29) 3/sqrt(29) -1 0 0 0; 
1 -1 0 0 0 0; 
4/sqrt(29) 4/sqrt(29) 0 0 0 0; 
0 0 1 9/sqrt(101) 0 0; 
0 0 0 2/sqrt(101) -1/sqrt(5) 1/sqrt(5);
0 0 0 4/sqrt(101) 2/sqrt(5) 2/sqrt(5)]);
c=sym([0 0 -a 0 0 -a]).'; %// Change
out = Ac;

我得到:

out =
   -(29^(1/2)*a)/8
   -(29^(1/2)*a)/8
          -(3*a)/4
  (101^(1/2)*a)/12
    -(5^(1/2)*a)/4
 -(5*5^(1/2)*a)/12

相关内容

  • 没有找到相关文章

最新更新