From: <par...@us...> - 2010-01-10 17:51:21
|
Revision: 6731 http://octave.svn.sourceforge.net/octave/?rev=6731&view=rev Author: paramaniac Date: 2010-01-10 17:51:13 +0000 (Sun, 10 Jan 2010) Log Message: ----------- control-oo: fix bug in lyap/dlyap Modified Paths: -------------- trunk/octave-forge/extra/control-oo/inst/dlyap.m trunk/octave-forge/extra/control-oo/inst/lyap.m trunk/octave-forge/extra/control-oo/src/slsb03md.cc Modified: trunk/octave-forge/extra/control-oo/inst/dlyap.m =================================================================== --- trunk/octave-forge/extra/control-oo/inst/dlyap.m 2010-01-10 16:18:59 UTC (rev 6730) +++ trunk/octave-forge/extra/control-oo/inst/dlyap.m 2010-01-10 17:51:13 UTC (rev 6731) @@ -36,7 +36,7 @@ function x = dlyap (a, b, c) - if (nargin == 2) + if (nargin == 2) # Lyapunov equation na = issquare (a); nb = issquare (b); @@ -53,10 +53,12 @@ error ("lyap: a and b must be of identical size"); endif - x = slsb03md (a, -b, true); # AXA' - X = -B + [x, scale] = slsb03md (a, -b, true); # AXA' - X = -B - elseif (nargin == 3) + x *= scale; + elseif (nargin == 3) # Sylvester equation + n = issquare (a); m = issquare (b); [crows, ccols] = size (c); Modified: trunk/octave-forge/extra/control-oo/inst/lyap.m =================================================================== --- trunk/octave-forge/extra/control-oo/inst/lyap.m 2010-01-10 16:18:59 UTC (rev 6730) +++ trunk/octave-forge/extra/control-oo/inst/lyap.m 2010-01-10 17:51:13 UTC (rev 6731) @@ -36,7 +36,7 @@ function x = lyap (a, b, c) - if (nargin == 2) + if (nargin == 2) # Lyapunov equation na = issquare (a); nb = issquare (b); @@ -53,9 +53,11 @@ error ("lyap: a and b must be of identical size"); endif - x = slsb03md (a, -b, false); # AX + XA' = -B + [x, scale] = slsb03md (a, -b, false); # AX + XA' = -B - elseif (nargin == 3) + x *= scale; + + elseif (nargin == 3) # Sylvester equation n = issquare (a); m = issquare (b); Modified: trunk/octave-forge/extra/control-oo/src/slsb03md.cc =================================================================== --- trunk/octave-forge/extra/control-oo/src/slsb03md.cc 2010-01-10 16:18:59 UTC (rev 6730) +++ trunk/octave-forge/extra/control-oo/src/slsb03md.cc 2010-01-10 17:51:13 UTC (rev 6731) @@ -136,6 +136,7 @@ // return values retval(0) = c; + retval(1) = octave_value (scale); } return retval; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |