1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604
|
<HTML>
<HEAD><TITLE>AB13ID - SLICOT Library Routine Documentation</TITLE>
</HEAD>
<BODY>
<H2><A Name="AB13ID">AB13ID</A></H2>
<H3>
Testing properness of the transfer function matrix of a descriptor system
</H3>
<A HREF ="#Specification"><B>[Specification]</B></A>
<A HREF ="#Arguments"><B>[Arguments]</B></A>
<A HREF ="#Method"><B>[Method]</B></A>
<A HREF ="#References"><B>[References]</B></A>
<A HREF ="#Comments"><B>[Comments]</B></A>
<A HREF ="#Example"><B>[Example]</B></A>
<P>
<B><FONT SIZE="+1">Purpose</FONT></B>
<PRE>
To check whether the transfer function
-1
G(lambda) := C*( lambda*E - A ) *B
of a given linear time-invariant descriptor system with
generalized state space realization (lambda*E-A,B,C) is proper.
Optionally, if JOBEIG = 'A', the system (lambda*E-A,B,C) is
reduced to an equivalent one (lambda*Er-Ar,Br,Cr) with only
controllable and observable eigenvalues in order to use it for a
subsequent L_inf-norm computation; if JOBEIG = 'I', the system is
reduced to an equivalent one (lambda*Er-Ar,Br,Cr) without
uncontrollable and unobservable infinite eigenvalues. In this
case, intended mainly for checking the properness, the returned
system is not fully reduced, unless UPDATE = 'U'.
</PRE>
<A name="Specification"><B><FONT SIZE="+1">Specification</FONT></B></A>
<PRE>
LOGICAL FUNCTION AB13ID( JOBSYS, JOBEIG, EQUIL, CKSING, RESTOR,
$ UPDATE, N, M, P, A, LDA, E, LDE, B, LDB,
$ C, LDC, NR, RANKE, TOL, IWORK, DWORK,
$ LDWORK, IWARN, INFO )
C .. Scalar Arguments ..
CHARACTER CKSING, EQUIL, JOBEIG, JOBSYS, RESTOR, UPDATE
INTEGER INFO, IWARN, LDA, LDB, LDC, LDE, LDWORK, M, N,
$ NR, P, RANKE
C .. Array Arguments ..
INTEGER IWORK( * )
DOUBLE PRECISION A( LDA, * ), B( LDB, * ), C( LDC, * ),
$ DWORK( * ), E( LDE, * ), TOL( * )
</PRE>
<B><FONT SIZE="+1">Function Value</FONT></B>
<PRE>
AB13ID LOGICAL
Indicates whether the transfer function is proper.
If AB13ID = .TRUE., the transfer function is proper;
otherwise, it is improper.
</PRE>
<A name="Arguments"><B><FONT SIZE="+1">Arguments</FONT></B></A>
<P>
<B>Mode Parameters</B>
<PRE>
JOBSYS CHARACTER*1
Indicates whether the system (lambda*E-A,B,C) is already
in the reduced form which is obtained as stated in
JOBEIG, as follows.
= 'R': The system is not in a reduced form, the reduction
step is performed;
= 'N': The system is in a reduced form; the reduction step
is omitted.
JOBEIG CHARACTER*1
Indicates which kind of eigenvalues of the matrix pencil
lambda*E-A should be removed if JOBSYS = 'R', as follows:
= 'A': All uncontrollable and unobservable eigenvalues
are removed; the reduced system is returned in
the arrays A, E, B, C;
= 'I': Only all uncontrollable and unobservable infinite
eigenvalues are removed; the returned system is not
fully reduced if UPDATE = 'N'.
EQUIL CHARACTER*1
Specifies whether the user wishes to preliminarily scale
the system (lambda*E-A,B,C) as follows:
= 'S': Perform scaling;
= 'N': Do not perform scaling.
CKSING CHARACTER*1
Specifies whether the user wishes to check if the pencil
(lambda*E-A) is singular as follows:
= 'C': Check singularity;
= 'N': Do not check singularity.
If the pencil is singular, the reduced system computed for
CKSING = 'N' may have completely different eigenvalues
than the given system.
The test is performed only if JOBSYS = 'R'.
RESTOR CHARACTER*1
Specifies whether the user wishes to save the system
matrices before each reduction phase (if JOBSYS = 'R') and
restore them if no order reduction took place as follows:
= 'R': Save and restore;
= 'N': Do not save the matrices.
This option is ineffective if JOBSYS = 'N'.
UPDATE CHARACTER*1
Specifies whether the user wishes to update the matrices
A, B, and C if JOBEIG = 'I' as follows:
= 'U': Update the matrices A, B and C;
= 'N': Do not update the matrices A, B and C when
performing URV decomposition of the matrix E
(see METHOD).
</PRE>
<B>Input/Output Parameters</B>
<PRE>
N (input) INTEGER
The dimension of the descriptor state vector; also the
order of square matrices A and E, the number of rows of
matrix B, and the number of columns of matrix C. N >= 0.
M (input) INTEGER
The dimension of the descriptor system input vector; also
the number of columns of matrix B. M >= 0.
P (input) INTEGER
The dimension of the descriptor system output vector; also
the number of rows of matrix C. P >= 0.
A (input/output) DOUBLE PRECISION array, dimension (LDA,N)
On entry, the leading N-by-N part of this array must
contain the state matrix A.
On exit, if JOBSYS = 'R' and JOBEIG = 'A', the leading
NR-by-NR part of this array contains the reduced order
state matrix Ar of a fully controllable and observable
realization for the original system. If JOBSYS = 'R' and
JOBEIG = 'I', the leading NR-by-NR part of this array
contains the reduced order state matrix Ar of a
transformed system without uncontrollable and unobservable
infinite poles. In this case, the matrix Ar does not
correspond to the returned matrix Er (obtained after a
URV decomposition), unless UPDATE = 'U' or RANKE < NR.
On exit, if JOBSYS = 'N' and (JOBEIG = 'A' or UPDATE = 'U'
or RANKE < N), the leading N-by-N part of this array
contains the transformed matrix A corresponding to the
URV decomposition of E (see (2) in METHOD), and if
JOBEIG = 'I' and UPDATE = 'N', the submatrix A22 in (2) is
further transformed to estimate its rank.
LDA INTEGER
The leading dimension of the array A. LDA >= MAX(1,N).
E (input/output) DOUBLE PRECISION array, dimension (LDE,N)
On entry, the leading N-by-N part of this array must
contain the descriptor matrix E.
On exit, if JOBSYS = 'R' and JOBEIG = 'A', the leading
NR-by-NR part of this array contains the reduced order
descriptor matrix Er of a completely controllable and
observable realization for the original system. The
reduced matrix Er is in upper triangular form.
If JOBSYS = 'R' and JOBEIG = 'I', the leading NR-by-NR
part of this array contains the reduced order descriptor
matrix Er of a transformed system without uncontrollable
and unobservable infinite poles. The reduced matrix Er is
upper triangular. In both cases, or if JOBSYS = 'N', the
matrix Er results from a URV decomposition of the matrix E
(see METHOD).
LDE INTEGER
The leading dimension of the array E. LDE >= MAX(1,N).
B (input/output) DOUBLE PRECISION array, dimension
(LDB,MAX(M,P))
On entry, the leading N-by-M part of this array must
contain the input matrix B; the remainder of the leading
N-by-MAX(M,P) part is used as internal workspace.
On exit, if JOBSYS = 'R' and JOBEIG = 'A', the leading
NR-by-M part of this array contains the reduced input
matrix Br of a completely controllable and observable
realization for the original system. If JOBSYS = 'R' and
JOBEIG = 'I', the leading NR-by-M part of this array
contains the transformed input matrix Br obtained after
removing the uncontrollable and unobservable infinite
poles; the transformations for the URV decomposition of
the matrix E are not applied if UPDATE = 'N'.
On exit, if JOBSYS = 'N' and (JOBEIG = 'A' or
UPDATE = 'U'), the leading N-by-M part of this array
contains the transformed matrix B corresponding to the
URV decomposition of E, but if JOBEIG = 'I', EQUIL = 'N'
and UPDATE = 'N', the array B is unchanged on exit.
LDB INTEGER
The leading dimension of the array B. LDB >= MAX(1,N).
C (input/output) DOUBLE PRECISION array, dimension (LDC,N)
On entry, the leading P-by-N part of this array must
contain the output matrix C; the remainder of the leading
MAX(M,P)-by-N part is used as internal workspace.
On exit, if JOBSYS = 'R' and JOBEIG = 'A', the leading
P-by-NR part of this array contains the transformed output
matrix Cr of a completely controllable and observable
realization for the original system. If JOBSYS = 'R' and
JOBEIG = 'I', the leading P-by-NR part of this array
contains the transformed output matrix Cr obtained after
removing the uncontrollable and unobservable infinite
poles; the transformations for the URV decomposition of
the matrix E are not applied if UPDATE = 'N'.
On exit, if JOBSYS = 'N' and (JOBEIG = 'A' or
UPDATE = 'U'), the leading P-by-N part of this array
contains the transformed matrix C corresponding to the
URV decomposition of E, but if JOBEIG = 'I', EQUIL = 'N'
and UPDATE = 'N', the array C is unchanged on exit.
LDC INTEGER
The leading dimension of the array C.
LDC >= MAX(1,M,P) if N > 0;
LDC >= 1 if N = 0.
NR (output) INTEGER
The order of the reduced generalized state space
representation (lambda*Er-Ar,Br,Cr) as stated in JOBEIG.
If JOBEIG = 'A', NR denotes the order of a reduced system
without any uncontrollable or unobservable eigenvalues; if
JOBEIG = 'I', NR denotes the order of the reduced system
without any uncontrollable or unobservable infinite
eigenvalues. If JOBSYS = 'N', then NR = N.
RANKE (output) INTEGER
The effective (estimated) rank of the reduced matrix Er.
</PRE>
<B>Tolerances</B>
<PRE>
TOL DOUBLE PRECISION array, dimension 3
TOL(1) is the tolerance to be used in rank determinations
when transforming (lambda*E-A,B,C). If the user sets
TOL(1) > 0, then the given value of TOL(1) is used as a
lower bound for reciprocal condition numbers in rank
determinations; a (sub)matrix whose estimated condition
number is less than 1/TOL(1) is considered to be of full
rank. If the user sets TOL(1) <= 0, then an implicitly
computed, default tolerance, defined by TOLDEF1 = N*N*EPS,
is used instead, where EPS is the machine precision (see
LAPACK Library routine DLAMCH). TOL(1) < 1.
TOL(2) is the tolerance to be used for checking pencil
singularity when CKSING = 'C', or singularity of the
matrices A and E when CKSING = 'N'. If the user sets
TOL(2) > 0, then the given value of TOL(2) is used.
If the user sets TOL(2) <= 0, then an implicitly
computed, default tolerance, defined by TOLDEF2 = 10*EPS,
is used instead. TOL(2) < 1.
TOL(3) is the threshold value for magnitude of the matrix
elements, if EQUIL = 'S': elements with magnitude less
than or equal to TOL(3) are ignored for scaling. If the
user sets TOL(3) >= 0, then the given value of TOL(3) is
used. If the user sets TOL(3) < 0, then an implicitly
computed, default threshold, defined by THRESH = c*EPS,
where c = MAX(||A||,||E||,||B||,||C||) is used instead and
1-norm is used. TOL(3) = 0 is not always a good choice.
TOL(3) < 1.
TOL(3) is not used if EQUIL = 'N'.
</PRE>
<B>Workspace</B>
<PRE>
IWORK INTEGER array, dimension (LIWORK)
If JOBSYS = 'R', LIWORK >= 2*N+MAX(M,P)+7;
If JOBSYS = 'N', LIWORK >= N.
If JOBSYS = 'R', the first 7 elements of IWORK contain
information on performed reduction and on structure of
resulting system matrices after removing the specified
eigenvalues (see the description of the parameter INFRED
of the SLICOT Library routine TG01JY).
DWORK DOUBLE PRECISION array, dimension (LDWORK)
On exit, if INFO = 0, DWORK(1) returns the optimal value
of LDWORK.
LDWORK INTEGER
The length of the array DWORK.
If JOBSYS = 'R', and EQUIL = 'S',
LDWORK >= MAX(w+4*N+4,8*N,x,y),
where w = N*N, if JOBEIG = 'A',
w = 0, if JOBEIG = 'I',
x = MAX(2*(z+MAX(M,P)+N-1),N*N+4*N), if RESTOR = 'R'
x = MAX( 2*(MAX(M,P)+N-1),N*N+4*N), if RESTOR = 'N'
y = 2*N*N+10*N+MAX(N,23), if CKSING = 'C',
y = 0, if CKSING = 'N',
z = 2*N*N+N*M+N*P;
if JOBSYS = 'R', and EQUIL = 'N',
LDWORK >= MAX(w+4*N+4,x,y);
if JOBSYS = 'N', and JOBEIG = 'A' or UPDATE = 'U',
and EQUIL = 'S',
LDWORK >= MAX(N*N+4*N+4,8*N,N+M,N+P);
if JOBSYS = 'N', and JOBEIG = 'A' or UPDATE = 'U',
and EQUIL = 'N',
LDWORK >= MAX(N*N+4*N+4,N+M,N+P);
if JOBSYS = 'N', and JOBEIG = 'I' and UPDATE = 'N',
and EQUIL = 'S',
LDWORK >= MAX(4*N+4,8*N);
if JOBSYS = 'N', and JOBEIG = 'I' and UPDATE = 'N',
and EQUIL = 'N',
LDWORK >= 4*N+4.
If JOBSYS = 'R' and ( RESTOR = 'R' or
LDWORK >= MAX(1,2*N*N+N*M+N*P+2*(MAX(M,P)+N-1) ),
then more accurate results are to be expected by
considering only those reduction phases in the SLICOT
Library routine TG01JY, where effective order reduction
occurs. This is achieved by saving the system matrices
before each phase (after orthogonally triangularizing the
matrix A or the matrix E, if RESTOR = 'N') and restoring
them if no order reduction took place. However, higher
global accuracy is not guaranteed.
For good performance, LDWORK should be generally larger.
If LDWORK = -1, then a workspace query is assumed;
the routine only calculates the optimal size of the
DWORK array, returns this value as the first entry of
the DWORK array, and no error message related to LDWORK
is issued by XERBLA. The optimal workspace includes the
extra space for improving the accuracy.
</PRE>
<B>Warning Indicator</B>
<PRE>
IWARN INTEGER
= 0: When determining the rank of a matrix, the rank can
be safely determined: a small decrease of TOL(1) will
not increase the rank.
= 1: The computed rank is possibly incorrect: a small
decrease of TOL(1) might increase the rank.
</PRE>
<B>Error Indicator</B>
<PRE>
INFO INTEGER
= 0: succesful exit;
< 0: if INFO = -i, the i-th argument had an illegal value;
= 1: the given pencil A - lambda*E is numerically
singular and the reduced system is not computed.
However, the system is considered improper, and
AB13ID is set to .FALSE.
This error can be returned only if CKSING = 'C'.
</PRE>
<A name="Method"><B><FONT SIZE="+1">Method</FONT></B></A>
<PRE>
If JOBSYS = 'R', the routine first removes uncontrollable and
unobservable infinite eigenvalues of the pencil lambda*E-A. If, in
addition, JOBEIG = 'A', uncontrollable and unobservable zero
eigenvalues are also removed. Then, or if JOBSYS = 'N', a
URV decomposition of the matrix E is performed, i.e., orthogonal
matrices U and V are computed, such that
( T 0 )
U*E*V = ( ) with a full-rank matrix T. (1)
( 0 0 )
Then the matrix A (or a copy of A if JOBEIG = 'A' or UPDATE = 'U')
is updated and partioned as in (1), i.e.,
( A11 A12 )
U*A*V = ( ) , (2)
( A21 A22 )
and the rank of A22 is computed. If A22 is invertible, the
transfer function is proper, otherwise it is improper. If
required (i.e., JOBEIG = 'A' or UPDATE = 'U'), the matrices B and
C are updated as well in order to obtain an equivalent reduced
system with the same transfer function. See also Chapter 3 in [1],
[2] for more details.
</PRE>
<A name="References"><B><FONT SIZE="+1">References</FONT></B></A>
<PRE>
[1] Voigt, M.
L_inf-Norm Computation for Descriptor Systems.
Diploma Thesis, Chemnitz University of Technology, Department
of Mathematics, Germany, July 2010.
[2] Benner, P., Sima, V., Voigt, M.
L_infinity-norm computation for continuous-time descriptor
systems using structured matrix pencils.
IEEE Trans. Automat. Contr., vol. 57, pp. 233-238, 2012.
</PRE>
<A name="Numerical Aspects"><B><FONT SIZE="+1">Numerical Aspects</FONT></B></A>
<PRE>
The algorithm requires O(N**3) floating point operations. During
the algorithm it is necessary to determine the rank of certain
matrices. Therefore it is crucial to use an appropriate tolerance
TOL(1) to make correct rank decisions.
</PRE>
<A name="Comments"><B><FONT SIZE="+1">Further Comments</FONT></B></A>
<PRE>
None
</PRE>
<A name="Example"><B><FONT SIZE="+1">Example</FONT></B></A>
<P>
<B>Program Text</B>
<PRE>
* AB13ID EXAMPLE PROGRAM TEXT
*
* .. Parameters ..
INTEGER NIN, NOUT
PARAMETER ( NIN = 5, NOUT = 6 )
INTEGER NMAX, MMAX, PMAX
PARAMETER ( NMAX = 20, MMAX = 20, PMAX = 20 )
INTEGER LDA, LDB, LDC, LDE
PARAMETER ( LDA = NMAX, LDB = NMAX,
$ LDC = MAX( MMAX, PMAX ), LDE = NMAX )
INTEGER LDWORK, LIWORK
PARAMETER ( LDWORK = 2*NMAX*NMAX +
$ MAX( 2*( NMAX*( NMAX + MMAX + PMAX ) +
$ MAX( MMAX, PMAX ) + NMAX - 1 ),
$ 10*NMAX + MAX( NMAX, 23 ) ),
$ LIWORK = 2*NMAX + MAX( MMAX, PMAX ) + 7 )
* .. Local Scalars ..
LOGICAL LISPRP
CHARACTER CKSING, EQUIL, JOBEIG, JOBSYS, RESTOR, UPDATE
INTEGER I, INFO, IWARN, J, M, N, NO, NR, P, RANKE
* .. Local Arrays ..
INTEGER IWORK(LIWORK)
DOUBLE PRECISION A(LDA,NMAX), B(LDB,MAX(MMAX,PMAX)), C(LDC,NMAX),
$ DWORK(LDWORK), E(LDE,NMAX), TOL(3)
* .. External Functions ..
LOGICAL AB13ID, LSAME
EXTERNAL AB13ID, LSAME
* .. Intrinsic Functions ..
INTRINSIC MAX
* .. Executable Statements ..
*
WRITE ( NOUT, FMT = 99999 )
* Skip the heading in the data file and read the data.
READ ( NIN, FMT = '()' )
READ ( NIN, FMT = * ) N, M, P, TOL(1), TOL(2), TOL(3), JOBSYS,
$ JOBEIG, EQUIL, CKSING, RESTOR, UPDATE
IF ( N.LT.0 .OR. N.GT.NMAX ) THEN
WRITE ( NOUT, FMT = 99988 ) N
ELSE
READ ( NIN, FMT = * ) ( ( A(I,J), J = 1,N ), I = 1,N )
READ ( NIN, FMT = * ) ( ( E(I,J), J = 1,N ), I = 1,N )
IF ( M.LT.0 .OR. M.GT.MMAX ) THEN
WRITE ( NOUT, FMT = 99987 ) M
ELSE
READ ( NIN, FMT = * ) ( ( B(I,J), J = 1,M ), I = 1,N )
IF ( P.LT.0 .OR. P.GT.PMAX ) THEN
WRITE ( NOUT, FMT = 99986 ) P
ELSE
READ ( NIN, FMT = * ) ( ( C(I,J), J = 1,N ), I = 1,P )
* Check whether the transfer function of the descriptor
* system is proper.
LISPRP = AB13ID( JOBSYS, JOBEIG, EQUIL, CKSING, RESTOR,
$ UPDATE, N, M, P, A, LDA, E, LDE, B, LDB,
$ C, LDC, NR, RANKE, TOL, IWORK, DWORK,
$ LDWORK, IWARN, INFO )
*
IF ( INFO.NE.0 ) THEN
WRITE ( NOUT, FMT = 99998 ) INFO
ELSE
IF ( LISPRP ) THEN
WRITE ( NOUT, FMT = 99991 )
ELSE
WRITE ( NOUT, FMT = 99990 )
END IF
WRITE ( NOUT, FMT = 99994 ) NR
WRITE ( NOUT, FMT = 99989 ) RANKE
IF ( LSAME( JOBSYS, 'N' ).AND.( LSAME( JOBEIG, 'A' )
$ .OR.LSAME( UPDATE, 'U' ) ) ) THEN
NO = N
ELSE
NO = NR
END IF
WRITE ( NOUT, FMT = 99997 )
DO 10 I = 1, NO
WRITE ( NOUT, FMT = 99995 ) ( A(I,J), J = 1,NO )
10 CONTINUE
WRITE ( NOUT, FMT = 99996 )
DO 20 I = 1, NR
WRITE ( NOUT, FMT = 99995 ) ( E(I,J), J = 1,NR )
20 CONTINUE
IF ( LSAME( JOBSYS, 'N' ).AND.LSAME( JOBEIG, 'I' )
$ .AND.LSAME( EQUIL, 'S' )
$ .AND.LSAME( UPDATE, 'N' ) )
$ NO = N
WRITE ( NOUT, FMT = 99993 )
DO 30 I = 1, NR
WRITE ( NOUT, FMT = 99995 ) ( B(I,J), J = 1,M )
30 CONTINUE
WRITE ( NOUT, FMT = 99992 )
DO 40 I = 1, P
WRITE ( NOUT, FMT = 99995 ) ( C(I,J), J = 1,NR )
40 CONTINUE
IF ( IWARN.NE.0 )
$ WRITE ( NOUT, FMT = 99998 ) IWARN
END IF
END IF
END IF
END IF
STOP
*
99999 FORMAT (' AB13ID EXAMPLE PROGRAM RESULTS',/1X)
99998 FORMAT (' INFO on exit from AB13ID = ',I2)
99997 FORMAT (/' The reduced state dynamics matrix Ar is ')
99996 FORMAT (/' The reduced descriptor matrix Er is ')
99995 FORMAT (20(1X,F8.4))
99994 FORMAT (/' Order of reduced system =', I5 )
99993 FORMAT (/' The reduced input/state matrix Br is ')
99992 FORMAT (/' The reduced state/output matrix Cr is ')
99991 FORMAT ( ' The system is proper')
99990 FORMAT ( ' The system is improper')
99989 FORMAT (' Rank of matrix E =', I5 )
99988 FORMAT (/' N is out of range.',/' N = ',I5)
99987 FORMAT (/' M is out of range.',/' M = ',I5)
99986 FORMAT (/' P is out of range.',/' P = ',I5)
END
</PRE>
<B>Program Data</B>
<PRE>
AB13ID EXAMPLE PROGRAM DATA
9 2 2 0.0 0.0 0.0 R I N N N U
-2 -3 0 0 0 0 0 0 0
1 0 0 0 0 0 0 0 0
0 0 -2 -3 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 1 0 0 0
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0
0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0
0 1 0 0 0 0 0 0 0
0 0 1 0 0 0 0 0 0
0 0 0 1 0 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 1 0 0 0 0
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 1 0 0
0 0 0 0 0 0 0 1 0
1 0
0 0
0 1
0 0
-1 0
0 0
0 -1
0 0
0 0
1 0 1 -3 0 1 0 2 0
0 1 1 3 0 1 0 0 1
</PRE>
<B>Program Results</B>
<PRE>
AB13ID EXAMPLE PROGRAM RESULTS
The system is improper
Order of reduced system = 7
Rank of matrix E = 5
The reduced state dynamics matrix Ar is
0.2202 0.4554 -0.6171 -0.3695 -1.3751 0.8121 0.1953
0.6175 0.1352 -0.8444 -0.0262 -1.3999 -0.4013 0.3339
-0.6362 -1.1518 0.6708 -0.2221 0.8680 -0.0430 0.1827
0.1430 -0.0480 -0.3290 -0.1625 -0.6986 0.0008 -0.9031
0.0986 -0.8665 0.4541 0.6647 1.4067 0.4214 -0.0381
-0.6979 -0.0079 -0.1915 0.6588 -0.2054 0.0000 0.0000
-0.1861 -0.0021 -0.8313 -0.3063 0.4248 0.0000 0.0000
The reduced descriptor matrix Er is
-1.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 1.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 -1.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 -1.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 -1.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000
The reduced input/state matrix Br is
-0.2140 -0.3805
-0.2558 -0.2539
0.1844 0.4001
-0.1115 -0.1176
0.1879 0.5325
-0.9954 -0.0961
0.0961 -0.9954
The reduced state/output matrix Cr is
0.0439 -3.8727 0.0000 0.0000 0.0000 0.6508 0.7593
0.1184 2.0671 -0.8971 -0.8236 -2.2869 1.4100 0.1085
</PRE>
<HR>
<p>
<A HREF=..\libindex.html><B>Return to index</B></A></BODY>
</HTML>
|