From sources-request at octave dot org Fri Jun 18 05:40:08 2004 Subject: Re: Patch for documentation From: David Bateman To: David Bateman Cc: Federico Zenith , sources@octave.org Date: Fri, 18 Jun 2004 12:35:33 +0200 --mYCpIKhGyMATD0i+ Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Ok, there were a couple of build problems with this patch * qz.cc \, -> \\, * buildssic.m there is some tex code that is not protected by at iftex @end iftex and in fact won't build in any case since its math and is not in $$ $$ either * sysappend.m at item {} -> @item * is_digital.m at var {} -> @var{} After that it builds correctly. Then I checked that the texinfo help parsed correctly from within octave. Problems were * is_stabilizable gives the copyright (However it did before Fredrico's patch) all other functions parsed correctly. Most of the changes were then just documentation cleanups rather than fundamental changes in the documentation. There were also lots of splitting of stuff into texinfo and tex versions that didn't change the sense of the documentation. Other doc changes which all make sense are * remove doc on prefer_one_zero_indexing * define what is being built in the function obsv * describe c2d function that had virtually no desciption * is_digital describe function The one function changed in the patch * definition of vander function changed. This is perhaps the one thing that needs to be questioned carefully in this patch. Do we want to change the definition like this? Why not allow both definitions with a flag? So I'd suggest splitting out the changes to vander.m and treat them seperately after a bit of further consideration. After that I'd suggest that this patch is accepted. I attach updated patches with the split out of vander.m as suggestted, after this I'd suggest the patch is accepted. These apply against 2.1.57, but mostly apply cleanly against the cvs version. The problems are patching file scripts/control/system/is_observable.m Hunk #1 FAILED at 21. 1 out of 1 hunk FAILED -- saving rejects to file scripts/control/system/is_observable.m.rej patching file src/pr-output.cc Hunk #1 FAILED at 2142. 1 out of 1 hunk FAILED -- saving rejects to file src/pr-output.cc.rej These should be pretty easy to resolve by hand when applying the patch But Fredrico, you really need to supply the changelog entry as I'm not sure of all that you've done. For example * interpreter/arith.txi: Move function around in documentation to be in a more logical order * interpreter/control.txi: Use at acronym where appropriate * interpreter/expr.txi: Remove section on prefer_zero_one_indexing * interpreter/func.txi: Fix typos. etc Without that John won't accept the patch. Cheers David -- David Bateman David dot Bateman at motorola dot com Motorola CRM +33 1 69 35 48 04 (Ph) Parc Les Algorithmes, Commune de St Aubin +33 1 69 35 77 01 (Fax) 91193 Gif-Sur-Yvette FRANCE The information contained in this communication has been classified as: [x] General Business Information [ ] Motorola Internal Use Only [ ] Motorola Confidential Proprietary --mYCpIKhGyMATD0i+ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=patch *** octave-2.1.57.orig/doc/interpreter/arith.txi 2002-11-12 04:13:42.000000000 +0100 --- octave-2.1.57/doc/interpreter/arith.txi 2004-06-18 10:21:01.000000000 +0200 *************** *** 108,137 **** at DOCSTRING(sin) at DOCSTRING(cos) at DOCSTRING(tan) at DOCSTRING(sec) at DOCSTRING(csc) - at DOCSTRING(cot) at DOCSTRING(asin) at DOCSTRING(acos) at DOCSTRING(atan) at DOCSTRING(asec) at DOCSTRING(acsc) - at DOCSTRING(acot) at DOCSTRING(sinh) at DOCSTRING(cosh) at DOCSTRING(tanh) at DOCSTRING(sech) at DOCSTRING(csch) - at DOCSTRING(coth) at DOCSTRING(asinh) at DOCSTRING(acosh) at DOCSTRING(atanh) at DOCSTRING(asech) at DOCSTRING(acsch) - at DOCSTRING(acoth) Each of these functions expect a single argument. For matrix arguments, they work on an element by element basis. For example, --- 108,137 ---- at DOCSTRING(sin) at DOCSTRING(cos) at DOCSTRING(tan) + at DOCSTRING(cot) at DOCSTRING(sec) at DOCSTRING(csc) at DOCSTRING(asin) at DOCSTRING(acos) at DOCSTRING(atan) + at DOCSTRING(acot) at DOCSTRING(asec) at DOCSTRING(acsc) at DOCSTRING(sinh) at DOCSTRING(cosh) at DOCSTRING(tanh) + at DOCSTRING(coth) at DOCSTRING(sech) at DOCSTRING(csch) at DOCSTRING(asinh) at DOCSTRING(acosh) at DOCSTRING(atanh) + at DOCSTRING(acoth) at DOCSTRING(asech) at DOCSTRING(acsch) Each of these functions expect a single argument. For matrix arguments, they work on an element by element basis. For example, *** octave-2.1.57.orig/doc/interpreter/control.txi 2002-11-12 03:52:50.000000000 +0100 --- octave-2.1.57/doc/interpreter/control.txi 2004-06-18 10:21:01.000000000 +0200 *************** *** 62,68 **** the system structure access m-files be used ( at pxref{sysinterface}) dot Some elements of the data structure are absent depending on the internal system representation(s) used. More than one system representation ! can be used for SISO systems; the OCST m-files ensure that all representations used are consistent with one another. at DOCSTRING(sysrepdemo) --- 62,68 ---- the system structure access m-files be used ( at pxref{sysinterface}) dot Some elements of the data structure are absent depending on the internal system representation(s) used. More than one system representation ! can be used for at acronym{SISO} systems; the OCST m-files ensure that all representations used are consistent with one another. at DOCSTRING(sysrepdemo) *** octave-2.1.57.orig/doc/interpreter/expr.txi 2003-07-12 00:21:17.000000000 +0200 --- octave-2.1.57/doc/interpreter/expr.txi 2004-06-18 10:21:01.000000000 +0200 *************** *** 67,141 **** at noindent and select the first row of the matrix. ! A special form of indexing may be used to select elements of a matrix or ! vector. If the indices are vectors made up of only ones and zeros, the ! result is a new matrix whose elements correspond to the elements of the ! index vector that are equal to one. For example, ! at example ! at group ! a = [1, 2; 3, 4]; ! a ([1, 0], :) ! at end group ! at end example ! ! at noindent ! selects the first row of the matrix at code{a} dot ! ! This operation can be useful for selecting elements of a matrix based on ! some condition, since the comparison operators return matrices of ones ! and zeros. ! ! This special zero-one form of indexing leads to a conflict with the ! standard indexing operation. For example, should the following ! statements ! ! at example ! at group ! a = [1, 2; 3, 4]; ! a ([1, 1], :) ! at end group ! at end example ! ! at noindent ! return the original matrix, or the matrix formed by selecting the first ! row twice? Although this conflict is not likely to arise very often in ! practice, you may select the behavior you prefer by setting the built-in ! variable at code{prefer_zero_one_indexing} dot ! ! at c XXX FIXME XXX -- this variable no longer exists! ! ! at defvr {Built-in Variable} prefer_zero_one_indexing ! If the value of at code{prefer_zero_one_indexing} is nonzero, Octave ! will perform zero-one style indexing when there is a conflict with the ! normal indexing rules. at xref{Index Expressions}. For example, given a ! matrix ! ! at example ! a = [1, 2, 3, 4] ! at end example ! ! at noindent ! with at code{prefer_zero_one_indexing} is set to nonzero, the ! expression ! ! at example ! a ([1, 1, 1, 1]) ! at end example ! ! at noindent ! results in the matrix at code{[ 1, 2, 3, 4 ]}. If the value of ! at code{prefer_zero_one_indexing} set to 0, the result would be ! the matrix at code{[ 1, 1, 1, 1 ]}. ! ! In the first case, Octave is selecting each element corresponding to a ! at samp{1} in the index vector. In the second, Octave is selecting the ! first element multiple times. ! ! The default value for at code{prefer_zero_one_indexing} is 0. ! at end defvr ! ! Finally, indexing a scalar with a vector of ones can be used to create a vector the same size as the index vector, with each element equal to the value of the original scalar. For example, the following statements --- 67,75 ---- at noindent and select the first row of the matrix. ! at c FIXED -- sections on variable prefer_zero_one_indexing were removed ! Indexing a scalar with a vector of ones can be used to create a vector the same size as the index vector, with each element equal to the value of the original scalar. For example, the following statements *************** *** 890,896 **** at end example at noindent ! deletes the first, third, and fifth columns. An assignment is an expression, so it has a value. Thus, at code{z = 1} as an expression has the value 1. One consequence of this is that you --- 824,830 ---- at end example at noindent ! deletes the first, second, and fifth columns. An assignment is an expression, so it has a value. Thus, at code{z = 1} as an expression has the value 1. One consequence of this is that you *** octave-2.1.57.orig/doc/interpreter/func.txi 2004-01-23 05:13:56.000000000 +0100 --- octave-2.1.57/doc/interpreter/func.txi 2004-06-18 10:21:01.000000000 +0200 *************** *** 374,380 **** at defvr {Keyword} return When Octave encounters the keyword at code{return} inside a function or ! script, it returns control to be caller immediately. At the top level, the return statement is ignored. A at code{return} statement is assumed at the end of every function definition. at end defvr --- 374,380 ---- at defvr {Keyword} return When Octave encounters the keyword at code{return} inside a function or ! script, it returns control to the caller immediately. At the top level, the return statement is ignored. A at code{return} statement is assumed at the end of every function definition. at end defvr *************** *** 666,673 **** at example at group - ColumnVector dx (3); - dx(0) = 77.27 * (x(1) - x(0)*x(1) + x(0) - 8.375e-06*pow (x(0), 2)); --- 666,671 ---- *************** *** 678,684 **** at end example at noindent ! define the right hand side of the differential equation. Finally, we can return at code{dx}: at example --- 676,682 ---- at end example at noindent ! define the right-hand side of the differential equation. Finally, we can return at code{dx}: at example *** octave-2.1.57.orig/doc/interpreter/io.txi 2003-07-09 04:21:11.000000000 +0200 --- octave-2.1.57/doc/interpreter/io.txi 2004-06-18 10:21:02.000000000 +0200 *************** *** 124,130 **** written by the at code{save} command can be controlled using the built-in variables at code{default_save_format} and @code{save_precision}. ! Note that Octave can not yet save or load structure variables or any user-defined types. at DOCSTRING(save) --- 124,130 ---- written by the at code{save} command can be controlled using the built-in variables at code{default_save_format} and @code{save_precision}. ! Note that Octave cannot yet save or load structure variables or any user-defined types. at DOCSTRING(save) *** octave-2.1.57.orig/doc/interpreter/plot.txi 2003-06-04 19:43:15.000000000 +0200 --- octave-2.1.57/doc/interpreter/plot.txi 2004-06-18 10:21:02.000000000 +0200 *************** *** 44,50 **** at noindent and may be used to specify the ranges for the axes of the plot, ! independent of the actual range of the data. The range for the y axes and any of the individual limits may be omitted. A range at code{[:]} indicates that the default limits should be used. This normally means that a range just large enough to include all the data points will be --- 44,50 ---- at noindent and may be used to specify the ranges for the axes of the plot, ! independent of the actual range of the data. The range for the y axis and any of the individual limits may be omitted. A range at code{[:]} indicates that the default limits should be used. This normally means that a range just large enough to include all the data points will be *** octave-2.1.57.orig/doc/interpreter/struct.txi 2003-02-23 03:16:53.000000000 +0100 --- octave-2.1.57/doc/interpreter/struct.txi 2004-06-18 10:21:02.000000000 +0200 *************** *** 103,109 **** at { b = at { ! c = at } at } at end group --- 103,112 ---- at { b = at { ! c = ! at { ! d: 1x1 struct ! at } at } at } at end group *** octave-2.1.57.orig/scripts/control/base/analdemo.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/base/analdemo.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 32,38 **** k=0; while(k > 8 || k < 1) k = menu("Octave State Space Analysis Demo", ... ! "System grammians (gram, dgram)", ... "System zeros (tzero)", ... "Continuous => Discrete and Discrete => Continuous conversions (c2d,d2c)", ... "Algebraic Riccati Equation (are, dare)", ... --- 32,38 ---- k=0; while(k > 8 || k < 1) k = menu("Octave State Space Analysis Demo", ... ! "System gramians (gram, dgram)", ... "System zeros (tzero)", ... "Continuous => Discrete and Discrete => Continuous conversions (c2d,d2c)", ... "Algebraic Riccati Equation (are, dare)", ... *************** *** 54,68 **** c=[1, -1.5, 2; 6, -9.8, 1] d=0 prompt ! disp("\nThe discrete controllability grammian is computed as follows:"); ! cmd = "grammian = dgram(a, b);"; run_cmd; disp("Results:\n"); ! grammian = dgram(a,b) disp("Variable Description:\n"); ! disp("grammian => discrete controllability grammian"); disp("a, b => a and b matrices of discrete time system\n"); ! disp("A dual approach may be used to compute the observability grammian."); prompt clc --- 54,68 ---- c=[1, -1.5, 2; 6, -9.8, 1] d=0 prompt ! disp("\nThe discrete controllability gramian is computed as follows:"); ! cmd = "gramian = dgram(a, b);"; run_cmd; disp("Results:\n"); ! gramian = dgram(a,b) disp("Variable Description:\n"); ! disp("gramian => discrete controllability gramian"); disp("a, b => a and b matrices of discrete time system\n"); ! disp("A dual approach may be used to compute the observability gramian."); prompt clc *************** *** 76,90 **** c=[1, -1.1, 7; 3, -9.8, 2] d=0 prompt ! disp("\nThe continuous controllability grammian is computed as follows:"); ! cmd = "grammian = gram(a, b);"; run_cmd; disp("Results:\n"); ! grammian = gram(a,b) disp("Variable Description:\n"); ! disp("grammian => continuous controllability grammian"); disp("a, b => a and b matrices of continuous time system\n"); ! disp("A dual approach may be used to compute the observability grammian."); prompt clc --- 76,90 ---- c=[1, -1.1, 7; 3, -9.8, 2] d=0 prompt ! disp("\nThe continuous controllability gramian is computed as follows:"); ! cmd = "gramian = gram(a, b);"; run_cmd; disp("Results:\n"); ! gramian = gram(a,b) disp("Variable Description:\n"); ! disp("gramian => continuous controllability gramian"); disp("a, b => a and b matrices of continuous time system\n"); ! disp("A dual approach may be used to compute the observability gramian."); prompt clc *** octave-2.1.57.orig/scripts/control/base/are.m 2002-08-09 20:58:13.000000000 +0200 --- octave-2.1.57/scripts/control/base/are.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,28 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} are (@var{a}, @var{b}, @var{c}, @var{opt}) ! ## Solve the algebraic Riccati equation ## at iftex ## at tex ## $$ ! ## A^TX + XA - XBX + C = 0 ## $$ ## at end tex ## at end iftex --- 17,28 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{x} =} are (@var{a}, @var{b}, @var{c}, @var{opt}) ! ## Solve the Algebraic Riccati Equation ## at iftex ## at tex ## $$ ! ## A^{ \rm T }\,X + X\,A - X\,B\,X + C = 0 ## $$ ## at end tex ## at end iftex *************** *** 37,56 **** ## for identically dimensioned square matrices ## at table @var ## at item a ! ## at var{n}x@var{n} matrix. ## at item b ! ## at var{n}x@var{n} matrix or @var{n}x@var{m} matrix; in the latter case ! ## at var{b} is replaced by @math{b:=b*b'}. ## at item c ! ## at var{n}x@var{n} matrix or @var{p}x@var{m} matrix; in the latter case ! ## at var{c} is replaced by @math{c:=c'*c}. ## at item opt ## (optional argument; default = at code{"B"}): ## String option passed to at code{balance} prior to ordered Schur decomposition. ## at end table ## ! ## at strong{Outputs} ! ## at var{x}: solution of the ARE. ## ## at strong{Method} ## Laub's Schur method (IEEE Transactions on --- 37,59 ---- ## for identically dimensioned square matrices ## at table @var ## at item a ! ## at var{n} by @var{n} matrix; ## at item b ! ## at var{n} by @var{n} matrix or @var{n} by @var{m} matrix; in the latter case ! ## at var{b} is replaced by @math{b:=b*b'}; ## at item c ! ## at var{n} by @var{n} matrix or @var{p} by @var{m} matrix; in the latter case ! ## at var{c} is replaced by @math{c:=c'*c}; ## at item opt ## (optional argument; default = at code{"B"}): ## String option passed to at code{balance} prior to ordered Schur decomposition. ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item x ! ## solution of the ARE. ! ## at end table ## ## at strong{Method} ## Laub's Schur method (IEEE Transactions on *** octave-2.1.57.orig/scripts/control/base/bode.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/base/bode.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 92,98 **** ## Failure to include a concluding semicolon will yield some garbage ## being printed to the screen ( at code{ans = []}). ## ! ## at item If the requested plot is for an MIMO system, mag is set to ## |@math{||G(jw)||}| or @math{|G( at code{exp}(jwT))|} ## and phase information is not computed. ## at end enumerate --- 92,98 ---- ## Failure to include a concluding semicolon will yield some garbage ## being printed to the screen ( at code{ans = []}). ## ! ## at item If the requested plot is for an @acronym{MIMO} system, mag is set to ## |@math{||G(jw)||}| or @math{|G( at code{exp}(jwT))|} ## and phase information is not computed. ## at end enumerate *** octave-2.1.57.orig/scripts/control/base/__bodquist__.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/base/__bodquist__.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 45,51 **** ## at code{bode}, @code{nichols}, and @code{nyquist} share the same ## introduction, so the common parts are ## in __bodquist__. It contains the part that finds the number of arguments, ! ## determines whether or not the system is SISO, and computes the frequency ## response. Only the way the response is plotted is different between the ## these functions. ## at end deftypefn --- 45,51 ---- ## at code{bode}, @code{nichols}, and @code{nyquist} share the same ## introduction, so the common parts are ## in __bodquist__. It contains the part that finds the number of arguments, ! ## determines whether or not the system is at acronym{SISO}, and computes the frequency ## response. Only the way the response is plotted is different between the ## these functions. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/base/ctrb.m 2002-08-09 20:58:13.000000000 +0200 --- octave-2.1.57/scripts/control/base/ctrb.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,34 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} ctrb (@var{sys}, @var{b}) ## at deftypefnx {Function File} {} ctrb (@var{a}, @var{b}) ! ## Build controllability matrix ## at example ## 2 n-1 ## Qs = [ B AB A B ... A B ] ## at end example ## ## of a system data structure or the pair ( at var{a}, @var{b}). ## ## at strong{Note} @code{ctrb} forms the controllability matrix. ! ## The numerical properties of at code{is_controllable} ## are much better for controllability tests. ## at end deftypefn --- 19,41 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} ctrb (@var{sys}, @var{b}) ## at deftypefnx {Function File} {} ctrb (@var{a}, @var{b}) ! ## Build controllability matrix: ! ## at iftex ! ## at tex ! ## $$ Q_s = [ ~ B ~ A\,B ~ A^2B ~ \ldots ~ A^{n-1}B ~ ] $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example ## 2 n-1 ## Qs = [ B AB A B ... A B ] ## at end example + ## at end ifinfo ## ## of a system data structure or the pair ( at var{a}, @var{b}). ## ## at strong{Note} @code{ctrb} forms the controllability matrix. ! ## The numerical properties of at code{is_controllable()} ## are much better for controllability tests. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/base/damp.m 2002-08-09 20:58:13.000000000 +0200 --- octave-2.1.57/scripts/control/base/damp.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,25 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} damp (@var{p}, @var{tsam}) ## Displays eigenvalues, natural frequencies and damping ratios ! ## of the eigenvalues of a matrix at var{p} or the @math{A}-matrix of a ## system at var{p}, respectively. ## If at var{p} is a system, @var{tsam} must not be specified. ## If at var{p} is a matrix and @var{tsam} is specified, eigenvalues --- 19,25 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} damp (@var{p}, @var{tsam}) ## Displays eigenvalues, natural frequencies and damping ratios ! ## of the eigenvalues of a matrix at var{p} or the @math{A} matrix of a ## system at var{p}, respectively. ## If at var{p} is a system, @var{tsam} must not be specified. ## If at var{p} is a matrix and @var{tsam} is specified, eigenvalues *** octave-2.1.57.orig/scripts/control/base/dare.m 2003-11-14 18:48:46.000000000 +0100 --- octave-2.1.57/scripts/control/base/dare.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,31 **** ## 02111-1307, USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} dare (@var{a}, @var{b}, @var{q}, @var{r}, @var{opt}) ## ## Return the solution, at var{x} of the discrete-time algebraic Riccati ## equation ## at iftex ## at tex ## $$ ! ## A^TXA - X + A^TXB (R + B^TXB)^{-1} B^TXA + Q = 0 ## $$ ## at end tex ## at end iftex --- 18,31 ---- ## 02111-1307, USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{x} =} dare (@var{a}, @var{b}, @var{q}, @var{r}, @var{opt}) ## ## Return the solution, at var{x} of the discrete-time algebraic Riccati ## equation ## at iftex ## at tex ## $$ ! ## A^{ \rm T }XA - X + A^{ \rm T }XB \, (R + B^{ \rm T }XB)^{-1} B^{ \rm T }XA + Q = 0 ## $$ ## at end tex ## at end iftex *************** *** 39,63 **** ## at strong{Inputs} ## at table @var ## at item a ! ## at var{n} by @var{n}. ## ## at item b ! ## at var{n} by @var{m}. ## ## at item q ! ## at var{n} by @var{n}, symmetric positive semidefinite, or @var{p} by @var{n}. ! ## In the latter case at math{q:=q'*q} is used. ## ## at item r ! ## at var{m} by @var{m}, symmetric positive definite (invertible). ## ## at item opt ## (optional argument; default = at code{"B"}): ## String option passed to at code{balance} prior to ordered @var{QZ} decomposition. ## at end table ## ! ## at strong{Outputs} ! ## at var{x} solution of DARE. ## ## at strong{Method} ## Generalized eigenvalue approach (Van Dooren; SIAM J. --- 39,66 ---- ## at strong{Inputs} ## at table @var ## at item a ! ## at var{n} by @var{n} matrix; ## ## at item b ! ## at var{n} by @var{m} matrix; ## ## at item q ! ## at var{n} by @var{n} matrix, symmetric positive semidefinite, or a @var{p} by @var{n} matrix, ! ## In the latter case at math{q:=q'*q} is used; ## ## at item r ! ## at var{m} by @var{m}, symmetric positive definite (invertible); ## ## at item opt ## (optional argument; default = at code{"B"}): ## String option passed to at code{balance} prior to ordered @var{QZ} decomposition. ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item x ! ## solution of DARE. ! ## at end table ## ## at strong{Method} ## Generalized eigenvalue approach (Van Dooren; SIAM J. *************** *** 65,71 **** ## ## See also: Ran and Rodman, "Stable Hermitian Solutions of Discrete ## Algebraic Riccati Equations," Mathematics of Control, Signals and ! ## Systems, Vol 5, no 2 (1992) pp 165-194. ## ## at end deftypefn ## at seealso{balance and are} --- 68,74 ---- ## ## See also: Ran and Rodman, "Stable Hermitian Solutions of Discrete ## Algebraic Riccati Equations," Mathematics of Control, Signals and ! ## Systems, Vol 5, no 2 (1992) pp 165--194. ## ## at end deftypefn ## at seealso{balance and are} *** octave-2.1.57.orig/scripts/control/base/dcgain.m 2002-08-09 20:58:13.000000000 +0200 --- octave-2.1.57/scripts/control/base/dcgain.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 21,27 **** ## Returns dc-gain matrix. If dc-gain is infinite ## an empty matrix is returned. ## The argument at var{tol} is an optional tolerance for the condition ! ## number of the at math{A}-Matrix in @var{sys} (default @var{tol} = 1.0e-10) ## at end deftypefn ## Author: Kai P. Mueller --- 21,27 ---- ## Returns dc-gain matrix. If dc-gain is infinite ## an empty matrix is returned. ## The argument at var{tol} is an optional tolerance for the condition ! ## number of the at math{A} Matrix in @var{sys} (default @var{tol} = 1.0e-10) ## at end deftypefn ## Author: Kai P. Mueller *** octave-2.1.57.orig/scripts/control/base/DEMOcontrol.m 2000-01-14 05:06:37.000000000 +0100 --- octave-2.1.57/scripts/control/base/DEMOcontrol.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 46,52 **** function DEMOcontrol () ! puts ("O C T A V E C O N T R O L S Y S T E M S T O O L B O X") while (1) --- 46,52 ---- function DEMOcontrol () ! puts ("O C T A V E C O N T R O L S Y S T E M S T O O L B O X"); while (1) *** octave-2.1.57.orig/scripts/control/base/dgram.m 2003-07-12 05:31:41.000000000 +0200 --- octave-2.1.57/scripts/control/base/dgram.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,28 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} dgram (@var{a}, @var{b}) ! ## Return controllability grammian of discrete time system ## at example ## x(k+1) = a x(k) + b u(k) ## at end example ! ## ## at strong{Inputs} ## at table @var ## at item a --- 18,35 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} dgram (@var{a}, @var{b}) ! ## Return controllability gramian of discrete time system ! ## at iftex ! ## at tex ! ## $$ x_{k+1} = a\,x_k + b\,u_k $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example ## x(k+1) = a x(k) + b u(k) ## at end example ! ## at end ifinfo ! ## ## at strong{Inputs} ## at table @var ## at item a *************** *** 31,41 **** ## at var{n} by @var{m} matrix ## at end table ## ! ## at strong{Outputs} ## at var{m} (@var{n} by @var{n}) satisfies ## at example ## a m a' - m + b*b' = 0 ## at end example ## at end deftypefn ## Author: A. S. Hodel --- 38,59 ---- ## at var{n} by @var{m} matrix ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item m ! ## at var{n} by @var{n} matrix, satisfies ! ## at iftex ! ## at tex ! ## $$ a\,m\,a^{ \rm T } - m + b\,b^{ \rm T } = 0 $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at var{m} (@var{n} by @var{n}) satisfies ## at example ## a m a' - m + b*b' = 0 ## at end example + ## at end ifinfo + ## at end table ## at end deftypefn ## Author: A. S. Hodel *** octave-2.1.57.orig/scripts/control/base/dlqr.m 2003-11-14 18:48:46.000000000 +0100 --- octave-2.1.57/scripts/control/base/dlqr.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 37,43 **** ## at iftex ## at tex ## $$ ! ## J = \sum x^T Q x + u^T R u ## $$ ## at end tex ## at end iftex --- 37,43 ---- ## at iftex ## at tex ## $$ ! ## J = \sum x^{ \rm T } Q x + u^{ \rm T } R u ## $$ ## at end tex ## at end iftex *************** *** 53,59 **** ## at iftex ## at tex ## $$ ! ## J = \sum x^T Q x + u^T R u + 2 x^T Z u ## $$ ## at end tex ## at end iftex --- 53,59 ---- ## at iftex ## at tex ## $$ ! ## J = \sum x^{ \rm T } Q x + u^{ \rm T } R u + 2 x^{ \rm T } Z u ## $$ ## at end tex ## at end iftex *** octave-2.1.57.orig/scripts/control/base/dlyap.m 2002-08-09 20:58:13.000000000 +0200 --- octave-2.1.57/scripts/control/base/dlyap.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 23,47 **** ## at strong{Inputs} ## at table @var ## at item a ! ## at var{n} by @var{n} matrix ## at item b ## Matrix: at var{n} by @var{n}, @var{n} by @var{m}, or @var{p} by @var{n}. ## at end table ## ! ## at strong{Outputs} ! ## at var{x}: matrix satisfying appropriate discrete time Lyapunov equation. ## Options: ## at itemize @bullet ! ## at item @var{b} is square: solve @code{a x a' - x + b = 0} ## at item @var{b} is not square: @var{x} satisfies either ## at example ## a x a' - x + b b' = 0 ## at end example ## at noindent ## or ## at example ## a' x a - x + b' b = 0, ## at end example ## at noindent ## whichever is appropriate. ## at end itemize --- 23,73 ---- ## at strong{Inputs} ## at table @var ## at item a ! ## at var{n} by @var{n} matrix; ## at item b ## Matrix: at var{n} by @var{n}, @var{n} by @var{m}, or @var{p} by @var{n}. ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item x ! ## matrix satisfying appropriate discrete time Lyapunov equation. ! ## at end table ! ## ## Options: ## at itemize @bullet ! ## at item @var{b} is square: solve ! ## at iftex ! ## at tex ! ## $$ a\,x\,a^{ \rm T } - x + b = 0 $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at code{a x a' - x + b = 0} ! ## at end ifinfo ## at item @var{b} is not square: @var{x} satisfies either + ## at iftex + ## at tex + ## $$ a\,x\,a^{ \rm T } - x + b\,b^{ \rm T } = 0 $$ + ## at end tex + ## at end iftex + ## at ifinfo ## at example ## a x a' - x + b b' = 0 ## at end example + ## at end ifinfo ## at noindent ## or + ## at iftex + ## at tex + ## $$ a^{ \rm T }x\,a - x + b^{ \rm T }b = 0, $$ + ## at end tex + ## at end iftex + ## at ifinfo ## at example ## a' x a - x + b' b = 0, ## at end example + ## at end ifinfo ## at noindent ## whichever is appropriate. ## at end itemize *** octave-2.1.57.orig/scripts/control/base/dre.m 2004-02-20 22:16:53.000000000 +0100 --- octave-2.1.57/scripts/control/base/dre.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,23 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{tvals}, @var{plist}] =} dre (@var{sys}, @var{q}, @var{r}, @var{qf}, @var{t0}, @var{tf}, @var{ptol}, @var{maxits}); ## Solve the differential Riccati equation ## at ifinfo ## at example --- 17,23 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{tvals}, @var{plist}] =} dre (@var{sys}, @var{q}, @var{r}, @var{qf}, @var{t0}, @var{tf}, @var{ptol}, @var{maxits}) ## Solve the differential Riccati equation ## at ifinfo ## at example *************** *** 27,46 **** ## at end ifinfo ## at iftex ## at tex ! ## $$ -{dP \over dt} = A^T P+PA-PBR^{-1}B^T P+Q $$ ! ## $$ P(t_f) = Qf $$ ## at end tex ## at end iftex ! ## for the LTI system sys. Solution of standard LTI ! ## state feedback optimization ## at ifinfo ## at example ! ## min \int_ at {t_0@}^@{t_f@} x' Q x + u' R u dt + x(t_f)' Qf x(t_f) ## at end example ## at end ifinfo ## at iftex ## at tex ! ## $$ \min \int_{t_0}^{t_f} x^T Q x + u^T R u dt + x(t_f)^T Qf x(t_f) $$ ## at end tex ## at end iftex ## optimal input is --- 27,46 ---- ## at end ifinfo ## at iftex ## at tex ! ## $$ -{dP \over dt} = A^{ \rm T } P+PA-PBR^{-1}B^{ \rm T } P+Q $$ ! ## $$ P(t_f) = Q_f $$ ## at end tex ## at end iftex ! ## for the at acronym{LTI} system sys. Solution of ! ## standard at acronym{LTI} state feedback optimization ## at ifinfo ## at example ! ## min int(t0, tf) ( x' Q x + u' R u ) dt + x(tf)' Qf x(tf) ## at end example ## at end ifinfo ## at iftex ## at tex ! ## $$ \min \int_{t_0}^{t_f} x^{ \rm T } Q x + u^{ \rm T } R u dt + x(t_f)^{ \rm T } Q_f x(t_f) $$ ## at end tex ## at end iftex ## optimal input is *************** *** 51,57 **** ## at end ifinfo ## at iftex ## at tex ! ## $$ u = - R^{-1} B^T P(t) x $$ ## at end tex ## at end iftex ## at strong{Inputs} --- 51,57 ---- ## at end ifinfo ## at iftex ## at tex ! ## $$ u = - R^{-1} B^{ \rm T } P(t) x $$ ## at end tex ## at end iftex ## at strong{Inputs} *************** *** 77,91 **** ## at item tvals ## time values at which at var{p}(@var{t}) is computed ## at item plist ! ## list values of at var{p}(@var{t}); @var{plist} @{ @var{ii} @} ! ## is at var{p}(@var{tvals}(@var{ii})) dot ! ## ! ## at item tvals ## at example ! ## is selected so that || - Plist at {ii-1@} | - Plist@{ii-1@} || < Ptol ! ## for ii=2:length(tvals) ## at end example ! ## at end table ## at end deftypefn function [tvals, Plist] = dre (sys, Q, R, Qf, t0, tf, Ptol, maxits) --- 77,97 ---- ## at item tvals ## time values at which at var{p}(@var{t}) is computed ## at item plist ! ## list values of at var{p}(@var{t}); @var{plist} @{ @var{i} @} ! ## is at var{p}(@var{tvals}(@var{i})) ! ## at end table ! ## at var{tvals} is selected so that: ! ## at iftex ! ## at tex ! ## $$ \Vert plist_{i} - plist_{i-1} \Vert < ptol $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example ! ## || - Plist at {i-1@} | - Plist@{i-1@} || < Ptol ## at end example ! ## at end ifinfo ! ## for every at var{i} between 2 and length(@var{tvals}). ## at end deftypefn function [tvals, Plist] = dre (sys, Q, R, Qf, t0, tf, Ptol, maxits) *** octave-2.1.57.orig/scripts/control/base/__freqresp__.m 2003-07-11 20:37:48.000000000 +0200 --- octave-2.1.57/scripts/control/base/__freqresp__.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 33,39 **** ## at strong{Outputs} ## at table @var ## at item @var{out} ! ## vector of finite entries (or at math{||G(j*w)| entries (or @math{||G(j*w)||} for MIMO) ## at item w ## vector of corresponding frequencies ## at end table --- 33,39 ---- ## at strong{Outputs} ## at table @var ## at item @var{out} ! ## vector of finite entries (or at math{||G(j*w)| entries (or @math{||G(j*w)||} for @acronym{MIMO}) ## at item w ## vector of corresponding frequencies ## at end table *** octave-2.1.57.orig/scripts/control/base/gram.m 2003-07-12 05:31:41.000000000 +0200 --- octave-2.1.57/scripts/control/base/gram.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,24 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} gram (@var{a}, @var{b}) ! ## Return controllability grammian at var{m} of the continuous time system ## at math{dx/dt = a x + b u}. ## ## at var{m} satisfies @math{a m + m a' + b b' = 0}. --- 18,24 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} gram (@var{a}, @var{b}) ! ## Return controllability gramian at var{m} of the continuous time system ## at math{dx/dt = a x + b u}. ## ## at var{m} satisfies @math{a m + m a' + b b' = 0}. *** octave-2.1.57.orig/scripts/control/base/impulse.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/base/impulse.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 36,45 **** ## the number of data values. ## ## Both parameters at var{tstop} and @var{n} can be omitted and will be ! ## computed from the eigenvalues of the A-Matrix. ## at end table ## at strong{Outputs} ! ## at var{y}, @var{t}: impulse response ## at end deftypefn ## at seealso{step and __stepimp__} --- 36,50 ---- ## the number of data values. ## ## Both parameters at var{tstop} and @var{n} can be omitted and will be ! ## computed from the eigenvalues of the A Matrix. ## at end table ## at strong{Outputs} ! ## at table @var ! ## at item y ! ## Values of the impulse response. ! ## at item t ! ## Times of the impulse response. ! ## at end table ## at end deftypefn ## at seealso{step and __stepimp__} *** octave-2.1.57.orig/scripts/control/base/lqg.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/base/lqg.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 48,54 **** ## at strong{Outputs} ## at table @var ## at item k ! ## system data structure format LQG optimal controller (Obtain A,B,C ## matrices with at code{sys2ss}, @code{sys2tf}, or @code{sys2zp} as ## appropriate) ## at item p1 --- 48,54 ---- ## at strong{Outputs} ## at table @var ## at item k ! ## system data structure format LQG optimal controller (Obtain A, B, C ## matrices with at code{sys2ss}, @code{sys2tf}, or @code{sys2zp} as ## appropriate) ## at item p1 *** octave-2.1.57.orig/scripts/control/base/lqr.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/base/lqr.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 39,45 **** ## at iftex ## at tex ## $$ ! ## J = \int_0^\infty x^T Q x + u^T R u ## $$ ## at end tex ## at end iftex --- 39,45 ---- ## at iftex ## at tex ## $$ ! ## J = \int_0^\infty x^{ \rm T } Q x + u^{ \rm T } R u ## $$ ## at end tex ## at end iftex *************** *** 59,65 **** ## at iftex ## at tex ## $$ ! ## J = \int_0^\infty x^T Q x + u^T R u + 2 x^T Z u ## $$ ## at end tex ## at end iftex --- 59,65 ---- ## at iftex ## at tex ## $$ ! ## J = \int_0^\infty x^{ \rm T } Q x + u^{ \rm T } R u + 2 x^{ \rm T } Z u ## $$ ## at end tex ## at end iftex *************** *** 107,114 **** ## at end table ## ## at strong{Reference} ! ## Anderson and Moore, OPTIMAL CONTROL: LINEAR QUADRATIC METHODS, ! ## Prentice-Hall, 1990, pp. 56-58 ## at end deftypefn ## Author: A. S. Hodel --- 107,114 ---- ## at end table ## ## at strong{Reference} ! ## Anderson and Moore, Optimal control: linear quadratic methods, ! ## Prentice-Hall, 1990, pp. 56--58. ## at end deftypefn ## Author: A. S. Hodel *** octave-2.1.57.orig/scripts/control/base/ltifr.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/base/ltifr.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,25 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} ltifr (@var{a}, @var{b}, @var{w}) ! ## at deftypefnx {Function File} {} ltifr (@var{sys}, @var{w}) ! ## Linear time invariant frequency response of single input systems ## at strong{Inputs} ## at table @var ## at item a --- 17,26 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{out} =} ltifr (@var{a}, @var{b}, @var{w}) ! ## at deftypefnx {Function File} {@var{out} =} ltifr (@var{sys}, @var{w}) ! ## Linear time invariant frequency response of single-input systems. ! ## ## at strong{Inputs} ## at table @var ## at item a *************** *** 30,41 **** ## at item w ## vector of frequencies ## at end table ! ## at strong{Outputs} ! ## at var{out} ## at example ## -1 ! ## G(s) = (jw I-A) B ## at end example ## for complex frequencies at math{s = jw}. ## at end deftypefn --- 31,52 ---- ## at item w ## vector of frequencies ## at end table ! ## at strong{Output} ! ## at table @var ! ## at item out ! ## frequency response, that is: ! ## at end table ! ## at iftex ! ## at tex ! ## $$ G(j\omega) = (j\omega\,I-A)^{-1}B $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example ## -1 ! ## G(s) = (jw I-A) B ## at end example + ## at end ifinfo ## for complex frequencies at math{s = jw}. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/base/lyap.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/base/lyap.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 39,45 **** ## solution of the Lyapunov equation ## at iftex ## at tex ! ## $$ A^T X + X A + B = 0 $$ ## at end tex ## at end iftex ## at ifinfo --- 39,45 ---- ## solution of the Lyapunov equation ## at iftex ## at tex ! ## $$ A^{ \rm T } X + X A + B = 0 $$ ## at end tex ## at end iftex ## at ifinfo *************** *** 50,56 **** ## If at var{b} is not square, then @code{lyap} returns the solution of either ## at iftex ## at tex ! ## $$ A^T X + X A + B^T B = 0 $$ ## at end tex ## at end iftex ## at ifinfo --- 50,56 ---- ## If at var{b} is not square, then @code{lyap} returns the solution of either ## at iftex ## at tex ! ## $$ A^{ \rm T } X + X A + B^{ \rm T } B = 0 $$ ## at end tex ## at end iftex ## at ifinfo *************** *** 62,68 **** ## or ## at iftex ## at tex ! ## $$ A X + X A^T + B B^T = 0 $$ ## at end tex ## at end iftex ## at ifinfo --- 62,68 ---- ## or ## at iftex ## at tex ! ## $$ A X + X A^{ \rm T } + B B^{ \rm T } = 0 $$ ## at end tex ## at end iftex ## at ifinfo *** octave-2.1.57.orig/scripts/control/base/nichols.m 2003-06-04 19:43:15.000000000 +0200 --- octave-2.1.57/scripts/control/base/nichols.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 47,53 **** ## Descriptive labels are automatically placed. See xlabel, ylable, title, ## and replot. ## ! ## Note: if the requested plot is for an MIMO system, mag is set to ## ||G(jw)|| or ||G(exp(jwT))|| and phase information is not computed. ## at end deftypefn --- 47,53 ---- ## Descriptive labels are automatically placed. See xlabel, ylable, title, ## and replot. ## ! ## Note: if the requested plot is for an at acronym{MIMO} system, mag is set to ## ||G(jw)|| or ||G(exp(jwT))|| and phase information is not computed. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/base/nyquist.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/base/nyquist.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 23,42 **** ## plot is printed to the screen. ## ## Compute the frequency response of a system. ## at strong{Inputs} (pass as empty to get default values) ## at table @var ## at item sys ## system data structure (must be either purely continuous or discrete; ! ## see is_digital) ## at item w ## frequency values for evaluation. ! ## if sys is continuous, then bode evaluates at math{G(jw)} ! ## if sys is discrete, then bode evaluates at math{G(exp(jwT))}, where ! ## at math{T} is the system sampling time. ## at item default ## the default frequency range is selected as follows: (These ! ## steps are NOT performed if at var{w} is specified) ! ## at end table ## at enumerate ## at item via routine __bodquist__, isolate all poles and zeros away from ## at var{w}=0 (@var{jw}=0 or @math{exp(@var{jwT})=1}) and select the frequency --- 23,42 ---- ## plot is printed to the screen. ## ## Compute the frequency response of a system. + ## ## at strong{Inputs} (pass as empty to get default values) ## at table @var ## at item sys ## system data structure (must be either purely continuous or discrete; ! ## see at code{is_digital}) ## at item w ## frequency values for evaluation. ! ## If sys is continuous, then bode evaluates at math{G(@var{jw})}; ! ## if sys is discrete, then bode evaluates at math{G(exp(@var{jwT}))}, ! ## where at var{T} is the system sampling time. ## at item default ## the default frequency range is selected as follows: (These ! ## steps are at strong{not} performed if @var{w} is specified) ## at enumerate ## at item via routine __bodquist__, isolate all poles and zeros away from ## at var{w}=0 (@var{jw}=0 or @math{exp(@var{jwT})=1}) and select the frequency *************** *** 47,63 **** ## [0,2p*pi] ## at end ifinfo ## at iftex ! ## $[0,2p*\pi]$ ## at end iftex ! ## at item A "smoothing" routine is used to ensure that the plot phase does ## not change excessively from point to point and that singular ## points (e.g., crossovers from +/- 180) are accurately shown. ## at end enumerate - ## outputs, inputs: names or indices of the output(s) and input(s) to be - ## used in the frequency response; see sysprune. - ## - ## at strong{Inputs} (pass as empty to get default values) - ## at table @var ## at item atol ## for interactive nyquist plots: atol is a change-in-slope tolerance ## for the of asymptotes (default = 0; 1e-2 is a good choice). This allows --- 47,60 ---- ## [0,2p*pi] ## at end ifinfo ## at iftex ! ## at tex ! ## $ [ 0,2 \, p \pi ] $ ! ## at end tex ## at end iftex ! ## at item A ``smoothing'' routine is used to ensure that the plot phase does ## not change excessively from point to point and that singular ## points (e.g., crossovers from +/- 180) are accurately shown. ## at end enumerate ## at item atol ## for interactive nyquist plots: atol is a change-in-slope tolerance ## for the of asymptotes (default = 0; 1e-2 is a good choice). This allows *************** *** 79,85 **** ## interactively if they wish to zoom in (remove asymptotes) ## Descriptive labels are automatically placed. ## ! ## Note: if the requested plot is for an MIMO system, a warning message is ## presented; the returned information is of the magnitude ## ||G(jw)|| or ||G(exp(jwT))|| only; phase information is not computed. ## at end deftypefn --- 76,82 ---- ## interactively if they wish to zoom in (remove asymptotes) ## Descriptive labels are automatically placed. ## ! ## Note: if the requested plot is for an at acronym{MIMO} system, a warning message is ## presented; the returned information is of the magnitude ## ||G(jw)|| or ||G(exp(jwT))|| only; phase information is not computed. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/base/obsv.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/base/obsv.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,24 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} obsv (@var{sys}, @var{c}) ! ## Build observability matrix ## at example ## at group ## | C | --- 17,35 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} obsv (@var{sys}, @var{c}) ! ## at deftypefnx {Function File} {} obsv (@var{a}, @var{c}) ! ## Build observability matrix: ! ## at iftex ! ## at tex ! ## $$ Q_b = \left[ \matrix{ C \cr ! ## C\,A \cr ! ## C\,A^2 \cr ! ## \vdots \cr ! ## C\,A^{n-1} } \right ] $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example ## at group ## | C | *************** *** 28,38 **** ## | CA^(n-1) | ## at end group ## at end example ! ## of a system data structure or the pair (A, C). ## ! ## Note: at code{obsv()} forms the observability matrix. ! ## ! ## The numerical properties of is_observable() ## are much better for observability tests. ## at end deftypefn --- 39,48 ---- ## | CA^(n-1) | ## at end group ## at end example ! ## at end ifinfo ! ## of a system data structure or the pair ( at var{a}, @var{c}). ## ! ## The numerical properties of at command{is_observable} ## are much better for observability tests. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/base/pzmap.m 2003-07-11 20:37:48.000000000 +0200 --- octave-2.1.57/scripts/control/base/pzmap.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,31 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{zer}, @var{pol}]=} pzmap (@var{sys}) ## Plots the zeros and poles of a system in the complex plane. ! ## at strong{Inputs} ! ## at var{sys} system data structure ## ## at strong{Outputs} ## if omitted, the poles and zeros are plotted on the screen. ! ## otherwise, pol, zer are returned as the system poles and zeros. ! ## (see sys2zp for a preferable function call) ## at end deftypefn function [zer, pol]=pzmap (sys) --- 17,39 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{zer}, @var{pol}] =} pzmap (@var{sys}) ## Plots the zeros and poles of a system in the complex plane. ! ## ! ## at strong{Input} ! ## at table @var ! ## at item sys ! ## System data structure. ! ## at end table ## ## at strong{Outputs} + ## at table @var + ## at item pol + ## at item zer ## if omitted, the poles and zeros are plotted on the screen. ! ## otherwise, at var{pol} and @var{zer} are returned as the ! ## system poles and zeros (see sys2zp for a preferable function call). ! ## at end table ## at end deftypefn function [zer, pol]=pzmap (sys) *** octave-2.1.57.orig/scripts/control/base/rldemo.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/base/rldemo.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,25 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} rldemo (@var{inputs}) ! ##Octave Controls toolbox demo: Root Locus demo ! ## at end deftypefn ## Author: David Clem ## Created: August 15, 1994 --- 17,25 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} rldemo (@var{inputs}) ! ## Octave Control toolbox demo: Root Locus demo. ! ## at end deftypefn ## Author: David Clem ## Created: August 15, 1994 *** octave-2.1.57.orig/scripts/control/base/rlocus.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/base/rlocus.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,41 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} rlocus (@var{inputs}) ! ## at format ! ## [rldata, k] = rlocus(sys[,increment,min_k,max_k]) ! ## Displays root locus plot of the specified SISO system. ## ## ----- --- -------- ## --->| + |---|k|---->| SISO |-----------> ## ----- --- -------- | ## - ^ | ## |_____________________________| ## ! ## inputs: sys = system data structure ! ## min_k, max_k,increment: minimum, maximum values of k and ! ## the increment used in computing gain values ! ## Outputs: plots the root locus to the screen. ! ## rldata: Data points plotted column 1: real values, column 2: imaginary ! ## values) ! ## k: gains for real axis break points. ! ## at end format ## at end deftypefn ## Author: David Clem --- 17,56 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{rldata}, @var{k}] =} rlocus (@var{sys}[, @var{increment}, @var{min_k}, @var{max_k}]) ## + ## Displays root locus plot of the specified at acronym{SISO} system. + ## at example + ## at group ## ----- --- -------- ## --->| + |---|k|---->| SISO |-----------> ## ----- --- -------- | ## - ^ | ## |_____________________________| + ## at end group + ## at end example ## ! ## at strong{Inputs} ! ## at table @var ! ## at item sys ! ## system data structure ! ## at item min_k ! ## Minimum value of at var{k} ! ## at item max_k ! ## Maximum value of at var{k} ! ## at item increment ! ## The increment used in computing gain values ! ## at end table ! ## ! ## at strong{Outputs} ! ## ! ## Plots the root locus to the screen. ! ## at table @var ! ## at item rldata ! ## Data points plotted: in column 1 real values, in column 2 the imaginary values ! ## at item k ! ## Gains for real axis break points ! ## at end table ## at end deftypefn ## Author: David Clem *** octave-2.1.57.orig/scripts/control/base/step.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/base/step.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 36,45 **** ## the number of data values. ## ## Both parameters at var{tstop} and @var{n} can be omitted and will be ! ## computed from the eigenvalues of the A-Matrix. ## at end table ## at strong{Outputs} ! ## at var{y}, @var{t}: impulse response ## ## When invoked with the output paramter y the plot is not displayed. ## at end deftypefn --- 36,50 ---- ## the number of data values. ## ## Both parameters at var{tstop} and @var{n} can be omitted and will be ! ## computed from the eigenvalues of the A Matrix. ## at end table ## at strong{Outputs} ! ## at table @var ! ## at item y ! ## Values of the step response. ! ## at item t ! ## Times of the step response. ! ## at end table ## ## When invoked with the output paramter y the plot is not displayed. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/base/tzero2.m 2000-01-31 07:35:06.000000000 +0100 --- octave-2.1.57/scripts/control/base/tzero2.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,26 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} tzero2 (@var{a}, @var{b}, @var{c}, @var{d}, @var{bal}) ! ## Compute the transmission zeros of a, b, c, d. ## ! ## bal = balancing option (see balance); default is "B". ## ## Needs to incorporate at code{mvzero} algorithm to isolate finite zeros; use ## at code{tzero} instead. --- 17,26 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{zr} =} tzero2 (@var{a}, @var{b}, @var{c}, @var{d}, @var{bal}) ! ## Compute the transmission zeros of at var{a}, @var{b}, @var{c}, @var{d}. ## ! ## at var{bal} = balancing option (see balance); default is "B". ## ## Needs to incorporate at code{mvzero} algorithm to isolate finite zeros; use ## at code{tzero} instead. *** octave-2.1.57.orig/scripts/control/base/tzero.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/base/tzero.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,42 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} tzero (@var{a}, @var{b}, @var{c}, @var{d}, @var{opt}) ! ## at deftypefnx {Function File} {} tzero (@var{sys}, @var{opt}) ! ## Compute transmission zeros of a continuous ## at example ## . ## x = Ax + Bu ## y = Cx + Du ## at end example ! ## or discrete ## at example ## x(k+1) = A x(k) + B u(k) ## y(k) = C x(k) + D u(k) ## at end example ! ## system. ## at strong{Outputs} ## at table @var ## at item zer ## transmission zeros of the system ## at item gain ! ## leading coefficient (pole-zero form) of SISO transfer function ## returns gain=0 if system is multivariable ## at end table ## at strong{References} --- 17,58 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{zer}, @var{gain}] =} tzero (@var{a}, @var{b}, @var{c}, @var{d}, @var{opt}) ! ## at deftypefnx {Function File} {[@var{zer}, @var{gain}] =} tzero (@var{sys}, @var{opt}) ! ## Compute transmission zeros of a continuous system: ! ## at iftex ! ## at tex ! ## $$ \dot x = A\,x + B\,u $$ ! ## $$ y = C\,x + D\,u $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example ## . ## x = Ax + Bu ## y = Cx + Du ## at end example ! ## at end ifinfo ! ## or of a discrete one: ! ## at iftex ! ## at tex ! ## $$ x_{k+1} = A\,x_k + B\,u_k $$ ! ## $$ y_k = C\,x_k + D\,u_k $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example ## x(k+1) = A x(k) + B u(k) ## y(k) = C x(k) + D u(k) ## at end example ! ## at end ifinfo ! ## ## at strong{Outputs} ## at table @var ## at item zer ## transmission zeros of the system ## at item gain ! ## leading coefficient (pole-zero form) of at acronym{SISO} transfer function ## returns gain=0 if system is multivariable ## at end table ## at strong{References} *** octave-2.1.57.orig/scripts/control/hinf/dgkfdemo.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/hinf/dgkfdemo.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,24 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} dgkfdemo () ! ## Octave Controls toolbox demo: H2/Hinfinity options demos ## at end deftypefn ## Author: A. S. Hodel --- 18,33 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} dgkfdemo () ! ## Octave Controls toolbox demo: ! ## at iftex ! ## at tex ! ## $ { \cal H }_2 $/$ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-2/H-infinity ! ## at end ifinfo ! ## options demos. ## at end deftypefn ## Author: A. S. Hodel *** octave-2.1.57.orig/scripts/control/hinf/dhinfdemo.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/hinf/dhinfdemo.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,45 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} dhinfdemo () ! ## Demonstrate the functions available for designining a discrete ! ## H_infinity controller. This is not a true discrete design. The ## design is carried out in continuous time while the effect of sampling ## is described by a bilinear transformation of the sampled system. ## This method works quite well if the sampling period is "small" ## compared to the plant time constants. ## ## Continuous plant: ! ## ## at example ## 1 ## G(s) = -------------- ## (s + 2)(s + 1) ## at end example ## ## Discretised plant with ZOH (Sampling period = Ts = 1 second): ! ## ## at example ## 0.39958z + 0.14700 ! ## G(s) = -------------------------- ## (z - 0.36788)(z - 0.13533) ## ## +----+ ## -------------------->| W1 |---> v1 ## z | +----+ --- 18,72 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} dhinfdemo () ! ## Demonstrate the functions available to design a discrete ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## controller. This is not a true discrete design. The ## design is carried out in continuous time while the effect of sampling ## is described by a bilinear transformation of the sampled system. ## This method works quite well if the sampling period is "small" ## compared to the plant time constants. ## ## Continuous plant: ! ## at iftex ! ## at tex ! ## $$ G(s) = { 1 \over (s+2) (s+1) } $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example + ## at group ## 1 ## G(s) = -------------- ## (s + 2)(s + 1) + ## at end group ## at end example + ## at end ifinfo ## ## Discretised plant with ZOH (Sampling period = Ts = 1 second): ! ## at iftex ! ## at tex ! ## $$ G(z) = { 0.39958\,z + 0.14700 \over (z - 0.36788) (z - 0.13533) } $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example + ## at group ## 0.39958z + 0.14700 ! ## G(z) = -------------------------- ## (z - 0.36788)(z - 0.13533) + ## at end group + ## at end example + ## at end ifinfo ## + ## at example + ## at group ## +----+ ## -------------------->| W1 |---> v1 ## z | +----+ *************** *** 52,57 **** --- 79,85 ---- ## | +---+ | ## -----| K |<------- ## +---+ + ## at end group ## at end example ## ## at noindent *** octave-2.1.57.orig/scripts/control/hinf/h2norm.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/hinf/h2norm.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,28 **** ## -*- texinfo -*- ## at deftypefn {Function Fil} {} h2norm (@var{sys}) ! ## Computes the H2 norm of a system data structure (continuous time only) ## ## Reference: ! ## Doyle, Glover, Khargonekar, Francis, ``State Space Solutions to Standard ! ## H2 and Hinf Control Problems", IEEE TAC August 1989 ## at end deftypefn ## Author: A. S. Hodel --- 18,45 ---- ## -*- texinfo -*- ## at deftypefn {Function Fil} {} h2norm (@var{sys}) ! ## Computes the ! ## at iftex ! ## at tex ! ## $ { \cal H }_2 $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-2 ! ## at end ifinfo ! ## norm of a system data structure (continuous time only). ## ## Reference: ! ## Doyle, Glover, Khargonekar, Francis, ``State Space Solutions to Standard ! ## at iftex ! ## at tex ! ## $ { \cal H }_2 $ and $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-2 and H-infinity ! ## at end ifinfo ! ## Control Problems'', IEEE TAC August 1989. ## at end deftypefn ## Author: A. S. Hodel *************** *** 50,56 **** M = lyap (a,b*b'); endif if( min(real(eig(M))) < 0) ! error("h2norm: grammian not >= 0 (lightly damped modes?)") endif h2gain = sqrt(trace(d'*d + c*M*c')); --- 67,73 ---- M = lyap (a,b*b'); endif if( min(real(eig(M))) < 0) ! error("h2norm: gramian not >= 0 (lightly damped modes?)") endif h2gain = sqrt(trace(d'*d + c*M*c')); *** octave-2.1.57.orig/scripts/control/hinf/h2syn.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/hinf/h2syn.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,44 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[K}, @var{gain}, @var{kc}, @var{kf}, @var{pc}, @var{pf}] = h2syn (@var{asys}, @var{nu}, @var{ny}, @var{tol}) ! ## Design H2 optimal controller per procedure in ! ## Doyle, Glover, Khargonekar, Francis, "State Space Solutions to Standard ! ## H2 and Hinf Control Problems", IEEE TAC August 1989 ## ! ## Discrete time control per Zhou, Doyle, and Glover, ROBUST AND OPTIMAL ! ## CONTROL, Prentice-Hall, 1996 ## ! ## at strong{Inputs} input system is passed as either ## at table @var ## at item asys ## system data structure (see ss, sys2ss) ## at itemize @bullet ## at item controller is implemented for continuous time systems ! ## at item controller is NOT implemented for discrete time systems ## at end itemize ## at item nu ## number of controlled inputs ## at item ny ## number of measured outputs ## at item tol ! ## threshhold for 0. Default: 200*eps ## at end table ## ## at strong{Outputs} --- 17,60 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{K}, @var{gain}, @var{kc}, @var{kf}, @var{pc}, @var{pf}] = } h2syn (@var{asys}, @var{nu}, @var{ny}, @var{tol}) ! ## Design ! ## at iftex ! ## at tex ! ## $ { \cal H }_2 $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-2 ! ## at end ifinfo ! ## optimal controller per procedure in ! ## Doyle, Glover, Khargonekar, Francis, ``State Space Solutions to Standard ! ## at iftex ! ## at tex ! ## $ { \cal H }_2 $ and $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-2 and H-infinity ! ## at end ifinfo ! ## Control Problems'', IEEE TAC August 1989. ## ! ## Discrete time control per Zhou, Doyle, and Glover, Robust and optimal, Prentice-Hall, 1996 ## ! ## at strong{Inputs} ## at table @var ## at item asys ## system data structure (see ss, sys2ss) ## at itemize @bullet ## at item controller is implemented for continuous time systems ! ## at item controller is @strong{not} implemented for discrete time systems ## at end itemize ## at item nu ## number of controlled inputs ## at item ny ## number of measured outputs ## at item tol ! ## threshold for 0. Default: 200*eps ## at end table ## ## at strong{Outputs} *** octave-2.1.57.orig/scripts/control/hinf/hinf_ctr.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/hinf/hinf_ctr.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,24 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} hinf_ctr (@var{dgs}, @var{f}, @var{h}, @var{z}, @var{g}) ! ## Called by at code{hinfsyn} to compute the H_inf optimal controller. ## ## at strong{Inputs} ## at table @var --- 17,33 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{K} =} hinf_ctr (@var{dgs}, @var{f}, @var{h}, @var{z}, @var{g}) ! ## Called by at code{hinfsyn} to compute the ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## optimal controller. ## ## at strong{Inputs} ## at table @var *************** *** 31,37 **** --- 40,49 ---- ## final gamma value ## at end table ## at strong{Outputs} + ## at table @var + ## at item K ## controller (system data structure) + ## at end table ## ## Do not attempt to use this at home; no argument checking performed. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/hinf/hinfdemo.m 2000-01-14 04:46:24.000000000 +0100 --- octave-2.1.57/scripts/control/hinf/hinfdemo.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,27 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} hinfdemo () ## ! ## H_infinity design demos for continuous SISO and MIMO systems and a ! ## discrete system. The SISO system is difficult to control because it ! ## is non minimum phase and unstable. The second design example ## controls the "jet707" plant, the linearized state space model of a ## Boeing 707-321 aircraft at v=80m/s (M = 0.26, Ga0 = -3 deg, alpha0 = ## 4 deg, kappa = 50 deg). Inputs: (1) thrust and (2) elevator angle --- 19,35 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} hinfdemo () ## ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## design demos for continuous at acronym{SISO} and @acronym{MIMO} systems and a ! ## discrete system. The at acronym{SISO} system is difficult to control because ! ## it is non-minimum-phase and unstable. The second design example ## controls the "jet707" plant, the linearized state space model of a ## Boeing 707-321 aircraft at v=80m/s (M = 0.26, Ga0 = -3 deg, alpha0 = ## 4 deg, kappa = 50 deg). Inputs: (1) thrust and (2) elevator angle *************** *** 29,46 **** ## stable and second order. ## ## at table @asis ! ## at item SISO plant ! ## at display ## at group ## s - 2 ## G(s) = -------------- ## (s + 2)(s - 1) ## ## +----+ ## -------------------->| W1 |---> v1 ## z | +----+ ! ## ----|-------------+ || T || => min. ! ## | | vz infty ## | +---+ v y +----+ ## u *--->| G |--->O--*-->| W2 |---> v2 ## | +---+ | +----+ --- 37,67 ---- ## stable and second order. ## ## at table @asis ! ## at item @acronym{SISO} plant: ! ## ! ## at iftex ! ## at tex ! ## $$ G(s) = { s-2 \over (s+2) (s-1) } $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at example ## at group ## s - 2 ## G(s) = -------------- ## (s + 2)(s - 1) + ## at end group + ## at end example + ## at end ifinfo + ## + ## at example + ## at group ## ## +----+ ## -------------------->| W1 |---> v1 ## z | +----+ ! ## ----|-------------+ ! ## | | ## | +---+ v y +----+ ## u *--->| G |--->O--*-->| W2 |---> v2 ## | +---+ | +----+ *************** *** 49,62 **** ## -----| K |<------- ## +---+ ## at end group ! ## at end display ! ## W1 und W2 are the robustness and performance weighting ! ## functions ! ## ! ## at item MIMO plant ! ## The optimal controller minimizes the H_infinity norm of the ! ## augmented plant P (mixed-sensitivity problem): ! ## at display ## at group ## w ## 1 -----------+ --- 70,105 ---- ## -----| K |<------- ## +---+ ## at end group ! ## at end example ! ## ! ## at iftex ! ## at tex ! ## $$ { \rm min } \Vert T_{vz} \Vert _\infty $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at example ! ## min || T || ! ## vz infty ! ## at end example ! ## at end ifinfo ! ## ! ## at var{W1} und @var{W2} are the robustness and performance weighting ! ## functions. ! ## ! ## at item @acronym{MIMO} plant: ! ## The optimal controller minimizes the ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## norm of the ! ## augmented plant at var{P} (mixed-sensitivity problem): ! ## at example ## at group ## w ## 1 -----------+ *************** *** 70,80 **** ## | +----+ | +----+ ## | | ## ^ v ! ## u (from y (to K) ! ## controller ! ## K) ! ## ## ## + + + + ## | z | | w | ## | 1 | | 1 | --- 113,136 ---- ## | +----+ | +----+ ## | | ## ^ v ! ## u y (to K) ! ## (from controller K) ! ## at end group ! ## at end example ## + ## at iftex + ## at tex + ## $$ \left [ \matrix{ z_1 \cr + ## z_2 \cr + ## y } \right ] = + ## P \left [ \matrix{ w_1 \cr + ## w_2 \cr + ## u } \right ] $$ + ## at end tex + ## at end iftex + ## at ifinfo + ## at example + ## at group ## + + + + ## | z | | w | ## | 1 | | 1 | *************** *** 83,119 **** ## | y | | u | ## + + + + ## at end group ! ## at end display ## ! ## at item DISCRETE SYSTEM ## This is not a true discrete design. The design is carried out ## in continuous time while the effect of sampling is described by ## a bilinear transformation of the sampled system. ! ## This method works quite well if the sampling period is "small" ## compared to the plant time constants. ## ! ## at item The continuous plant ! ## at display ## at group ## 1 ## G (s) = -------------- ## k (s + 2)(s + 1) ## ## at end group ! ## at end display ## is discretised with a ZOH (Sampling period = Ts = 1 second): ! ## at display ## at group ## ## 0.199788z + 0.073498 ! ## G(s) = -------------------------- ## (z - 0.36788)(z - 0.13534) ## ## +----+ ## -------------------->| W1 |---> v1 ## z | +----+ ! ## ----|-------------+ || T || => min. ! ## | | vz infty ## | +---+ v +----+ ## *--->| G |--->O--*-->| W2 |---> v2 ## | +---+ | +----+ --- 139,197 ---- ## | y | | u | ## + + + + ## at end group ! ## at end example ! ## at end ifinfo ## ! ## at item Discrete system: ## This is not a true discrete design. The design is carried out ## in continuous time while the effect of sampling is described by ## a bilinear transformation of the sampled system. ! ## This method works quite well if the sampling period is ``small'' ## compared to the plant time constants. ## ! ## at item The continuous plant: ! ## at iftex ! ## at tex ! ## $$ G(s) = { 1 \over (s+2)(s+1) } $$ ! ## at end tex ! ## at end iftex ! ## ! ## at ifinfo ! ## at example ## at group ## 1 ## G (s) = -------------- ## k (s + 2)(s + 1) ## ## at end group ! ## at end example ! ## at end ifinfo ! ## ## is discretised with a ZOH (Sampling period = Ts = 1 second): ! ## at iftex ! ## at tex ! ## $$ G(z) = { 0.199788\,z + 0.073498 \over (z - 0.36788) (z - 0.13534) } $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at example ## at group ## ## 0.199788z + 0.073498 ! ## G(z) = -------------------------- ## (z - 0.36788)(z - 0.13534) + ## at end group + ## at end example + ## at end ifinfo + ## + ## at example + ## at group ## ## +----+ ## -------------------->| W1 |---> v1 ## z | +----+ ! ## ----|-------------+ ! ## | | ## | +---+ v +----+ ## *--->| G |--->O--*-->| W2 |---> v2 ## | +---+ | +----+ *************** *** 122,130 **** ## -----| K |<------- ## +---+ ## at end group ! ## at end display ! ## W1 and W2 are the robustness and performancs weighting ! ## functions ## at end table ## at end deftypefn --- 200,219 ---- ## -----| K |<------- ## +---+ ## at end group ! ## at end example ! ## at iftex ! ## at tex ! ## $$ { \rm min } \Vert T_{vz} \Vert _\infty $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at example ! ## min || T || ! ## vz infty ! ## at end example ! ## at end ifinfo ! ## at var{W1} and @var{W2} are the robustness and performance weighting ! ## functions. ## at end table ## at end deftypefn *** octave-2.1.57.orig/scripts/control/hinf/hinfnorm.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/hinf/hinfnorm.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,31 **** ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{g}, @var{gmin}, @var{gmax}] =} hinfnorm (@var{sys}, @var{tol}, @var{gmin}, @var{gmax}, @var{ptol}) ! ## Computes the H infinity norm of a system data structure. ## ## at strong{Inputs} ## at table @var ## at item sys ## system data structure ## at item tol ! ## H infinity norm search tolerance (default: 0.001) ## at item gmin ## minimum value for norm search (default: 1e-9) ## at item gmax --- 18,48 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{g}, @var{gmin}, @var{gmax}] =} hinfnorm (@var{sys}, @var{tol}, @var{gmin}, @var{gmax}, @var{ptol}) ! ## Computes the ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## norm of a system data structure. ## ## at strong{Inputs} ## at table @var ## at item sys ## system data structure ## at item tol ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## norm search tolerance (default: 0.001) ## at item gmin ## minimum value for norm search (default: 1e-9) ## at item gmax *************** *** 34,47 **** ## pole tolerance: ## at itemize @bullet ## at item if sys is continuous, poles with ! ## |real(pole)| < ptol*||H|| (H is appropriate Hamiltonian) ## are considered to be on the imaginary axis. ## ## at item if sys is discrete, poles with ! ## |abs(pole)-1| < ptol*||[s1,s2]|| (appropriate symplectic pencil) ! ## are considered to be on the unit circle ## ! ## at item Default: 1e-9 ## at end itemize ## at end table ## --- 51,80 ---- ## pole tolerance: ## at itemize @bullet ## at item if sys is continuous, poles with ! ## at iftex ! ## at tex ! ## $ \vert {\rm real}(pole) \vert < ptol \Vert H \Vert $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at math{| |real(pole))| < ptol*||H| |real(pole))| < ptol*||H|| } ! ## at end ifinfo ! ## ( at var{H} is appropriate Hamiltonian) ## are considered to be on the imaginary axis. ## ## at item if sys is discrete, poles with ! ## at iftex ! ## at tex ! ## $ \vert { \rm pole } - 1 \vert < ptol \Vert [ s_1 ~ s_2 ] \Vert $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at math{|abs(pole)-1|| < ptol*||[s1,s2]| < ptol*||[s1,s2]||} ! ## at end ifinfo ! ## (appropriate symplectic pencil) ! ## are considered to be on the unit circle. ## ! ## at item Default value: 1e-9 ## at end itemize ## at end table ## *************** *** 52,66 **** ## if the system is unstable. ## at item gmin ## at itemx gmax ! ## Actual system gain lies in the interval [ at var{gmin}, @var{gmax}] ## at end table ## ## References: ! ## Doyle, Glover, Khargonekar, Francis, "State space solutions to standard ! ## H2 and Hinf control problems", IEEE TAC August 1989 ! ## Iglesias and Glover, "State-Space approach to discrete-time Hinf control," ! ## Int. J. Control, vol 54, #5, 1991 ! ## Zhou, Doyle, Glover, "Robust and Optimal Control," Prentice-Hall, 1996 ## at end deftypefn function [g, gmin, gmax] = hinfnorm (sys, tol, gmin, gmax, ptol) --- 85,115 ---- ## if the system is unstable. ## at item gmin ## at itemx gmax ! ## Actual system gain lies in the interval [ at var{gmin}, @var{gmax}]. ## at end table ## ## References: ! ## Doyle, Glover, Khargonekar, Francis, ``State space solutions to standard ! ## at iftex ! ## at tex ! ## $ { \cal H }_2 $ and $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-2 and H-infinity ! ## at end ifinfo ! ## control problems'', IEEE TAC August 1989; ! ## Iglesias and Glover, ``State-Space approach to discrete-time ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## control'', Int. J. Control, vol 54, #5, 1991; ! ## Zhou, Doyle, Glover, ``Robust and Optimal Control'', Prentice-Hall, 1996. ## at end deftypefn function [g, gmin, gmax] = hinfnorm (sys, tol, gmin, gmax, ptol) *** octave-2.1.57.orig/scripts/control/hinf/hinfsyn_chk.m 2000-01-31 08:40:56.000000000 +0100 --- octave-2.1.57/scripts/control/hinf/hinfsyn_chk.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 20,32 **** ## at deftypefn {Function File} {[@var{retval}, @var{pc}, @var{pf}] =} hinfsyn_chk (@var{a}, @var{b1}, @var{b2}, @var{c1}, @var{c2}, @var{d12}, @var{d21}, @var{g}, @var{ptol}) ## Called by at code{hinfsyn} to see if gain @var{g} satisfies conditions in ## Theorem 3 of ! ## Doyle, Glover, Khargonekar, Francis, "State Space Solutions to Standard ! ## H2 and Hinf Control Problems", IEEE TAC August 1989 ## ! ## at strong{Warning} Do not attempt to use this at home; no argument ## checking performed. ## ! ## at strong{Inputs} as returned by @code{is_dgkf}, except for: ## at table @var ## at item g ## candidate gain level --- 20,42 ---- ## at deftypefn {Function File} {[@var{retval}, @var{pc}, @var{pf}] =} hinfsyn_chk (@var{a}, @var{b1}, @var{b2}, @var{c1}, @var{c2}, @var{d12}, @var{d21}, @var{g}, @var{ptol}) ## Called by at code{hinfsyn} to see if gain @var{g} satisfies conditions in ## Theorem 3 of ! ## Doyle, Glover, Khargonekar, Francis, ``State Space Solutions to Standard ! ## at iftex ! ## at tex ! ## $ { \cal H }_2 $ and $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-2 and H-infinity ! ## at end ifinfo ! ## Control Problems'', IEEE TAC August 1989 ## ! ## at strong{Warning:} do not attempt to use this at home; no argument ## checking performed. ## ! ## at strong{Inputs} ! ## ! ## As returned by at code{is_dgkf}, except for: ## at table @var ## at item g ## candidate gain level *************** *** 39,47 **** ## at item retval ## 1 if g exceeds optimal Hinf closed loop gain, else 0 ## at item pc ! ## solution of "regulator" H-inf ARE ## at item pf ! ## solution of "filter" H-inf ARE ## at end table ## Do not attempt to use this at home; no argument checking performed. ## at end deftypefn --- 49,75 ---- ## at item retval ## 1 if g exceeds optimal Hinf closed loop gain, else 0 ## at item pc ! ## solution of ``regulator'' ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## ARE ## at item pf ! ## solution of ``filter'' ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## ARE ## at end table ## Do not attempt to use this at home; no argument checking performed. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/hinf/hinfsyn.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/hinf/hinfsyn.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 33,41 **** ## at item ny ## number of measured outputs ## at item gmin ! ## initial lower bound on H-infinity optimal gain ## at item gmax ! ## initial upper bound on H-infinity optimal gain ## at item gtol ## gain threshhold. Routine quits when gmax/gmin < 1+tol ## at item ptol --- 33,59 ---- ## at item ny ## number of measured outputs ## at item gmin ! ## initial lower bound on ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## optimal gain ## at item gmax ! ## initial upper bound on ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity ! ## at end ifinfo ! ## optimal gain ## at item gtol ## gain threshhold. Routine quits when gmax/gmin < 1+tol ## at item ptol *************** *** 61,76 **** ## ARE solution matrix for filter subproblem ## at end table ## ## at enumerate ! ## at item Doyle, Glover, Khargonekar, Francis, "State Space Solutions ! ## to Standard H2 and Hinf Control Problems," IEEE TAC August 1989 ## ! ## at item Maciejowksi, J.M., "Multivariable feedback design," ## Addison-Wesley, 1989, ISBN 0-201-18243-2 ## ! ## at item Keith Glover and John C. Doyle, "State-space formulae for all ! ## stabilizing controllers that satisfy and h-infinity-norm bound ! ## and relations to risk sensitivity," ## Systems & Control Letters 11, Oct. 1988, pp 167-172. ## at end enumerate ## at end deftypefn --- 79,112 ---- ## ARE solution matrix for filter subproblem ## at end table ## + ## References: ## at enumerate ! ## at item Doyle, Glover, Khargonekar, Francis, ``State Space Solutions ! ## to Standard ! ## at iftex ! ## at tex ! ## $ { \cal H }_2 $ and $ { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-2 and H-infinity ! ## at end ifinfo ! ## Control Problems'', IEEE TAC August 1989 ## ! ## at item Maciejowksi, J.M., ``Multivariable feedback design'', ## Addison-Wesley, 1989, ISBN 0-201-18243-2 ## ! ## at item Keith Glover and John C. Doyle, ``State-space formulae for all ! ## stabilizing controllers that satisfy an ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $-norm ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity-norm ! ## at end ifinfo ! ## bound and relations to risk sensitivity'', ## Systems & Control Letters 11, Oct. 1988, pp 167-172. ## at end enumerate ## at end deftypefn *** octave-2.1.57.orig/scripts/control/hinf/hinfsyn_ric.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/hinf/hinfsyn_ric.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 20,27 **** ## at deftypefn {Function File} {[@var{xinf}, @var{x_ha_err}] =} hinfsyn_ric (@var{a}, @var{bb}, @var{c1}, @var{d1dot}, @var{r}, @var{ptol}) ## Forms ## at example ! ## xx = ([BB; -C1'*d1dot]/R) * [d1dot'*C1 BB']; ! ## Ha = [A 0*A; -C1'*C1 -A'] - xx; ## at end example ## and solves associated Riccati equation. ## The error code at var{x_ha_err} indicates one of the following --- 20,27 ---- ## at deftypefn {Function File} {[@var{xinf}, @var{x_ha_err}] =} hinfsyn_ric (@var{a}, @var{bb}, @var{c1}, @var{d1dot}, @var{r}, @var{ptol}) ## Forms ## at example ! ## xx = ([bb; -c1'*d1dot]/r) * [d1dot'*c1 bb']; ! ## Ha = [a 0*a; -c1'*c1 - a'] - xx; ## at end example ## and solves associated Riccati equation. ## The error code at var{x_ha_err} indicates one of the following *** octave-2.1.57.orig/scripts/control/hinf/is_dgkf.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/hinf/is_dgkf.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 22,29 **** ## assumptions of DGKF algorithm. ## Partitions system into: ## at example ! ## [dx/dt] = [A | Bw Bu ][w] ! ## [ z ] [Cz | Dzw Dzu ][u] ## [ y ] [Cy | Dyw Dyu ] ## at end example ## or similar discrete-time system. --- 22,29 ---- ## assumptions of DGKF algorithm. ## Partitions system into: ## at example ! ## [dx/dt] [A | Bw Bu ][w] ! ## [ z ] = [Cz | Dzw Dzu ][u] ## [ y ] [Cy | Dyw Dyu ] ## at end example ## or similar discrete-time system. *************** *** 41,47 **** ## at item ny ## number of measured outputs ## at item tol ! ## threshhold for 0. Default: 200 at var{eps} ## at end table ## at strong{Outputs} ## at table @var --- 41,47 ---- ## at item ny ## number of measured outputs ## at item tol ! ## threshold for 0. Default: 200* at var{eps} ## at end table ## at strong{Outputs} ## at table @var *************** *** 84,90 **** ## at end table ## at end table ## at code{is_dgkf} exits with an error if the system is mixed ! ## discrete/continuous ## ## at strong{References} ## at table @strong --- 84,90 ---- ## at end table ## at end table ## at code{is_dgkf} exits with an error if the system is mixed ! ## discrete/continuous. ## ## at strong{References} ## at table @strong *** octave-2.1.57.orig/scripts/control/hinf/wgt1o.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/hinf/wgt1o.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,34 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} wgt1o (@var{vl}, @var{vh}, @var{fc}) ## State space description of a first order weighting function. ## ! ## Weighting function are needed by the H2/H_infinity design procedure. ! ## These function are part of thye augmented plant P (see hinfdemo ! ## for an applicattion example). ## ! ## vl = Gain at low frequencies ## ! ## vh = Gain at high frequencies ! ## ! ## fc = Corner frequency (in Hz, *not* in rad/sec) ## at end deftypefn ## Author: Kai P. Mueller --- 17,53 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{W} =} wgt1o (@var{vl}, @var{vh}, @var{fc}) ## State space description of a first order weighting function. ## ! ## Weighting function are needed by the ! ## at iftex ! ## at tex ! ## $ { \cal H }_2 / { \cal H }_\infty $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-2/H-infinity ! ## at end ifinfo ! ## design procedure. ! ## These function are part of the augmented plant at var{P} ! ## (see at command{hinfdemo} for an applicattion example). ## ! ## at strong{Inputs} ! ## at table @var ! ## at item vl ! ## Gain at low frequencies. ! ## at item vh ! ## Gain at high frequencies. ! ## at item fc ! ## Corner frequency (in Hz, at strong{not} in rad/sec) ! ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item W ! ## Weighting function, given in form of a system data structure. ! ## at end table ## at end deftypefn ## Author: Kai P. Mueller *** octave-2.1.57.orig/scripts/control/system/buildssic.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/buildssic.m 2004-06-18 10:44:44.000000000 +0200 *************** *** 20,31 **** ## at deftypefn {Function File} {} buildssic (@var{clst}, @var{ulst}, @var{olst}, @var{ilst}, @var{s1}, @var{s2}, @var{s3}, @var{s4}, @var{s5}, @var{s6}, @var{s7}, @var{s8}) ## ## Form an arbitrary complex (open or closed loop) system in ! ## state-space form from several systems. " at code{buildssic}" can ! ## easily (despite it's cryptic syntax) integrate transfer functions ## from a complex block diagram into a single system with one call. ## This function is especially useful for building open loop ! ## interconnections for H_infinity and H2 designs or for closing ! ## loops with these controllers. ## ## Although this function is general purpose, the use of " at code{sysgroup}" ## " at code{sysmult}", "@code{sysconnect}" and the like is recommended for --- 20,39 ---- ## at deftypefn {Function File} {} buildssic (@var{clst}, @var{ulst}, @var{olst}, @var{ilst}, @var{s1}, @var{s2}, @var{s3}, @var{s4}, @var{s5}, @var{s6}, @var{s7}, @var{s8}) ## ## Form an arbitrary complex (open or closed loop) system in ! ## state-space form from several systems. at code{buildssic} can ! ## easily (despite its cryptic syntax) integrate transfer functions ## from a complex block diagram into a single system with one call. ## This function is especially useful for building open loop ! ## interconnections for ! ## at iftex ! ## at tex ! ## $ { \cal H }_\infty $ and $ { \cal H }_2 $ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## H-infinity and H-2 ! ## at end ifinfo ! ## designs or for closing loops with these controllers. ## ## Although this function is general purpose, the use of " at code{sysgroup}" ## " at code{sysmult}", "@code{sysconnect}" and the like is recommended for *************** *** 82,88 **** ## at end group ## at end example ## ! ## The closed loop system GW can be optained by ## at example ## GW = buildssic([1 2; 2 -1], 2, [1 2 3], 2, G, K); ## at end example --- 90,96 ---- ## at end group ## at end example ## ! ## The closed loop system at var{GW} can be optained by ## at example ## GW = buildssic([1 2; 2 -1], 2, [1 2 3], 2, G, K); ## at end example *************** *** 104,111 **** ## +----+ ## -------------------->| W1 |---> v1 ## z | +----+ ! ## ----|-------------+ || GW || => min. ! ## | | vz infty ## | +---+ v +----+ ## *--->| G |--->O--*-->| W2 |---> v2 ## | +---+ | +----+ --- 112,119 ---- ## +----+ ## -------------------->| W1 |---> v1 ## z | +----+ ! ## ----|-------------+ ! ## | | ## | +---+ v +----+ ## *--->| G |--->O--*-->| W2 |---> v2 ## | +---+ | +----+ *************** *** 114,127 **** ## u y ## at end group ## at end example ## - ## The closed loop system GW from [z; u]' to [v1; v2; y]' can be - ## obtained by (all SISO systems): ## at example ## GW = buildssic([1, 4; 2, 4; 3, 1], 3, [2, 3, 5], ## [3, 4], G, W1, W2, One); ## at end example ! ## where "One" is a unity gain (auxillary) function with order 0. ## (e.g. at code{One = ugain(1);}) ## at end deftypefn --- 122,157 ---- ## u y ## at end group ## at end example + ## at iftex + ## at tex + ## $$ { \rm min } \Vert GW_{vz} \Vert _\infty $$ + ## at end tex + ## + ## The closed loop system at var{GW} from + ## at tex + ## $$ [z, u]^{ \rm T } $$ + ## at end tex + ## to + ## at tex + ## $$ [v1, v2, y]^{ \rm T } $$ + ## at end tex + ## can be obtained by (all at acronym{SISO} systems): + ## at end iftex + ## at ifinfo + ## at example + ## min || GW || + ## vz infty + ## at end example + ## + ## The closed loop system at var{GW} from [z; u]' to [v1; v2; y]' can be + ## obtained by (all at acronym{SISO} systems): + ## at end ifinfo ## ## at example ## GW = buildssic([1, 4; 2, 4; 3, 1], 3, [2, 3, 5], ## [3, 4], G, W1, W2, One); ## at end example ! ## where ``One'' is a unity gain (auxillary) function with order 0. ## (e.g. at code{One = ugain(1);}) ## at end deftypefn *** octave-2.1.57.orig/scripts/control/system/c2d.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/c2d.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 20,25 **** --- 20,50 ---- ## at deftypefn {Function File} {} c2d (@var{sys}, @var{opt}, @var{t}) ## at deftypefnx {Function File} {} c2d (@var{sys}, @var{t}) ## + ## Converts the system data structure describing: + ## at iftex + ## at tex + ## $$ \dot x = A_c\,x + B_c\,u $$ + ## at end tex + ## at end iftex + ## at ifinfo + ## at example + ## . + ## x = Ac x + Bc u + ## at end example + ## at end ifinfo + ## into a discrete time equivalent model: + ## at iftex + ## at tex + ## $$ x_{n+1} = A_d\,x_n + B_d\,u_n $$ + ## at end tex + ## at end iftex + ## at ifinfo + ## at example + ## x[n+1] = Ad x[n] + Bd u[n] + ## at end example + ## at end ifinfo + ## via the matrix exponential or bilinear transform. + ## ## at strong{Inputs} ## at table @var ## at item sys *************** *** 33,72 **** ## use the matrix exponential (default) ## at item "bi" ## use the bilinear transformation ! ## at end table ## at example ## 2(z-1) ## s = ----- ## T(z+1) ## at end example ## FIXME: This option exits with an error if at var{sys} is not purely ## continuous. (The at code{ex} option can handle mixed systems.) - ## at item t - ## sampling time; required if sys is purely continuous. - ## - ## at strong{Note} If the 2nd argument is not a string, @code{c2d} assumes that - ## the 2nd argument is at var{t} and performs appropriate argument checks. ## at item "matched" ## Use the matched pole/zero equivalent transformation (currently only ! ## works for purely continuous SISO systems). ## at end table ## ! ## at strong{Outputs} ! ## at var{dsys} discrete time equivalent via zero-order hold, ! ## sample each at var{t} sec. ## ! ## converts the system data structure describing ! ## at example ! ## . ! ## x = Ac x + Bc u ! ## at end example ! ## into a discrete time equivalent model ! ## at example ! ## x[n+1] = Ad x[n] + Bd u[n] ! ## at end example ! ## via the matrix exponential or bilinear transform ## ! ## at strong{Note} This function adds the suffix @code{_d} ## to the names of the new discrete states. ## at end deftypefn --- 58,96 ---- ## use the matrix exponential (default) ## at item "bi" ## use the bilinear transformation ! ## at iftex ! ## at tex ! ## $$ s = { 2\,(z-1) \over T\,(z+1) } $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example ## 2(z-1) ## s = ----- ## T(z+1) ## at end example + ## at end ifinfo ## FIXME: This option exits with an error if at var{sys} is not purely ## continuous. (The at code{ex} option can handle mixed systems.) ## at item "matched" ## Use the matched pole/zero equivalent transformation (currently only ! ## works for purely continuous at acronym{SISO} systems). ## at end table + ## at item t + ## sampling time; required if at var{sys} is purely continuous. ## ! ## at strong{Note:} if the second argument is not a string, @code{c2d()} ! ## assumes that the second argument is at var{t} and performs ! ## appropriate argument checks. ! ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item dsys ! ## Discrete time equivalent via zero-order hold, sample each at var{t} sec. ! ## at end table ## ! ## at strong{Note}: this function adds the suffix @code{_d} ## to the names of the new discrete states. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/system/d2c.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/d2c.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,26 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} d2c (@var{sys}, @var{tol}) ## at deftypefnx {Function File} {} d2c (@var{sys}, @var{opt}) ! ## Convert discrete (sub)system to a purely continuous system. Sampling ! ## time used is at code{sysgettsam(@var{sys})} ## ## at strong{Inputs} ## at table @var --- 19,26 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} d2c (@var{sys}, @var{tol}) ## at deftypefnx {Function File} {} d2c (@var{sys}, @var{opt}) ! ## Convert a discrete (sub)system into a purely continuous one. ! ## The sampling time used is at code{sysgettsam(@var{sys})} dot ## ## at strong{Inputs} ## at table @var *************** *** 28,34 **** ## system data structure with discrete components ## at item tol ## Scalar value. ! ## tolerance for convergence of default at code{"log"} option (see below) ## at item opt ## conversion option. Choose from: ## at table @code --- 28,34 ---- ## system data structure with discrete components ## at item tol ## Scalar value. ! ## Tolerance for convergence of default at code{"log"} option (see below) ## at item opt ## conversion option. Choose from: ## at table @code *************** *** 50,57 **** ## discrete ## at end table ## at end table ! ## at strong{Outputs} @var{csys} continuous time system (same dimensions and ! ## signal names as in at var{sys}) dot ## at end deftypefn ## Author: R. Bruce Tenison --- 50,60 ---- ## discrete ## at end table ## at end table ! ## at strong{Output} ! ## at table @var ! ## at item csys ! ## continuous time system (same dimensions and signal names as in at var{sys}) dot ! ## at end table ## at end deftypefn ## Author: R. Bruce Tenison *** octave-2.1.57.orig/scripts/control/system/fir2sys.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/fir2sys.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,38 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} fir2sys (@var{num}, @var{tsam}, @var{inname}, @var{outname}) ! ## construct a system data structure from FIR description ## ! ## at strong{Inputs:} ## at table @var ## at item num ! ## vector of coefficients at math{[c_0 c_1 ... c_n]} ! ## of the SISO FIR transfer function ## at ifinfo ! ## ! ## C(z) = c0 + c1*z^ at {-1@} + c2*z^@{-2@} + ... + znz^@{-n@} ! ## ## at end ifinfo ## at iftex ## at tex ! ## $$C(z) = c0 + c1*z^{-1} + c2*z^{-2} + ... + znz^{-n}$$ ## at end tex ## at end iftex ## --- 18,44 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} fir2sys (@var{num}, @var{tsam}, @var{inname}, @var{outname}) ! ## construct a system data structure from at acronym{FIR} description ## ! ## at strong{Inputs} ## at table @var ## at item num ! ## vector of coefficients ## at ifinfo ! ## [c0, c1, ..., cn] ! ## at end ifinfo ! ## at iftex ! ## at tex ! ## $ [c_0, ~ c_1, ~ \ldots, ~ c_n ]$ ! ## at end tex ! ## at end iftex ! ## of the at acronym{SISO} @acronym{FIR} transfer function ! ## at ifinfo ! ## C(z) = c0 + c1*z^(-1) + c2*z^(-2) + ... + cn*z^(-n) ## at end ifinfo ## at iftex ## at tex ! ## $$ C(z) = c_0 + c_1\,z^{-1} + c_2\,z^{-2} + \ldots + c_n\,z^{-n} $$ ## at end tex ## at end iftex ## *************** *** 46,57 **** ## name of output signal; may be a string or a list with a single entry. ## at end table ## ! ## at strong{Outputs} ! ## at var{sys} (system data structure) ## ## at strong{Example} ## at example ! ## octave:1> sys = fir2sys([1 -1 2 4],0.342,"A/D input","filter output"); ## octave:2> sysout(sys) ## Input(s) ## 1: A/D input --- 52,67 ---- ## name of output signal; may be a string or a list with a single entry. ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item sys ! ## system data structure ! ## at end table ## ## at strong{Example} ## at example ! ## octave:1> sys = fir2sys([1 -1 2 4],0.342,\ ! ## > "A/D input","filter output"); ## octave:2> sysout(sys) ## Input(s) ## 1: A/D input *** octave-2.1.57.orig/scripts/control/system/is_abcd.m 2000-01-31 07:35:11.000000000 +0100 --- octave-2.1.57/scripts/control/system/is_abcd.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,27 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} is_abcd (@var{a}, @var{b}, @var{c}, @var{d}) ## Returns at var{retval} = 1 if the dimensions of @var{a}, @var{b}, ## at var{c}, @var{d} are compatible, otherwise @var{retval} = 0 with an ## appropriate diagnostic message printed to the screen. The matrices ! ## b, c, or d may be omitted. ## at end deftypefn ## at seealso{abcddim} --- 17,27 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{retval} =} is_abcd (@var{a}, @var{b}, @var{c}, @var{d}) ## Returns at var{retval} = 1 if the dimensions of @var{a}, @var{b}, ## at var{c}, @var{d} are compatible, otherwise @var{retval} = 0 with an ## appropriate diagnostic message printed to the screen. The matrices ! ## at var{b}, @var{c}, or @var{d} may be omitted. ## at end deftypefn ## at seealso{abcddim} *** octave-2.1.57.orig/scripts/control/system/is_controllable.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/system/is_controllable.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 38,45 **** ## Logical flag; returns true (1) if the system at var{sys} or the ## pair ( at var{a},@var{b}) is controllable, whichever was passed as input ## arguments. ! ## at item U ! ## U is an orthogonal basis of the controllable subspace. ## at end table ## ## at strong{Method} --- 38,45 ---- ## Logical flag; returns true (1) if the system at var{sys} or the ## pair ( at var{a},@var{b}) is controllable, whichever was passed as input ## arguments. ! ## at item u ! ## at var{u} is an orthogonal basis of the controllable subspace. ## at end table ## ## at strong{Method} *** octave-2.1.57.orig/scripts/control/system/is_detectable.m 2003-11-14 18:48:46.000000000 +0100 --- octave-2.1.57/scripts/control/system/is_detectable.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 23,29 **** ## ## Returns 1 if the system at var{a} or the pair (@var{a},@var{c})is ## detectable, 0 if not, and -1 if the system has unobservable modes at the ! ## imaginary axis (unit circle for discrete-time systems) ## ## at strong{See} @code{is_stabilizable} for detailed description of ## arguments and computational method. --- 23,29 ---- ## ## Returns 1 if the system at var{a} or the pair (@var{a},@var{c})is ## detectable, 0 if not, and -1 if the system has unobservable modes at the ! ## imaginary axis (unit circle for discrete-time systems). ## ## at strong{See} @code{is_stabilizable} for detailed description of ## arguments and computational method. *** octave-2.1.57.orig/scripts/control/system/is_digital.m 2000-01-31 07:35:11.000000000 +0100 --- octave-2.1.57/scripts/control/system/is_digital.m 2004-06-18 10:43:35.000000000 +0200 *************** *** 17,35 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} is_digital (@var{sys}) ! ## Return nonzero if system is digital; ! ## inputs: ! ## sys: system data structure ! ## eflg: 0 [default] exit with an error if system is mixed (continuous and ! ## discrete components) ! ## : 1 print a warning if system is mixed (continuous and discrete) ! ## : 2 silent operation ! ## outputs: ! ## DIGITAL: 0: system is purely continuous ! ## : 1: system is purely discrete ! ## : -1: system is mixed continuous and discrete ! ## Exits with an error of sys is a mixed (continuous and discrete) system ## at end deftypefn ## Author: A. S. Hodel --- 17,44 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{DIGITAL} =} is_digital (@var{sys}, @var{eflg}) ! ## Return nonzero if system is digital. ! ## ! ## at strong{Inputs} ! ## at table @var ! ## at item sys ! ## System data structure. ! ## at item eflg ! ## When equal to 0 (default value), exits with an error if the system ! ## is mixed (continuous and discrete components); when equal to 1, print ! ## a warning if the system is mixed (continuous and discrete); when equal ! ## to 2, operate silently. ! ## at end table ! ## ! ## at strong{Output} ! ## at table @var ! ## at item DIGITAL ! ## When equal to 0, the system is purely continuous; when equal to 1, the ! ## system is purely discrete; when equal to -1, the system is mixed continuous ! ## and discrete. ! ## at end table ! ## Exits with an error if at var{sys} is a mixed (continuous and discrete) system. ## at end deftypefn ## Author: A. S. Hodel *** octave-2.1.57.orig/scripts/control/system/is_observable.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/system/is_observable.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 21,32 **** ## at deftypefnx {Function File} {[@var{retval}, @var{u}] =} is_observable (@var{sys}, @var{tol}) ## Logical check for system observability. ## ! ## Default: tol = 10*norm(a,'fro')*eps ## ## Returns 1 if the system at var{sys} or the pair (@var{a},@var{c}) is ## observable, 0 if not. ## ! ## at strong{See} @code{is_controllable} for detailed description of arguments ## and default values. ## at end deftypefn ## at seealso{size, rows, columns, length, ismatrix, isscalar, and isvector} --- 21,32 ---- ## at deftypefnx {Function File} {[@var{retval}, @var{u}] =} is_observable (@var{sys}, @var{tol}) ## Logical check for system observability. ## ! ## Default: at code{tol = 10*norm(a,'fro')*eps} ## ## Returns 1 if the system at var{sys} or the pair (@var{a},@var{c}) is ## observable, 0 if not. ## ! ## See at command{is_controllable} for detailed description of arguments ## and default values. ## at end deftypefn ## at seealso{size, rows, columns, length, ismatrix, isscalar, and isvector} *** octave-2.1.57.orig/scripts/control/system/is_sample.m 2003-07-12 05:31:41.000000000 +0200 --- octave-2.1.57/scripts/control/system/is_sample.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,25 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} is_sample (@var{ts}) ## Return true if at var{ts} is a valid sampling time ! ## (real,scalar, > 0) ## at end deftypefn ## Author: A. S. Hodel --- 19,25 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} is_sample (@var{ts}) ## Return true if at var{ts} is a valid sampling time ! ## (real, scalar, > 0). ## at end deftypefn ## Author: A. S. Hodel *** octave-2.1.57.orig/scripts/control/system/is_siso.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/is_siso.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,24 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} is_siso (@var{sys}) ! ## return nonzero if the system data structure ## at var{sys} is single-input, single-output. ## at end deftypefn --- 18,24 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} is_siso (@var{sys}) ! ## Returns nonzero if the system data structure ## at var{sys} is single-input, single-output. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/system/is_stabilizable.m 2003-11-14 18:48:46.000000000 +0100 --- octave-2.1.57/scripts/control/system/is_stabilizable.m 2004-06-18 11:15:14.000000000 +0200 *************** *** 1,3 **** --- 1,5 ---- + ## Copyright (C) 1998 Kai P. Mueller + ## ## This file is part of Octave. ## ## Octave is free software; you can redistribute it and/or modify it *************** *** 19,30 **** ## at deftypefnx {Function File} {@var{retval} =} is_stabilizable (@var{a}, @var{b}, @var{tol}, @var{dflg}) ## Logical check for system stabilizability (i.e., all unstable modes are controllable). ## Returns 1 if the system is stabilizable, 0 if the the system is not stabilizable, -1 ! ## if the system has non stabilizable modes at the imaginary axis (unit circle for discrete-time ! ## systems. ! ## ! ## Test for stabilizability is performed via Hautus Lemma. If at var{dflg}!=0 assume that ! ## discrete-time matrices (a,b) are supplied. ## ## See also: size, rows, columns, length, ismatrix, isscalar, isvector ## is_observable, is_stabilizable, is_detectable --- 21,40 ---- ## at deftypefnx {Function File} {@var{retval} =} is_stabilizable (@var{a}, @var{b}, @var{tol}, @var{dflg}) ## Logical check for system stabilizability (i.e., all unstable modes are controllable). ## Returns 1 if the system is stabilizable, 0 if the the system is not stabilizable, -1 ! ## if the system has non stabilizable modes at the imaginary axis (unit circle for ! ## discrete-time systems. ## + ## Test for stabilizability is performed via Hautus Lemma. If + ## at iftex + ## at tex + ## at var{dflg}$\neq$0 + ## at end tex + ## at end iftex + ## at ifinfo + ## at var{dflg}!=0 + ## at end ifinfo + ## assume that discrete-time matrices (a,b) are supplied. + ## at end deftypefn ## See also: size, rows, columns, length, ismatrix, isscalar, isvector ## is_observable, is_stabilizable, is_detectable *** octave-2.1.57.orig/scripts/control/system/moddemo.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/moddemo.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,24 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} moddemo (@var{inputs}) ! ## Octave Controls toolbox demo: Model Manipulations demo ## at end deftypefn ## Author: David Clem --- 18,24 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} moddemo (@var{inputs}) ! ## Octave Control toolbox demo: Model Manipulations demo. ## at end deftypefn ## Author: David Clem *** octave-2.1.57.orig/scripts/control/system/ord2.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/ord2.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,24 **** --- 19,25 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} ord2 (@var{nfreq}, @var{damp}, @var{gain}) ## Creates a continuous 2nd order system with parameters: + ## ## at strong{Inputs} ## at table @var ## at item nfreq *************** *** 32,46 **** ## at end table ## at strong{Outputs} ## at var{outsys} ! ## system data structure has representation with at math{w = 2 * pi * nfreq}: ## at example ## / \ ## | / -2w*damp -w \ / w \ | ## G = | | |, | |, [ 0 gain ], 0 | ## | \ w 0 / \ 0 / | ## \ / ## at end example ! ## at strong{See also} @code{jet707} (MIMO example, Boeing 707-321 ## aircraft model) ## at end deftypefn --- 33,57 ---- ## at end table ## at strong{Outputs} ## at var{outsys} ! ## system data structure has representation with ! ## at ifinfo ! ## at math{w = 2 * pi * nfreq}: ! ## at end ifinfo ! ## at iftex ! ## at tex ! ## $ w = 2 \, \pi \, f $: ! ## at end tex ! ## at end iftex ## at example + ## at group ## / \ ## | / -2w*damp -w \ / w \ | ## G = | | |, | |, [ 0 gain ], 0 | ## | \ w 0 / \ 0 / | ## \ / + ## at end group ## at end example ! ## at strong{See also} @code{jet707} (@acronym{MIMO} example, Boeing 707-321 ## aircraft model) ## at end deftypefn *** octave-2.1.57.orig/scripts/control/system/parallel.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/parallel.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,34 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} parallel (@var{asys}, @var{bsys}) ## Forms the parallel connection of two systems. ## ! ## ____________________ ! ## | ________ | ## u ----->|----> | asys |--->|----> y1 ## | | -------- | ! ## | | ________ | ## |--->|----> | bsys |--->|----> y2 ## | -------- | ## -------------------- ## ksys ## at end deftypefn ## Author: David Clem --- 17,38 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{ksys} =} parallel (@var{asys}, @var{bsys}) ## Forms the parallel connection of two systems. ## ! ## at example ! ## at group ! ## -------------------- ! ## | -------- | ## u ----->|----> | asys |--->|----> y1 ## | | -------- | ! ## | | -------- | ## |--->|----> | bsys |--->|----> y2 ## | -------- | ## -------------------- ## ksys + ## at end group + ## at end example ## at end deftypefn ## Author: David Clem *** octave-2.1.57.orig/scripts/control/system/ss2sys.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/ss2sys.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,25 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} ss (@var{a}, @var{b}, @var{c}, @var{d}, @var{tsam}, @var{n}, @var{nz}, @var{stname}, @var{inname}, @var{outname}, @var{outlist}) ## Create system structure from state-space data. May be continous, ! ## discrete, or mixed (sampeled-data) ## ## at strong{Inputs} ## at table @var --- 19,25 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} ss (@var{a}, @var{b}, @var{c}, @var{d}, @var{tsam}, @var{n}, @var{nz}, @var{stname}, @var{inname}, @var{outname}, @var{outlist}) ## Create system structure from state-space data. May be continous, ! ## discrete, or mixed (sampled data) ## ## at strong{Inputs} ## at table @var *** octave-2.1.57.orig/scripts/control/system/ss2tf.m 2000-01-31 07:35:13.000000000 +0100 --- octave-2.1.57/scripts/control/system/ss2tf.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,39 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} ss2tf (@var{inputs}) ! ## at format ! ## [num,den] = ss2tf(a,b,c,d) ## Conversion from tranfer function to state-space. ! ## The state space system ## . ## x = Ax + Bu ## y = Cx + Du ## ! ## is converted to a transfer function ## ## num(s) ## G(s)=------- ## den(s) ## ! ## used internally in system data structure format manipulations ! ## at end format ## at end deftypefn ## Author: R. Bruce Tenison --- 17,55 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{num}, @var{den}] =} ss2tf (@var{a}, @var{b}, @var{c}, @var{d}) ## Conversion from tranfer function to state-space. ! ## The state space system: ! ## at iftex ! ## at tex ! ## $$ \dot x = A\,x + B\,u $$ ! ## $$ y = C\,x + D\,u $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at example ## . ## x = Ax + Bu ## y = Cx + Du + ## at end example + ## at end ifinfo ## ! ## is converted to a transfer function: ! ## at iftex ! ## at tex ! ## $$ G(s) = { { \rm num }(s) \over { \rm den }(s) } $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at example ## ## num(s) ## G(s)=------- ## den(s) + ## at end example + ## at end ifinfo ## ! ## used internally in system data structure format manipulations. ## at end deftypefn ## Author: R. Bruce Tenison *** octave-2.1.57.orig/scripts/control/system/ss2zp.m 2000-01-31 07:35:13.000000000 +0100 --- octave-2.1.57/scripts/control/system/ss2zp.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,31 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} ss2zp (@var{inputs}) ! ## at format ! ## Converts a state space representation to a set of poles and zeros. ## ! ## [pol,zer,k] = ss2zp(a,b,c,d) returns the poles and zeros of the state space ! ## system (a,b,c,d). K is a gain associated with the zeros. ! ## ! ## used internally in system data structure format manipulations ! ## at end format ## at end deftypefn ## Author: David Clem --- 17,27 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{pol}, @var{zer}, @var{k}] =} ss2zp (@var{a}, @var{b}, @var{c}, @var{d}) ! ## Converts a state space representation to a set of poles and zeros; ! ## at var{k} is a gain associated with the zeros. ## ! ## Used internally in system data structure format manipulations. ## at end deftypefn ## Author: David Clem *** octave-2.1.57.orig/scripts/control/system/ss.m 2004-02-17 03:34:33.000000000 +0100 --- octave-2.1.57/scripts/control/system/ss.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,25 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} ss (@var{a}, @var{b}, @var{c}, @var{d}, @var{tsam}, @var{n}, @var{nz}, @var{stname}, @var{inname}, @var{outname}, @var{outlist}) ## Create system structure from state-space data. May be continous, ! ## discrete, or mixed (sampeled-data) ## ## at strong{Inputs} ## at table @var --- 19,25 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} ss (@var{a}, @var{b}, @var{c}, @var{d}, @var{tsam}, @var{n}, @var{nz}, @var{stname}, @var{inname}, @var{outname}, @var{outlist}) ## Create system structure from state-space data. May be continous, ! ## discrete, or mixed (sampled data) ## ## at strong{Inputs} ## at table @var *** octave-2.1.57.orig/scripts/control/system/starp.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/system/starp.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,27 **** ## -*- texinfo -*- ## at deftypefn {Function File} {} starp (@var{P}, @var{K}, @var{ny}, @var{nu}) - ## at format ## ## Redheffer star product or upper/lower LFT, respectively. ! ## ## ## +-------+ ## --------->| |---------> --- 18,27 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {} starp (@var{P}, @var{K}, @var{ny}, @var{nu}) ## ## Redheffer star product or upper/lower LFT, respectively. ! ## at example ! ## at group ## ## +-------+ ## --------->| |---------> *************** *** 37,50 **** ## | K | ## --------->| |---------> ## +-------+ ## ! ## If ny and nu "consume" all inputs and outputs of K then the result ! ## is a lower fractional transformation. If ny and nu "consume" all ! ## inputs and outputs of P then the result is an upper fractional ! ## transformation. ! ## ! ## ny and/or nu may be negative (= negative feedback) ! ## at end format ## at end deftypefn ## Author: Kai P. Mueller --- 37,50 ---- ## | K | ## --------->| |---------> ## +-------+ + ## at end group + ## at end example + ## If at var{ny} and @var{nu} ``consume'' all inputs and outputs of + ## at var{K} then the result is a lower fractional transformation. + ## If at var{ny} and @var{nu} ``consume'' all inputs and outputs of + ## at var{P} then the result is an upper fractional transformation. ## ! ## at var{ny} and/or @var{nu} may be negative (i.e. negative feedback). ## at end deftypefn ## Author: Kai P. Mueller *** octave-2.1.57.orig/scripts/control/system/sysappend.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysappend.m 2004-06-18 10:42:06.000000000 +0200 *************** *** 17,28 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} sysappend (@var{sys}, @var{b}, @var{c}, @var{d}, @var{outname}, @var{inname}, @var{yd}) ## appends new inputs and/or outputs to a system ## ## at strong{Inputs} ## at table @var ! ## at item sys ## system data structure ## ## at item b --- 17,28 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{sys} =} sysappend (@var{syst}, @var{b}, @var{c}, @var{d}, @var{outname}, @var{inname}, @var{yd}) ## appends new inputs and/or outputs to a system ## ## at strong{Inputs} ## at table @var ! ## at item syst ## system data structure ## ## at item b *************** *** 45,58 **** ## at math{yd(ii)=1} indicates a discrete output. ## at end table ## ! ## at strong{Outputs} @var{sys} ## at example ## at group ! ## sys.b := [sys.b , b] ! ## sys.c := [sys.c ] ## [ c ] ! ## sys.d := [sys.d | D12 ] ! ## [D21 | D22 ] ## at end group ## at end example ## where at math{D12}, @math{D21}, and @math{D22} are the appropriate dimensioned --- 45,60 ---- ## at math{yd(ii)=1} indicates a discrete output. ## at end table ## ! ## at strong{Outputs} ! ## at table @var ! ## at item sys ## at example ## at group ! ## sys.b := [syst.b , b] ! ## sys.c := [syst.c ] ## [ c ] ! ## sys.d := [syst.d | D12 ] ! ## [ D21 | D22 ] ## at end group ## at end example ## where at math{D12}, @math{D21}, and @math{D22} are the appropriate dimensioned *************** *** 63,75 **** ## the new inputs and outputs are be assigned default names. ## at item @var{yd} is a binary vector of length rows(c) that indicates ## continuous/sampled outputs. Default value for at var{yd} is: ! ## ! ## at item @var{sys} = continuous or mixed ## at var{yd} = @code{zeros(1,rows(c))} ## ! ## at item @var{sys} = discrete ## at var{yd} = @code{ones(1,rows(c))} ## at end itemize ## at end deftypefn ## Author: John Ingram --- 65,79 ---- ## the new inputs and outputs are be assigned default names. ## at item @var{yd} is a binary vector of length rows(c) that indicates ## continuous/sampled outputs. Default value for at var{yd} is: ! ## at itemize @minus ! ## at item @var{sys} is continuous or mixed ## at var{yd} = @code{zeros(1,rows(c))} ## ! ## at item @var{sys} is discrete ## at var{yd} = @code{ones(1,rows(c))} ## at end itemize + ## at end itemize + ## at end table ## at end deftypefn ## Author: John Ingram *** octave-2.1.57.orig/scripts/control/system/sysconnect.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysconnect.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,23 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} sysconnect (@var{sys}, @var{out_idx}, @var{in_idx}, @var{order}, @var{tol}) ## Close the loop from specified outputs to respective specified inputs ## ## at strong{Inputs} --- 17,23 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{clsys} =} sysconnect (@var{sys}, @var{out_idx}, @var{in_idx}, @var{order}, @var{tol}) ## Close the loop from specified outputs to respective specified inputs ## ## at strong{Inputs} *************** *** 42,61 **** ## at end table ## ## at strong{Outputs} ! ## at var{sys}: resulting closed loop system. ## ## at strong{Method} ## at code{sysconnect} internally permutes selected inputs, outputs as shown ## below, closes the loop, and then permutes inputs and outputs back to their ## original order ## at example ## at group ! ## ____________________ ## u_1 ----->| |----> y_1 ## | sys | ## old u_2 | | ## u_2* ---->(+)--->| |----->y_2 ! ## (in_idx) ^ -------------------| | (out_idx) ## | | ## ------------------------------- ## at end group --- 42,65 ---- ## at end table ## ## at strong{Outputs} ! ## at table @var ! ## at item clsys ! ## resulting closed loop system. ! ## at end table ## ## at strong{Method} + ## ## at code{sysconnect} internally permutes selected inputs, outputs as shown ## below, closes the loop, and then permutes inputs and outputs back to their ## original order ## at example ## at group ! ## -------------------- ## u_1 ----->| |----> y_1 ## | sys | ## old u_2 | | ## u_2* ---->(+)--->| |----->y_2 ! ## (in_idx) ^ -------------------- | (out_idx) ## | | ## ------------------------------- ## at end group *** octave-2.1.57.orig/scripts/control/system/syscont.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/syscont.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 20,27 **** ## at deftypefn {Function File} {[@var{csys}, @var{acd}, @var{ccd}] =} syscont (@var{sys}) ## Extract the purely continuous subsystem of an input system. ## ! ## at strong{Inputs} ! ## at var{sys} is a system data structure ## ## at strong{Outputs} ## at table @var --- 20,30 ---- ## at deftypefn {Function File} {[@var{csys}, @var{acd}, @var{ccd}] =} syscont (@var{sys}) ## Extract the purely continuous subsystem of an input system. ## ! ## at strong{Input} ! ## at table @var ! ## at item sys ! ## system data structure. ! ## at end table ## ## at strong{Outputs} ## at table @var *** octave-2.1.57.orig/scripts/control/system/sysdisc.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysdisc.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,35 **** ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{dsys}, @var{adc}, @var{cdc}] =} sysdisc (@var{sys}) ## ! ## at strong{Inputs} ! ## at var{sys} = system data structure ## ## at strong{Outputs} ## at table @var ## at item dsys ! ## purely discrete portion of sys (returned empty if there is ! ## no purely discrete path from inputs to outputs) ## at item adc ## at itemx cdc ! ## connections from continuous states to discrete states and discrete ## outputs, respectively. ## at end table ## at end deftypefn --- 19,38 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{dsys}, @var{adc}, @var{cdc}] =} sysdisc (@var{sys}) ## ! ## at strong{Input} ! ## at table @var ! ## at item sys ! ## System data structure. ! ## at end table ## ## at strong{Outputs} ## at table @var ## at item dsys ! ## Purely discrete portion of sys (returned empty if there is ! ## no purely discrete path from inputs to outputs). ## at item adc ## at itemx cdc ! ## Connections from continuous states to discrete states and discrete. ## outputs, respectively. ## at end table ## at end deftypefn *** octave-2.1.57.orig/scripts/control/system/sysdup.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysdup.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,23 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} sysdup (@var{asys}, @var{out_idx}, @var{in_idx}) ## Duplicate specified input/output connections of a system ## ## at strong{Inputs} --- 17,23 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{retsys} =} sysdup (@var{asys}, @var{out_idx}, @var{in_idx}) ## Duplicate specified input/output connections of a system ## ## at strong{Inputs} *************** *** 30,52 **** ## duplicates are made of at code{y(out_idx(ii))} and @code{u(in_idx(ii))}. ## at end table ## ! ## at strong{Outputs} ! ## at var{retsys}: resulting closed loop system: ## duplicated i/o names are appended with a at code{"+"} suffix. ! ## ## ## at strong{Method} ## at code{sysdup} creates copies of selected inputs and outputs as ! ## shown below. u1/y1 is the set of original inputs/outputs, and ! ## u2,y2 is the set of duplicated inputs/outputs in the order specified ! ## in at var{in_idx}, @var{out_idx}, respectively ## at example ## at group ## ____________________ ## u1 ----->| |----> y1 ## | asys | ## u2 ------>| |----->y2 ! ## (in_idx) -------------------| (out_idx) ## at end group ## at end example ## at end deftypefn --- 30,55 ---- ## duplicates are made of at code{y(out_idx(ii))} and @code{u(in_idx(ii))}. ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item retsys ! ## Resulting closed loop system: ## duplicated i/o names are appended with a at code{"+"} suffix. ! ## at end table ## ## at strong{Method} + ## ## at code{sysdup} creates copies of selected inputs and outputs as ! ## shown below. at var{u1}, @var{y1} is the set of original inputs/outputs, and ! ## at var{u2}, @var{y2} is the set of duplicated inputs/outputs in the order ! ## specified in at var{in_idx}, @var{out_idx}, respectively ## at example ## at group ## ____________________ ## u1 ----->| |----> y1 ## | asys | ## u2 ------>| |----->y2 ! ## (in_idx) -------------------- (out_idx) ## at end group ## at end example ## at end deftypefn *** octave-2.1.57.orig/scripts/control/system/sysgetsignals.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysgetsignals.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 89,95 **** ## ## at end table ## ! ## at item if the first three input arguments are specified, then @var{signame} is ## a cell array of the specified signal names ( at var{sigid} is @code{"in"}, ## at code{"out"}, or @code{"st"}), or else the logical flag ## indicating whether output(s) at var{signum} is(are) discrete (@var{sigval}=1) --- 89,95 ---- ## ## at end table ## ! ## at item If the first three input arguments are specified, then @var{signame} is ## a cell array of the specified signal names ( at var{sigid} is @code{"in"}, ## at code{"out"}, or @code{"st"}), or else the logical flag ## indicating whether output(s) at var{signum} is(are) discrete (@var{sigval}=1) *************** *** 99,105 **** ## at strong{Examples} (From @code{sysrepdemo}) ## at example ## octave> sys=ss(rand(4),rand(4,2),rand(3,4)); ! ## octave> [Ast,Ain,Aout,Ayd] = sysgetsignals(sys) i # get all signal names ## Ast = ## ( ## [1] = x_1 --- 99,106 ---- ## at strong{Examples} (From @code{sysrepdemo}) ## at example ## octave> sys=ss(rand(4),rand(4,2),rand(3,4)); ! ## octave># get all signal names ! ## octave> [Ast,Ain,Aout,Ayd] = sysgetsignals(sys) ## Ast = ## ( ## [1] = x_1 *************** *** 121,138 **** ## Ayd = ## ## 0 0 0 ! ## octave> Ain = sysgetsignals(sys,"in") # get only input signal names ## Ain = ## ( ## [1] = u_1 ## [2] = u_2 ## ) ! ## octave> Aout = sysgetsignals(sys,"out",2) # get name of output 2 (in cell array) ## Aout = ## ( ## [1] = y_2 ## ) ! ## octave> Aout = sysgetsignals(sys,"out",2,1) # get name of output 2 (as string) ## Aout = y_2 ## at end example ## at end deftypefn --- 122,142 ---- ## Ayd = ## ## 0 0 0 ! ## octave> # get only input signal names: ! ## octave> Ain = sysgetsignals(sys,"in") ## Ain = ## ( ## [1] = u_1 ## [2] = u_2 ## ) ! ## octave> # get name of output 2 (in cell array): ! ## octave> Aout = sysgetsignals(sys,"out",2) ## Aout = ## ( ## [1] = y_2 ## ) ! ## octave> # get name of output 2 (as string): ! ## octave> Aout = sysgetsignals(sys,"out",2,1) ## Aout = y_2 ## at end example ## at end deftypefn *** octave-2.1.57.orig/scripts/control/system/sysgroup.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysgroup.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,30 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} sysgroup (@var{asys}, @var{bsys}) ! ## Combines two systems into a single system ## ## at strong{Inputs} ! ## at var{asys}, @var{bsys}: system data structures ## ! ## at strong{Outputs} ## at math{sys = @r{block diag}(asys,bsys)} ## at example ## at group ## __________________ --- 17,37 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{sys} =} sysgroup (@var{asys}, @var{bsys}) ! ## Combines two systems into a single system. ## ## at strong{Inputs} ! ## at table @var ! ## at item asys ! ## at itemx bsys ! ## System data structures. ! ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item sys ## at math{sys = @r{block diag}(asys,bsys)} + ## at end table ## at example ## at group ## __________________ *************** *** 39,46 **** ## at end group ## at end example ## The function also rearranges the internal state-space realization of at var{sys} ! ## so that the ! ## continuous states come first and the discrete states come last. ## If there are duplicate names, the second name has a unique suffix appended ## on to the end of the name. ## at end deftypefn --- 46,52 ---- ## at end group ## at end example ## The function also rearranges the internal state-space realization of at var{sys} ! ## so that the continuous states come first and the discrete states come last. ## If there are duplicate names, the second name has a unique suffix appended ## on to the end of the name. ## at end deftypefn *** octave-2.1.57.orig/scripts/control/system/sysmin.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysmin.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,37 **** ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{retsys}, @var{nc}, @var{no}] =} sysmin (@var{sys}, @var{flg}) ! ## return a minimal (or reduced order) system ! ## inputs: ! ## sys: system data structure ! ## flg: 0 [default] return minimal system; state names lost ! ## : 1 return system with physical states removed that ! ## are either uncontrollable or unobservable ! ## (cannot reduce further without discarding physical ! ## meaning of states) ! ## outputs: ! ## retsys: returned system ! ## nc: number of controllable states in the returned system ! ## no: number of observable states in the returned system ! ## cflg: is_controllable(retsys) ! ## oflg: is_observable(retsys) ## at end deftypefn ## Author: A. S. Hodel --- 18,49 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{retsys}, @var{nc}, @var{no}] =} sysmin (@var{sys}, @var{flg}) ! ## Returns a minimal (or reduced order) system ! ## ! ## at strong{Inputs} ! ## at table @var ! ## at item sys ! ## System data structure ! ## at item flg ! ## When equal to 0 (default value), returns minimal system, ! ## in which state names are lost; when equal to 1, returns system ! ## with physical states removed that are either uncontrollable or ! ## unobservable (cannot reduce further without discarding physical ! ## meaning of states). ! ## at end table ! ## at strong{Outputs} ! ## at table @var ! ## at item retsys ! ## Returned system. ! ## at item nc ! ## Number of controllable states in the returned system. ! ## at item no ! ## Number of observable states in the returned system. ! ## at item cflg ! ## at code{is_controllable(retsys)} dot ! ## at item oflg ! ## at code{is_observable(retsys)} dot ! ## at end table ## at end deftypefn ## Author: A. S. Hodel *** octave-2.1.57.orig/scripts/control/system/sysmult.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysmult.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,34 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} sysmult (@var{asys}, @var{bsys}) ## Compute at math{sys = Asys*Bsys} (series connection): ## at example ## at group ## u ---------- ---------- ! ## --->| bsys |---->| asys |---> ## ---------- ---------- ## at end group ## at end example ! ## A warning occurs if there is direct feed-through ! ## from an input of Bsys or a continuous state of at var{bsys} through a ! ## discrete output of Bsys to a continuous state or output in at var{asys} ## (system data structure does not recognize discrete inputs). ## at end deftypefn --- 17,34 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{sys} =} sysmult (@var{Asys}, @var{Bsys}) ## Compute at math{sys = Asys*Bsys} (series connection): ## at example ## at group ## u ---------- ---------- ! ## --->| Bsys |---->| Asys |---> ## ---------- ---------- ## at end group ## at end example ! ## A warning occurs if there is direct feed-through from an input ! ## or a continuous state of at var{Bsys}, through a discrete output ! ## of at var{Bsys}, to a continuous state or output in @var{Asys} ## (system data structure does not recognize discrete inputs). ## at end deftypefn *** octave-2.1.57.orig/scripts/control/system/sysprune.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysprune.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,23 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} sysprune (@var{asys}, @var{out_idx}, @var{in_idx}) ## Extract specified inputs/outputs from a system ## ## at strong{Inputs} --- 17,23 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{retsys} =} sysprune (@var{asys}, @var{out_idx}, @var{in_idx}) ## Extract specified inputs/outputs from a system ## ## at strong{Inputs} *************** *** 26,32 **** ## system data structure ## at item out_idx ## at itemx in_idx - ## ## Indices or signal names of the outputs and inputs to be kept in the returned ## system; remaining connections are "pruned" off. ## May select as [] (empty matrix) to specify all outputs/inputs. --- 26,31 ---- *************** *** 38,45 **** ## ## at end table ## ! ## at strong{Outputs} ! ## at var{retsys}: resulting system ## at example ## at group ## ____________________ --- 37,47 ---- ## ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item retsys ! ## Resulting system. ! ## at end table ## at example ## at group ## ____________________ *** octave-2.1.57.orig/scripts/control/system/sysreorder.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/system/sysreorder.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,30 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} sysreorder (@var{vlen}, @var{list}) ## ## at strong{Inputs} ! ## at var{vlen}=vector length, @var{list}= a subset of @code{[1:vlen]}, ## ! ## at strong{Outputs} ! ## at var{pv}: a permutation vector to order elements of @code{[1:vlen]} in ## at code{list} to the end of a vector. ## ## Used internally by at code{sysconnect} to permute vector elements to their ## desired locations. --- 17,38 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{pv} =} sysreorder (@var{vlen}, @var{list}) ## ## at strong{Inputs} ! ## at table @var ! ## at item vlen ! ## Vector length. ! ## at item list ! ## A subset of at code{[1:vlen]} dot ! ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item pv ! ## A permutation vector to order elements of at code{[1:vlen]} in ## at code{list} to the end of a vector. + ## at end table ## ## Used internally by at code{sysconnect} to permute vector elements to their ## desired locations. *** octave-2.1.57.orig/scripts/control/system/sysscale.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/sysscale.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,36 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} sysscale (@var{sys}, @var{outscale}, @var{inscale}, @var{outname}, @var{inname}) ## scale inputs/outputs of a system. ## ## at strong{Inputs} ! ## sys: structured system ! ## outscale, inscale: constant matrices of appropriate dimension ## ! ## at strong{Outputs} ! ## at var{sys}: resulting open loop system: ## at example ## ----------- ------- ----------- ## u --->| inscale |--->| sys |--->| outscale |---> y ## ----------- ------- ----------- ## at end example ## If the input names and output names (each a list of strings) ## are not given and the scaling matrices ## are not square, then default names will be given to the inputs and/or --- 17,47 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{retsys} =} sysscale (@var{sys}, @var{outscale}, @var{inscale}, @var{outname}, @var{inname}) ## scale inputs/outputs of a system. ## ## at strong{Inputs} ! ## at table @var ! ## at item sys ! ## Structured system. ! ## at item outscale ! ## at itemx inscale ! ## Constant matrices of appropriate dimension. ! ## at item outname ! ## at itemx inname ! ## Lists of strings with the names of respectively outputs and inputs. ! ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item retsys ! ## resulting open loop system: ## at example ## ----------- ------- ----------- ## u --->| inscale |--->| sys |--->| outscale |---> y ## ----------- ------- ----------- ## at end example + ## at end table ## If the input names and output names (each a list of strings) ## are not given and the scaling matrices ## are not square, then default names will be given to the inputs and/or *** octave-2.1.57.orig/scripts/control/system/syssub.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/syssub.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,38 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} syssub (@var{gsys}, @var{hsys}) ## Return at math{sys = Gsys - Hsys}. ## ! ## Method: at var{gsys} and @var{hsys} are connected in parallel ## The input vector is connected to both systems; the outputs are ! ## subtracted. Returned system names are those of at var{gsys} dot ## at example ## at group ## +--------+ ! ## +--->| gsys |---+ ## | +--------+ | ## | +| ## u --+ (_)--> y ## | -| ## | +--------+ | ! ## +--->| hsys |---+ ## +--------+ ## at end group ## at end example --- 17,40 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {@var{sys} =} syssub (@var{Gsys}, @var{Hsys}) ## Return at math{sys = Gsys - Hsys}. ## ! ## at strong{Method} ! ## ! ## at var{Gsys} and @var{Hsys} are connected in parallel. ## The input vector is connected to both systems; the outputs are ! ## subtracted. Returned system names are those of at var{Gsys} dot ## at example ## at group ## +--------+ ! ## +--->| Gsys |---+ ## | +--------+ | ## | +| ## u --+ (_)--> y ## | -| ## | +--------+ | ! ## +--->| Hsys |---+ ## +--------+ ## at end group ## at end example *** octave-2.1.57.orig/scripts/control/system/tf2ss.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/system/tf2ss.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,45 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} tf2ss (@var{inputs}) ! ## at format ## Conversion from tranfer function to state-space. ! ## The state space system ## . ## x = Ax + Bu ## y = Cx + Du ! ## ! ## is obtained from a transfer function ! ## ## num(s) ## G(s)=------- ## den(s) ## ! ## via the function call [a,b,c,d] = tf2ss(num,den). ! ## The vector 'den' must contain only one row, whereas the vector 'num' ! ## may contain as many rows as there are outputs of the system 'y'. ! ## The state space system matrices obtained from this function will be ! ## in controllable canonical form as described in "Modern Control Theory", ! ## [Brogan, 1991]. ! ## ! ## ! ## at end format ## at end deftypefn ## Author: R. Bruce Tenison --- 17,57 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{a}, @var{b}, @var{c}, @var{d}] =} tf2ss (@var{num}, @var{den}) ## Conversion from tranfer function to state-space. ! ## The state space system: ! ## at iftex ! ## at tex ! ## $$ \dot x = A\,x + B\,u $$ ! ## $$ y = C\,x + D\,u $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at example ## . ## x = Ax + Bu ## y = Cx + Du ! ## at end example ! ## at end ifinfo ! ## is obtained from a transfer function: ! ## at iftex ! ## at tex ! ## $$ G(s) = { { \rm num }(s) \over { \rm den }(s) } $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ! ## at example ## num(s) ## G(s)=------- ## den(s) + ## at end example + ## at end ifinfo ## ! ## The vector at var{den} must contain only one row, whereas the vector ! ## at var{num} may contain as many rows as there are outputs @var{y} of ! ## the system. The state space system matrices obtained from this function ! ## will be in controllable canonical form as described in ``Modern Control ! ## Theory'', [Brogan, 1991]. ## at end deftypefn ## Author: R. Bruce Tenison *** octave-2.1.57.orig/scripts/control/system/tf2zp.m 2003-07-12 05:31:41.000000000 +0200 --- octave-2.1.57/scripts/control/system/tf2zp.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,27 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} tf2zp (@var{inputs}) ! ## Converts transfer functions to poles / zeros. ## ! ## [zer,pol,k] = tf2zp(num,den) returns the zeros and poles of the SISO system ! ## defined by num/den. K is a gain associated with the system zeros. ## at end deftypefn ## Author: A. S. Hodel --- 17,28 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{zer}, @var{pol}, @var{k}] =} tf2zp (@var{num}, @var{den}) ! ## Converts transfer functions to poles-and-zero representations. ## ! ## Returns the zeros and poles of the at acronym{SISO} system defined ! ## by at var{num}/@var{den} dot ! ## at var{k} is a gain associated with the system zeros. ## at end deftypefn ## Author: A. S. Hodel *** octave-2.1.57.orig/scripts/control/system/ugain.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/ugain.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 20,27 **** ## at deftypefn {Function File} {} ugain (@var{n}) ## Creates a system with unity gain, no states. ## This trivial system is sometimes needed to create arbitrary ! ## complex systems from simple systems with buildssic. ! ## Watch out if you are forming sampled systems since "ugain" ## does not contain a sampling period. ## at end deftypefn ## at seealso{hinfdemo and jet707} --- 20,27 ---- ## at deftypefn {Function File} {} ugain (@var{n}) ## Creates a system with unity gain, no states. ## This trivial system is sometimes needed to create arbitrary ! ## complex systems from simple systems with at command{buildssic} dot ! ## Watch out if you are forming sampled systems since at command{ugain} ## does not contain a sampling period. ## at end deftypefn ## at seealso{hinfdemo and jet707} *** octave-2.1.57.orig/scripts/control/system/zp2ss.m 2004-02-16 20:57:22.000000000 +0100 --- octave-2.1.57/scripts/control/system/zp2ss.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,49 **** ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{a}, @var{b}, @var{c}, @var{d}] =} zp2ss (@var{zer}, @var{pol}, @var{k}) ## Conversion from zero / pole to state space. ## at strong{Inputs} ## at table @var ## at item zer ## at itemx pol ! ## vectors of (possibly) complex poles and zeros of a transfer ! ## function. Complex values must come in conjugate pairs ! ## (i.e., x+jy in zer means that x-jy is also in zer) ## at item k ! ## real scalar (leading coefficient) ## at end table ## at strong{Outputs} ! ## at var{a}, @var{b}, @var{c}, @var{d} ! ## The state space system ## at example ! ## . ! ## x = Ax + Bu ! ## y = Cx + Du ## at end example ! ## is obtained from a vector of zeros and a vector of poles via the ! ## function call at code{[a,b,c,d] = zp2ss(zer,pol,k)}. ! ## The vectors at samp{zer} and ! ## at samp{pol} may either be row or column vectors. Each zero and pole that ! ## has an imaginary part must have a conjugate in the list. ! ## The number of zeros must not exceed the number of poles. ! ## at samp{k} is @code{zp}-form leading coefficient. ## at end deftypefn ## Author: David Clem --- 19,58 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{a}, @var{b}, @var{c}, @var{d}] =} zp2ss (@var{zer}, @var{pol}, @var{k}) ## Conversion from zero / pole to state space. + ## ## at strong{Inputs} ## at table @var ## at item zer ## at itemx pol ! ## Vectors of (possibly) complex poles and zeros of a transfer ! ## function. Complex values must come in conjugate pairs ! ## (i.e., at math{x+jy} in @var{zer} means that @math{x-jy} is also in @var{zer}). ! ## The number of zeros must not exceed the number of poles. ## at item k ! ## Real scalar (leading coefficient). ## at end table + ## ## at strong{Outputs} ! ## at table @var ! ## at item @var{a} ! ## at itemx @var{b} ! ## at itemx @var{c} ! ## at itemx @var{d} ! ## The state space system, in the form: ! ## at iftex ! ## at tex ! ## $$ \dot x = A\,x + B\,u $$ ! ## $$ y = C\,x + D\,u $$ ! ## at end tex ! ## at end iftex ! ## at ifinfo ## at example ! ## . ! ## x = Ax + Bu ! ## y = Cx + Du ## at end example ! ## at end ifinfo ! ## at end table ## at end deftypefn ## Author: David Clem *** octave-2.1.57.orig/scripts/control/system/zp2tf.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/system/zp2tf.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,35 **** ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{num}, @var{den}] =} zp2tf (@var{zer}, @var{pol}, @var{k}) ## Converts zeros / poles to a transfer function. ## at strong{Inputs} ## at table @var ## at item zer ## at itemx pol ! ## vectors of (possibly complex) poles and zeros of a transfer ! ## function. Complex values should appear in conjugate pairs ## at item k ! ## real scalar (leading coefficient) ## at end table - ## at code{[num,den] = zp2tf(zer,pol,k)} forms the transfer function - ## at code{num/den} from the vectors of poles and zeros. ## at end deftypefn ## Author: A. S. Hodel --- 19,34 ---- ## -*- texinfo -*- ## at deftypefn {Function File} {[@var{num}, @var{den}] =} zp2tf (@var{zer}, @var{pol}, @var{k}) ## Converts zeros / poles to a transfer function. + ## ## at strong{Inputs} ## at table @var ## at item zer ## at itemx pol ! ## Vectors of (possibly complex) poles and zeros of a transfer ! ## function. Complex values must appear in conjugate pairs. ## at item k ! ## Real scalar (leading coefficient). ## at end table ## at end deftypefn ## Author: A. S. Hodel *** octave-2.1.57.orig/scripts/control/util/axis2dlim.m 2000-01-31 07:35:18.000000000 +0100 --- octave-2.1.57/scripts/control/util/axis2dlim.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,32 **** ## -*- texinfo -*- ## at deftypefn{Function File} {} axis2dlim (@var{axdata}) ! ## determine axis limits for 2-d data(column vectors); leaves a 10% margin ! ## around the plots. ! ## puts in margins of +/- 0.1 if data is one dimensional (or a single point) ## ! ## at strong{Inputs} ! ## at var{axdata} nx2 matrix of data [x,y] ## ! ## at strong{Outputs} ! ## at var{axvec} vector of axis limits appropriate for call to axis() function ## at end deftypefn function axvec = axis2dlim (axdata) --- 18,39 ---- ## -*- texinfo -*- ## at deftypefn{Function File} {} axis2dlim (@var{axdata}) ! ## determine axis limits for 2-D data (column vectors); leaves a 10% ! ## margin around the plots. ! ## Inserts margins of +/- 0.1 if data is one-dimensional ! ## (or a single point) ## ! ## at strong{Input} ! ## at table @var ! ## at item axdata ! ## nx2 matrix of data [x,y] ! ## at end table ## ! ## at strong{Output} ! ## at table @var ! ## at item axvec ! ## Vector of axis limits appropriate for call to axis() function ! ## at end table ## at end deftypefn function axvec = axis2dlim (axdata) *** octave-2.1.57.orig/scripts/control/util/prompt.m 2003-07-12 05:31:41.000000000 +0200 --- octave-2.1.57/scripts/control/util/prompt.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,28 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} prompt (@var{inputs}) ! ## at format ! ## function prompt([str]) ## Prompt user to continue ! ## str: input string. Default value: "\n ---- Press a key to continue ---" ! ## at end format ## at end deftypefn ## Author: David Clem --- 17,33 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} prompt (@var{str}) ## Prompt user to continue ! ## ! ## at strong{Input} ! ## at table @var ! ## at item str ! ## Input string. Its default value is: ! ## at example ! ## \n ---- Press a key to continue --- ! ## at end example ! ## at end table ## at end deftypefn ## Author: David Clem *** octave-2.1.57.orig/scripts/control/util/sortcom.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/control/util/sortcom.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,36 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} sortcom (@var{inputs}) ! ## at format ! ## [yy,idx] = sortcom(xx[,opt]): sort a complex vector ! ## xx: complex vector ! ## opt: sorting option: ! ## "re": real part (default) ! ## "mag": by magnitude ! ## "im": by imaginary part ## ! ## if opt != "im" then complex conjugate pairs are grouped together, ! ## a - jb followed by a + jb. ! ## yy: sorted values ! ## idx: permutation vector: yy = xx(idx) ! ## at end format ## at end deftypefn ## Author: A. S. Hodel --- 17,50 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {[@var{yy}, @var{idx}] =} sortcom (@var{xx}[, @var{opt}]) ! ## Sort a complex vector. ## ! ## at strong{Inputs} ! ## at table @var ! ## at item xx ! ## Complex vector ! ## at item opt ! ## sorting option: ! ## at table @code ! ## at item "re" ! ## Real part (default); ! ## at item "mag" ! ## By magnitude; ! ## at item "im" ! ## By imaginary part. ! ## at end table ! ## if at var{opt} is not chosen as @code{"im"}, then complex conjugate pairs are grouped together, ! ## at math{a - jb} followed by @math{a + jb}. ! ## at end table ! ## ! ## at strong{Outputs} ! ## at table @var ! ## at item yy ! ## Sorted values ! ## at item idx ! ## Permutation vector: at code{yy = xx(idx)} ! ## at end table ## at end deftypefn ## Author: A. S. Hodel *** octave-2.1.57.orig/scripts/elfun/acoth.m 2000-01-14 03:54:57.000000000 +0100 --- octave-2.1.57/scripts/elfun/acoth.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 18,24 **** ## 02111-1307, USA. ## -*- texinfo -*- ! ## at deftypefn {Mapping Function} acoth (@var{x}) ## Compute the inverse hyperbolic cotangent of each element of at var{x} dot ## at end deftypefn --- 18,24 ---- ## 02111-1307, USA. ## -*- texinfo -*- ! ## at deftypefn {Mapping Function} {} acoth (@var{x}) ## Compute the inverse hyperbolic cotangent of each element of at var{x} dot ## at end deftypefn *** octave-2.1.57.orig/scripts/linear-algebra/commutation_matrix.m 2002-08-09 20:58:14.000000000 +0200 --- octave-2.1.57/scripts/linear-algebra/commutation_matrix.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 40,46 **** ## matrix such that ## at iftex ## at tex ! ## $K_{m,n} \cdot {\rm vec} (A) = {\rm vec} (A^T)$ ## at end tex ## at end iftex ## at ifinfo --- 40,46 ---- ## matrix such that ## at iftex ## at tex ! ## $K_{m,n} \cdot {\rm vec} (A) = {\rm vec} (A')$ ## at end tex ## at end iftex ## at ifinfo *** octave-2.1.57.orig/scripts/polynomial/polyout.m 2002-08-09 20:58:15.000000000 +0200 --- octave-2.1.57/scripts/polynomial/polyout.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 17,30 **** ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} polyout (@var{c}, @var{x}) ## Write formatted polynomial ## at example ## c(x) = c(1) * x^n + ... + c(n) x + c(n+1) ## at end example ## and return it as a string or write it to the screen (if ## at var{nargout} is zero). ! ## at var{x} defaults to the string @code{"s"} ## at end deftypefn ## at seealso{polyval, polyvalm, poly, roots, conv, deconv, residue, ## filter, polyderiv, and polyinteg} --- 17,37 ---- ## Software Foundation, 59 Temple Place, Suite 330, Boston, MA 02111 USA. ## -*- texinfo -*- ! ## at deftypefn {Function File} {} polyout (@var{c}, @var{x}) ## Write formatted polynomial + ## at iftex + ## at tex + ## $$ c(x) = c_1 x^n + \ldots + c_n x + c_{n+1} $$ + ## at end tex + ## at end iftex + ## at ifinfo ## at example ## c(x) = c(1) * x^n + ... + c(n) x + c(n+1) ## at end example + ## at end ifinfo ## and return it as a string or write it to the screen (if ## at var{nargout} is zero). ! ## at var{x} defaults to the string @code{"s"}. ## at end deftypefn ## at seealso{polyval, polyvalm, poly, roots, conv, deconv, residue, ## filter, polyderiv, and polyinteg} *** octave-2.1.57.orig/scripts/polynomial/roots.m 2000-01-31 06:18:09.000000000 +0100 --- octave-2.1.57/scripts/polynomial/roots.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 32,38 **** ## at ifinfo ## ## at example ! ## v(1) * z^(N-1) + ... + v(N-1) * z + v(N). ## at end example ## at end ifinfo ## at end deftypefn --- 32,38 ---- ## at ifinfo ## ## at example ! ## v(1) * z^(N-1) + ... + v(N-1) * z + v(N) ## at end example ## at end ifinfo ## at end deftypefn *** octave-2.1.57.orig/scripts/specfun/log2.m 2002-05-01 08:48:35.000000000 +0200 --- octave-2.1.57/scripts/specfun/log2.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 19,25 **** ## -*- texinfo -*- ## at deftypefn {Mapping Function} {} log2 (@var{x}) ! ## at deftypefnx {Mapping Function} {[@var{f}, @var{e}]} log2 (@var{x}) ## Compute the base-2 logarithm of at var{x} dot With two outputs, returns ## at var{f} and @var{e} such that ## at iftex --- 19,25 ---- ## -*- texinfo -*- ## at deftypefn {Mapping Function} {} log2 (@var{x}) ! ## at deftypefnx {Mapping Function} {[@var{f}, @var{e}] =} log2 (@var{x}) ## Compute the base-2 logarithm of at var{x} dot With two outputs, returns ## at var{f} and @var{e} such that ## at iftex *** octave-2.1.57.orig/scripts/special-matrix/toeplitz.m 2000-01-13 09:40:28.000000000 +0100 --- octave-2.1.57/scripts/special-matrix/toeplitz.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 25,39 **** ## at var{c} is used. If the second argument is omitted, the first row is ## taken to be the same as the first column. ## ! ## A square Toeplitz matrix has the form ## at iftex ## at tex ## $$ ! ## \left[\matrix{c_0 & r_1 & r_2 & \ldots & r_n\cr ! ## c_1 & c_0 & r_1 & & c_{n-1}\cr ! ## c_2 & c_1 & c_0 & & c_{n-2}\cr ! ## \vdots & & & & \vdots\cr ! ## c_n & c_{n-1} & c_{n-2} & \ldots & c_0}\right]. ## $$ ## at end tex ## at end iftex --- 25,39 ---- ## at var{c} is used. If the second argument is omitted, the first row is ## taken to be the same as the first column. ## ! ## A square Toeplitz matrix has the form: ## at iftex ## at tex ## $$ ! ## \left[\matrix{c_0 & r_1 & r_2 & \cdots & r_n\cr ! ## c_1 & c_0 & r_1 & \cdots & r_{n-1}\cr ! ## c_2 & c_1 & c_0 & \cdots & r_{n-2}\cr ! ## \vdots & \vdots & \vdots & \ddots & \vdots\cr ! ## c_n & c_{n-1} & c_{n-2} & \ldots & c_0}\right] ## $$ ## at end tex ## at end iftex *************** *** 42,53 **** ## at example ## at group ## c(0) r(1) r(2) ... r(n) ! ## c(1) c(0) r(1) r(n-1) ! ## c(2) c(1) c(0) r(n-2) ! ## . . ! ## . . ! ## . . ! ## ## c(n) c(n-1) c(n-2) ... c(0) ## at end group ## at end example --- 42,52 ---- ## at example ## at group ## c(0) r(1) r(2) ... r(n) ! ## c(1) c(0) r(1) ... r(n-1) ! ## c(2) c(1) c(0) ... r(n-2) ! ## . , , . . ! ## . , , . . ! ## . , , . . ## c(n) c(n-1) c(n-2) ... c(0) ## at end group ## at end example *** octave-2.1.57.orig/src/DASPK-opts.cc 2003-11-15 03:40:53.000000000 +0100 --- octave-2.1.57/src/DASPK-opts.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 601,607 **** The local error test applied at each integration step is\n\ \n\ at example\n\ ! abs (local error in x(i)) <= rtol(i) * abs (Y(i)) + atol(i)\n\ at end example\n\ at item \"compute consistent initial condition\"\n\ Denoting the differential variables in the state vector by at samp{Y_d}\n\ --- 601,608 ---- The local error test applied at each integration step is\n\ \n\ at example\n\ ! abs (local error in x(i)) <=\n\ ! rtol(i) * abs (Y(i)) + atol(i)\n\ at end example\n\ at item \"compute consistent initial condition\"\n\ Denoting the differential variables in the state vector by at samp{Y_d}\n\ *** octave-2.1.57.orig/src/DASRT-opts.cc 2003-11-15 03:40:53.000000000 +0100 --- octave-2.1.57/src/DASRT-opts.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 318,324 **** \n\ The local error test applied at each integration step is\n\ at example\n\ ! abs (local error in x(i)) <= rtol(i) * abs (Y(i)) + atol(i)\n\ at end example\n\ at item \"initial step size\"\n\ Differential-algebraic problems may occaisionally suffer from severe\n\ --- 318,325 ---- \n\ The local error test applied at each integration step is\n\ at example\n\ ! abs (local error in x(i)) <=\n\ ! rtol(i) * abs (Y(i)) + atol(i)\n\ at end example\n\ at item \"initial step size\"\n\ Differential-algebraic problems may occaisionally suffer from severe\n\ *** octave-2.1.57.orig/src/DLD-FUNCTIONS/qz.cc 2003-11-25 04:59:44.000000000 +0100 --- octave-2.1.57/src/DLD-FUNCTIONS/qz.cc 2004-06-18 10:29:37.000000000 +0200 *************** *** 207,236 **** "-*- texinfo -*-\n\ at deftypefn {Loadable Function} {@var{lambda} =} qz (@var{a}, @var{b})\n\ Generalized eigenvalue problem at math{A x = s B x},\n\ ! at var{QZ} decomposition. Three ways to call:\n\ at enumerate\n\ at item @code{lambda = qz(A,B)}\n\ \n\ ! Computes the generalized eigenvalues at var{lambda} of @math{(A - sB)}.\n\ ! \n\ at item @code{[AA, BB, Q, Z, V, W, lambda] = qz (A, B)}\n\ \n\ Computes qz decomposition, generalized eigenvectors, and \n\ generalized eigenvalues of at math{(A - sB)}\n\ at example\n\ at group\n\ ! A V = B V diag(lambda)\n\ ! W' A = diag(lambda) W' B\n\ ! AA = Q'*A*Z, BB = Q'*B*Z with Q, Z orthogonal (unitary)= I\n\ at end group\n\ at end example\n\ \n\ ! at item @code{[AA,BB,Z@{,lambda@}] = qz(A,B,opt)}\n\ \n\ As in form [2], but allows ordering of generalized eigenpairs\n\ for (e.g.) solution of discrete time algebraic Riccati equations.\n\ ! Form 3 is not available for complex matrices and does not compute\n\ ! the generalized eigenvectors V, W, nor the orthogonal matrix Q.\n\ at table @var\n\ at item opt\n\ for ordering eigenvalues of the GEP pencil. The leading block\n\ --- 207,254 ---- "-*- texinfo -*-\n\ at deftypefn {Loadable Function} {@var{lambda} =} qz (@var{a}, @var{b})\n\ Generalized eigenvalue problem at math{A x = s B x},\n\ ! at var{QZ} decomposition. There are three ways to call this function:\n\ at enumerate\n\ at item @code{lambda = qz(A,B)}\n\ \n\ ! Computes the generalized eigenvalues\n\ ! at iftex\n\ ! at tex\n\ ! $\\lambda$\n\ ! at end tex\n\ ! at end iftex\n\ ! at ifinfo\n\ ! at var{lambda}\n\ ! at end ifinfo\n\ ! of at math{(A - s B)}.\n\ at item @code{[AA, BB, Q, Z, V, W, lambda] = qz (A, B)}\n\ \n\ Computes qz decomposition, generalized eigenvectors, and \n\ generalized eigenvalues of at math{(A - sB)}\n\ + at iftex\n\ + at tex\n\ + $$ A\\,V = B\\,V\\,{ \\rm diag }(\\lambda) $$\n\ + $$ W^{ \\rm T } A = { \\rm diag }(\\lambda)\\,W^{ \\rm T } B $$\n\ + $$ AA = Q^{ \\rm T } A\\,Z,~ BB = Q^{ \\rm T } B\\,Z $$\n\ + at end tex\n\ + at end iftex\n\ + at ifinfo\n\ at example\n\ at group\n\ ! A*V = B*V*diag(lambda)\n\ ! W'*A = diag(lambda)*W'*B\n\ ! AA = Q'*A*Z, BB = Q'*B*Z\n\ at end group\n\ at end example\n\ + at end ifinfo\n\ + with at var{Q} and @var{Z} orthogonal (unitary)= @var{I}\n\ \n\ ! at item @code{[AA,BB,Z@{, lambda@}] = qz(A,B,opt)}\n\ \n\ As in form [2], but allows ordering of generalized eigenpairs\n\ for (e.g.) solution of discrete time algebraic Riccati equations.\n\ ! Form 3 is not available for complex matrices, and does not compute\n\ ! the generalized eigenvectors at var{V}, @var{W}, nor the orthogonal matrix @var{Q}.\n\ at table @var\n\ at item opt\n\ for ordering eigenvalues of the GEP pencil. The leading block\n\ *** octave-2.1.57.orig/src/DLD-FUNCTIONS/time.cc 2004-01-06 21:13:22.000000000 +0100 --- octave-2.1.57/src/DLD-FUNCTIONS/time.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 228,234 **** \n\ at example\n\ at group\n\ ! strftime (\"%r (%Z) %A %e %B %Y\", localtime (time ())\n\ at result{} \"01:15:06 AM (CST) Monday 17 February 1997\"\n\ at end group\n\ at end example\n\ --- 228,234 ---- \n\ at example\n\ at group\n\ ! strftime (\"%r (%Z) %A %e %B %Y\", localtime (time ()) )\n\ at result{} \"01:15:06 AM (CST) Monday 17 February 1997\"\n\ at end group\n\ at end example\n\ *** octave-2.1.57.orig/src/error.cc 2004-02-16 20:57:23.000000000 +0100 --- octave-2.1.57/src/error.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 669,675 **** at deftypefn {Built-in Function} {} lasterr ()\n\ at deftypefnx {Built-in Function} {} lasterr (@var{msg})\n\ Without any arguments, return the last error message. With one\n\ ! argument, set the last warning message to at var{msg} dot \n\ at end deftypefn") { octave_value_list retval; --- 669,675 ---- at deftypefn {Built-in Function} {} lasterr ()\n\ at deftypefnx {Built-in Function} {} lasterr (@var{msg})\n\ Without any arguments, return the last error message. With one\n\ ! argument, set the last error message to at var{msg} dot \n\ at end deftypefn") { octave_value_list retval; *************** *** 697,703 **** at deftypefn {Built-in Function} {} lastwarn ()\n\ at deftypefnx {Built-in Function} {} lastwarn (@var{msg})\n\ Without any arguments, return the last warning message. With one\n\ ! argument, set the last error message to at var{msg} dot \n\ at end deftypefn") { octave_value_list retval; --- 697,703 ---- at deftypefn {Built-in Function} {} lastwarn ()\n\ at deftypefnx {Built-in Function} {} lastwarn (@var{msg})\n\ Without any arguments, return the last warning message. With one\n\ ! argument, set the last warning message to at var{msg} dot \n\ at end deftypefn") { octave_value_list retval; *** octave-2.1.57.orig/src/file-io.cc 2004-03-05 20:15:54.000000000 +0100 --- octave-2.1.57/src/file-io.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 1690,1696 **** at deftypefn {Built-in Function} {[@var{fid}, @var{name}, @var{msg}] =} tmpfile (@var{template}, @var{delete})\n\ Return the file ID corresponding to a new temporary file with a unique\n\ name created from at var{template} dot The last six characters of @var{template}\n\ ! must be at code{XXXXXX} and tehse are replaced with a string that makes the\n\ filename unique. The file is then created with mode read/write and\n\ permissions that are system dependent (on GNU/Linux systems, the permissions\n\ will be 0600 for versions of glibc 2.0.7 and later). The file is opened\n\ --- 1690,1696 ---- at deftypefn {Built-in Function} {[@var{fid}, @var{name}, @var{msg}] =} tmpfile (@var{template}, @var{delete})\n\ Return the file ID corresponding to a new temporary file with a unique\n\ name created from at var{template} dot The last six characters of @var{template}\n\ ! must be at code{XXXXXX} and these are replaced with a string that makes the\n\ filename unique. The file is then created with mode read/write and\n\ permissions that are system dependent (on GNU/Linux systems, the permissions\n\ will be 0600 for versions of glibc 2.0.7 and later). The file is opened\n\ *** octave-2.1.57.orig/src/input.cc 2004-03-05 20:15:54.000000000 +0100 --- octave-2.1.57/src/input.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 1128,1137 **** DEFVAR (PS4, "+ ", ps4, "-*- texinfo -*-\n\ at defvr {Built-in Variable} PS4\n\ ! If Octave is invoked with the at code{--echo-input} option, the value of\n\ at code{PS4} is printed before each line of input that is echoed. The\n\ default value of at code{PS4} is @code{\"+ \"}. @xref{Invoking Octave}, for\n\ ! a description of at code{--echo-input} dot \n\ at end defvr"); DEFVAR (completion_append_char, " ", completion_append_char, --- 1128,1137 ---- DEFVAR (PS4, "+ ", ps4, "-*- texinfo -*-\n\ at defvr {Built-in Variable} PS4\n\ ! If Octave is invoked with the at code{--echo-commands} option, the value of\n\ at code{PS4} is printed before each line of input that is echoed. The\n\ default value of at code{PS4} is @code{\"+ \"}. @xref{Invoking Octave}, for\n\ ! a description of at code{--echo-commands} dot \n\ at end defvr"); DEFVAR (completion_append_char, " ", completion_append_char, *** octave-2.1.57.orig/src/mappers.cc 2004-01-06 21:13:21.000000000 +0100 --- octave-2.1.57/src/mappers.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 222,228 **** at ifinfo\n\ at var{theta} = @code{atan (@var{y}/@var{x})}.\n\ at end ifinfo\n\ - \n\ at noindent\n\ in radians. \n\ \n\ --- 222,227 ---- *************** *** 245,251 **** DEFUN_MAPPER (asinh, 0, 0, 0, asinh, 0, asinh, 0.0, 0.0, 0, 0, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} asinh (@var{x})\n\ ! Ompute the inverse hyperbolic sine of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (atan, 0, 0, 0, atan, 0, atan, 0.0, 0.0, 0, 0, --- 244,250 ---- DEFUN_MAPPER (asinh, 0, 0, 0, asinh, 0, asinh, 0.0, 0.0, 0, 0, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} asinh (@var{x})\n\ ! Compute the inverse hyperbolic sine of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (atan, 0, 0, 0, atan, 0, atan, 0.0, 0.0, 0, 0, *************** *** 257,263 **** DEFUN_MAPPER (atanh, 0, 0, 0, atanh, 0, atanh, -1.0, 1.0, 0, 1, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} atanh (@var{x})\n\ ! Compute the inverse hyperbolic tanget of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (ceil, 0, 0, 0, ceil, 0, ceil, 0.0, 0.0, 0, 0, --- 256,262 ---- DEFUN_MAPPER (atanh, 0, 0, 0, atanh, 0, atanh, -1.0, 1.0, 0, 1, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} atanh (@var{x})\n\ ! Compute the inverse hyperbolic tangent of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (ceil, 0, 0, 0, ceil, 0, ceil, 0.0, 0.0, 0, 0, *************** *** 349,356 **** \n\ at example\n\ at group\n\ ! finite ([13, Inf, NaN])\n\ ! at result{} [ 1, 0, 0 ]\n\ at end group\n\ at end example\n\ at end deftypefn"); --- 348,355 ---- \n\ at example\n\ at group\n\ ! finite ([13, Inf, NA, NaN])\n\ ! at result{} [ 1, 0, 0, 0 ]\n\ at end group\n\ at end example\n\ at end deftypefn"); *************** *** 599,611 **** DEFUN_MAPPER (sin, 0, 0, 0, sin, 0, sin, 0.0, 0.0, 0, 0, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} sin (@var{x})\n\ ! Compute the sin of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (sinh, 0, 0, 0, sinh, 0, sinh, 0.0, 0.0, 0, 0, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} sinh (@var{x})\n\ ! Compute the inverse hyperbolic sin of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (sqrt, 0, 0, 0, sqrt, 0, sqrt, 0.0, octave_Inf, 0, 1, --- 598,610 ---- DEFUN_MAPPER (sin, 0, 0, 0, sin, 0, sin, 0.0, 0.0, 0, 0, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} sin (@var{x})\n\ ! Compute the sine of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (sinh, 0, 0, 0, sinh, 0, sinh, 0.0, 0.0, 0, 0, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} sinh (@var{x})\n\ ! Compute the inverse hyperbolic sine of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (sqrt, 0, 0, 0, sqrt, 0, sqrt, 0.0, octave_Inf, 0, 1, *************** *** 619,625 **** DEFUN_MAPPER (tan, 0, 0, 0, tan, 0, tan, 0.0, 0.0, 0, 0, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} tan (@var{z})\n\ ! Compute tanget of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (tanh, 0, 0, 0, tanh, 0, tanh, 0.0, 0.0, 0, 0, --- 618,624 ---- DEFUN_MAPPER (tan, 0, 0, 0, tan, 0, tan, 0.0, 0.0, 0, 0, "-*- texinfo -*-\n\ at deftypefn {Mapping Function} {} tan (@var{z})\n\ ! Compute tangent of each element of at var{x} dot \n\ at end deftypefn"); DEFUN_MAPPER (tanh, 0, 0, 0, tanh, 0, tanh, 0.0, 0.0, 0, 0, *** octave-2.1.57.orig/src/ODESSA-opts.cc 2003-11-15 03:40:53.000000000 +0100 --- octave-2.1.57/src/ODESSA-opts.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 358,364 **** The local error test applied at each integration step is\n\ \n\ at example\n\ ! abs (local error in x(i)) <= rtol * abs (y(i)) + atol(i)\n\ at end example\n\ at item \"integration method\"\n\ A string specifing the method of integration to use to solve the ODE\n\ --- 358,365 ---- The local error test applied at each integration step is\n\ \n\ at example\n\ ! abs (local error in x(i)) <=\n\ ! rtol * abs (y(i)) + atol(i)\n\ at end example\n\ at item \"integration method\"\n\ A string specifing the method of integration to use to solve the ODE\n\ *** octave-2.1.57.orig/src/pr-output.cc 2004-03-12 20:26:58.000000000 +0100 --- octave-2.1.57/src/pr-output.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 2142,2157 **** Display the value of at var{x} on the stream @var{fid}. For example,\n\ \n\ at example\n\ ! disp (stdout, \"The value of pi is:\"), disp (stdout, pi)\n\ \n\ at print{} the value of pi is:\n\ at print{} 3.1416\n\ at end example\n\ \n\ at noindent\n\ ! Note that the output from at code{disp} always ends with a newline.\n\ \n\ ! If an output value is requested, at code{disp} prints nothing and\n\ returns the formatted output in a string.\n\ at end deftypefn\n\ at seealso{disp}") --- 2142,2157 ---- Display the value of at var{x} on the stream @var{fid}. For example,\n\ \n\ at example\n\ ! fdisp (stdout, \"The value of pi is:\"), fdisp (stdout, pi)\n\ \n\ at print{} the value of pi is:\n\ at print{} 3.1416\n\ at end example\n\ \n\ at noindent\n\ ! Note that the output from at code{fdisp} always ends with a newline.\n\ \n\ ! If an output value is requested, at code{fdisp} prints nothing and\n\ returns the formatted output in a string.\n\ at end deftypefn\n\ at seealso{disp}") *** octave-2.1.57.orig/src/pt-assign.cc 2002-12-20 23:43:55.000000000 +0100 --- octave-2.1.57/src/pt-assign.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 334,340 **** { DEFVAR (print_rhs_assign_val, false, print_rhs_assign_val, "-*- texinfo -*-\n\ ! at defvr print_rhs_assign_val\n\ If the value of this variable is non-zero, Octave will print the value\n\ of the right hand side of assignment expressions instead of the value\n\ of the left hand side (after the assignment).\n\ --- 334,340 ---- { DEFVAR (print_rhs_assign_val, false, print_rhs_assign_val, "-*- texinfo -*-\n\ ! at defvr {Built-in Variable} print_rhs_assign_val\n\ If the value of this variable is non-zero, Octave will print the value\n\ of the right hand side of assignment expressions instead of the value\n\ of the left hand side (after the assignment).\n\ *** octave-2.1.57.orig/src/pt-plot.cc 2003-11-10 16:50:40.000000000 +0100 --- octave-2.1.57/src/pt-plot.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 1345,1351 **** at defvr {Built-in Variable} gnuplot_has_frames\n\ If the value of this variable is nonzero, Octave assumes that your copy\n\ of gnuplot has support for multiple frames that is included in recent\n\ ! 3.6beta releases. It's initial value is determined by configure, but it\n\ can be changed in your startup script or at the command line in case\n\ configure got it wrong, or if you upgrade your gnuplot installation.\n\ at end defvr"); --- 1345,1351 ---- at defvr {Built-in Variable} gnuplot_has_frames\n\ If the value of this variable is nonzero, Octave assumes that your copy\n\ of gnuplot has support for multiple frames that is included in recent\n\ ! 3.6beta releases. Its initial value is determined by configure, but it\n\ can be changed in your startup script or at the command line in case\n\ configure got it wrong, or if you upgrade your gnuplot installation.\n\ at end defvr"); *** octave-2.1.57.orig/src/symtab.cc 2004-01-06 21:13:22.000000000 +0100 --- octave-2.1.57/src/symtab.cc 2004-06-18 10:21:02.000000000 +0200 *************** *** 1112,1118 **** { DEFVAR (variables_can_hide_functions, true, variables_can_hide_functions, "-*- texinfo -*-\n\ ! at defvr variables_can_hide_functions\n\ If the value of this variable is nonzero, assignments to variables may\n\ hide previously defined functions of the same name. A negative value\n\ will cause Octave to print a warning, but allow the operation.\n\ --- 1112,1118 ---- { DEFVAR (variables_can_hide_functions, true, variables_can_hide_functions, "-*- texinfo -*-\n\ ! at defvr {Built-in Variable} variables_can_hide_functions\n\ If the value of this variable is nonzero, assignments to variables may\n\ hide previously defined functions of the same name. A negative value\n\ will cause Octave to print a warning, but allow the operation.\n\ --mYCpIKhGyMATD0i+ Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename="patch.vander" *** octave-2.1.57.orig/scripts/special-matrix/vander.m 2002-08-09 20:58:15.000000000 +0200 --- octave-2.1.57/scripts/special-matrix/vander.m 2004-06-18 10:21:02.000000000 +0200 *************** *** 21,34 **** ## at deftypefn {Function File} {} vander (@var{c}) ## Return the Vandermonde matrix whose next to last column is at var{c} dot ## ! ## A Vandermonde matrix has the form ## at iftex ## at tex ## $$ ! ## \left[\matrix{c_0^n & \ldots & c_0^2 & c_0 & 1\cr ! ## c_1^n & \ldots & c_1^2 & c_1 & 1\cr ! ## \vdots & & \vdots & \vdots & \vdots\cr ! ## c_n^n & \ldots & c_n^2 & c_n & 1}\right]. ## $$ ## at end tex ## at end iftex --- 21,34 ---- ## at deftypefn {Function File} {} vander (@var{c}) ## Return the Vandermonde matrix whose next to last column is at var{c} dot ## ! ## A Vandermonde matrix has the form: ## at iftex ## at tex ## $$ ! ## \left[\matrix{1 & c_1 & c_1^2 & \cdots & c_1^{n-1}\cr ! ## 1 & c_2 & c_1^2 & \cdots & c_2^{n-1}\cr ! ## \vdots & \vdots & \vdots & \ddots & \vdots\cr ! ## 1 & c_n & c_n^2 & \cdots & c_n^{n-1}}\right] ## $$ ## at end tex ## at end iftex *************** *** 36,55 **** ## ## at example ## at group ! ## c(0)^n ... c(0)^2 c(0) 1 ! ## c(1)^n ... c(1)^2 c(1) 1 ! ## . . . . ! ## . . . . ! ## . . . . ! ## ! ## c(n)^n ... c(n)^2 c(n) 1 ## at end group ## at end example ## at end ifinfo ## at end deftypefn ## at seealso{hankel, sylvester_matrix, hilb, invhilb, and toeplitz} ! ## Author: jwe function retval = vander (c) --- 36,54 ---- ## ## at example ## at group ! ## 1 c(1) c(1)^2 ... c(1)^(n-1) ! ## 1 c(2) c(2)^2 ... c(2)^(n-1) ! ## . . . . . ! ## . . . . . ! ## . . . . . ! ## 1 c(n) c(n)^2 ... c(n)^(n-1) ## at end group ## at end example ## at end ifinfo ## at end deftypefn ## at seealso{hankel, sylvester_matrix, hilb, invhilb, and toeplitz} ! ## Author: jwe, later fix to other standard by fz function retval = vander (c) *************** *** 59,68 **** if (isvector (c)) n = length (c); ! retval = zeros (n, n); ! j = 1:n; for i = 1:n ! retval(i,:) = c(i) .^ (n - j); endfor else error ("vander: argument must be a vector"); --- 58,67 ---- if (isvector (c)) n = length (c); ! retval = ones (n, n); ! j = 0:(n-1); for i = 1:n ! retval(i,:) = c(i) .^ j; endfor else error ("vander: argument must be a vector"); --mYCpIKhGyMATD0i+--