Octave能:用很多解或没有解求解线性系统吗


  1. Octave能识别没有解决方案的线性系统并发出这样的信息吗
  2. Octave能否"求解"具有许多解的线性系统并描述解集

这里有两个倍频程输出的例子,对我没有帮助。有没有其他方法可以向倍频程询问所需的输出?

无解决方案:

octave:13> A=[1,1,1;1,1,1] 
A =   
   1   1   1
   1   1   1   
octave:14> b=[0;1]
b =    
   0
   1
octave:15> Ab
ans =    
   0.16667
   0.16667
   0.16667

无穷多解决方案:取自(http://joshua.smcvt.edu/linearalgebra/book.pdf)2.13(第16页(。

octave:19> M=[2,1,0,-1,0;0,1,0,1,1;1,0,-1,2,0]
M =   
   2   1   0  -1   0
   0   1   0   1   1
   1   0  -1   2   0
octave:20> n=[4;4;0]
n =    
   4
   4
   0
octave:21> Mn
ans =    
   0.761905
   2.380952
   0.571429
  -0.095238
   1.714286
Books Solution:
{ [x;y;z;w;u] = 
  [0; 4; 0; 0; 0] + [1; -1; 3; 1; 0]*w + [0.5; -1; 0.5; 0; 1]*u | w,u (R) 
}
OR
{ (w+(0.5)u, 4-w-u, 3w+(0.5)u, w, u) | w,u (R) }

我不知道是否有任何内置函数可以检查您想要的内容,但对于您的第一个问题,您可以自己编写代码进行检查。您需要查看在将扩充矩阵放入行缩减梯队形式(rref(后是否发生了矛盾。您可以通过查看是否对于任何一行,所有变量都为0,但常量不为0来实现这一点。这意味着0*x1+0*x2+。。。0*xn不等于零(矛盾(。我相信下面的代码检查的正是

%function [feasible, x] = isfeasible(A,b)
%checks if Ax = b is feasible (a solution exists)
%and returns the solution if it exits
%input
%A: M x N matrix representing the variables in each equation, with one equation per row
%b: N X 1 vector of the constants
%output
%feasible: 1 if a solution exists, 0 otherwise
%x: N x 1 vector containing the values of the variables
function [feasible, x] = isfeasible(A,b)
  feasible = 1; %assume function is feasible
  Rref = rref([A,b]); %put the augmented matrix into row reduced echelon form
  x = Rref(:,end); %these are the values that the variables should be to solve the set of equations
  variableSums = sum(abs(Rref(:,1:(end-1))),2);
  if(any((variableSums == 0) & (abs(x) ~= 0))) %a contradiction has occurred.
    feasible = 0; %this means that 0 * all the variables is not 0
  endif
endfunction 

至于你的第二个问题,如果在将增广矩阵[A,b]放入行缩减梯队形式后,任何一行都有超过1列(不包括最后一列(的非零值,那么你的方程组有不止一个解。Octave可以解决这个问题,并且可以表征解的集合。你所要做的就是rref([A,b](并读取你得到的解决方案。

在你的例子中使用rref,我发现rref([M,n](=

      x         y         z         w         u      constant
   1.00000   0.00000   0.00000  -1.00000  -0.50000   0.00000
   0.00000   1.00000   0.00000   1.00000   1.00000   4.00000
   0.00000   0.00000   1.00000  -3.00000  -0.50000  -0.00000

这意味着

x=w+.5*u

y=4-w-u

z=3*w+.5*u

相关内容

  • 没有找到相关文章

最新更新