Changeset 5831fa9 in git for Singular/LIB/control.lib
- Timestamp:
- Aug 9, 2004, 2:57:20 PM (20 years ago)
- Branches:
- (u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'c5facdfddea2addfd91babd8b9019161dea4b695')
- Children:
- 943192586bf6d25b8bb1b219c2fd992f0c6c24e0
- Parents:
- 2e4e6ecb792d046fdb8da3192871941851acb5f5
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/control.lib
r2e4e6ec r5831fa9 1 version="$Id: control.lib,v 1. 7 2004-08-08 21:40:19 pluralExp $";2 category=" System and Control Theory";1 version="$Id: control.lib,v 1.8 2004-08-09 12:57:20 levandov Exp $"; 2 category="Miscellaneous"; 3 3 info=" 4 4 LIBRARY: control.lib Procedures for System and Control Theory … … 6 6 @* Markus Becker mbecker@mathematik.uni-kl.de 7 7 8 SUPPORT: Forschungsschwerpunkt 'Mathematik und Praxis' 9 8 SUPPORT: Forschungsschwerpunkt 'Mathematik und Praxis' (Project of Dr. E. Zerz 9 and V. Levandovskyy), Uni Kaiserslautern 10 11 NOTE: This library provides algebraic analysis tools for System and Control Theory 10 12 11 13 PROCEDURES: 12 declare(string NameOfRing, string Variables[,string Parameters, string Ordering]); 13 Defining the ring, optional parametes are a string of parameters and a sting of ordering. 14 15 Print(); Well-formatted output of lists, modules and matrixes 16 control(module R); Computes everthing related to controllability 17 autonom(module R); Computes everything related to autonomy(using Exts) 18 autonom2(module R); Computes everything related to autonomy(using dim) 19 LeftKernel(module R); Computing the left kernel of R 20 RightKernel(module R); Computing the right kernel of R 21 LeftInverse(module R) Computes left inverse of matrix(module) 22 23 static Ext_Our(...) Copy of Ext_R from 'homolog.lib' in commutative case; 24 static is_zero_Our(module R) Copy of is_zero from 'OBpoly.lib'; 25 static space(int n) Procedure used inside the procedure 'Print' to have a better formatted output 26 static control_output(); Generating the output for the procedure 'control' 27 static autonom_output(); Generating the output for the procedure 'autonom' and 'autonom2' 28 14 control(module R); analysis of controllability-related properties of R, 15 autonom(module R); analysis of autonomy-related properties of R (using Ext modules), 16 autonom2(module R); analysis of autonomy-related properties of R (using dimension), 17 LeftKernel(module R); a left kernel of R, 18 RightKernel(module R); a right kernel of R, 19 LeftInverse(module R) a left inverse of matrix (module). 20 21 AUXILIARY PROCEDURES: 22 declare(string NameOfRing, string Variables[,string Parameters, string Ordering]); defines the ring, optional parametes are a string of parameters and a sting of ordering, 23 view(); Well-formatted output of lists, modules and matrixes 29 24 "; 25 26 // NOTE: static things should not be shown for end-user 27 // static Ext_Our(...) Copy of Ext_R from 'homolog.lib' in commutative case; 28 // static is_zero_Our(module R) Copy of is_zero from 'OBpoly.lib'; 29 // static space(int n) Procedure used inside the procedure 'Print' to have a better formatted output 30 // static control_output(); Generating the output for the procedure 'control' 31 // static autonom_output(); Generating the output for the procedure 'autonom' and 'autonom2' 30 32 31 33 LIB "homolog.lib"; … … 67 69 }; 68 70 keepring(basering); 69 } ;71 } 70 72 example 71 73 {"EXAMPLE:";echo = 2; … … 192 194 print(M); 193 195 return(); 194 } ;196 } 195 197 example 196 198 {"EXAMPLE:";echo = 2; … … 205 207 M: matrix 206 208 RETURN: right kernel of matrix M, i.e., the module of all elements v such that Mv=0 207 NOTE: in commutative case it is really a left module, in noncommutative(to be implemented later) it will beright module209 NOTE: in commutative case it is a left module, in noncommutative (will be implemented later) it is a right module 208 210 EXAMPLE: example RightKernel; shows an example 209 211 " 210 212 { 211 213 return(syz(M)); 212 } ;214 } 213 215 example 214 216 {"EXAMPLE:";echo = 2; … … 228 230 { 229 231 return( transpose( syz( transpose(M) ) ) ); 230 } ;232 } 231 233 example 232 234 {"EXAMPLE:";echo = 2; … … 250 252 module Id=I; 251 253 return( transpose( lift( module(M),Id ) ) ); 252 } ;254 } 253 255 example 254 256 {"EXAMPLE:";echo =2; … … 270 272 return( Ext_R(i,R,#[1]) ); 271 273 }; 272 } ;274 } 273 275 //------------------------------------------------------------------------ 274 276 static proc is_zero_Our(module R) … … 378 380 379 381 return( control_output( i, NVars, R, Ext_1 ) ); 380 } ;382 } 381 383 example 382 384 {"EXAMPLE:";echo = 2; … … 395 397 view( Rc ); 396 398 view( control(Rc) ); 399 kill r; 397 400 //---------------------------------- 398 401 //reflector antenna … … 408 411 view(R); 409 412 view(control(R)); 413 kill A; 410 414 //---------------------------------- 411 415 //Flexible Rod … … 417 421 view(R); 418 422 view(control(R)); 423 kill A; 419 424 //------------------------------------- 420 425 //TwoPendula … … 427 432 view(R); 428 433 view(control(R)); 434 kill r; 429 435 //---------------------------------------- 430 436 //Wind Tunnel … … 526 532 d=dim( std( Ann(R) ) ); 527 533 return( autonom_output(NVars-d,NVars) ); 528 } ;534 } 529 535 example 530 536 {"EXAMPLE:"; echo = 2; … … 542 548 view( Rc ); 543 549 view( autonom2(Rc) ); 550 kill r; 544 551 //----------------------------------- 545 552 ring r=0,(s1,s2),dp; … … 549 556 view( R ); 550 557 view( autonom2(R) ); 551 558 kill r; 559 //----------------------------------- 552 560 ring r=0,(s1,s2,s3,s4),dp; 553 561 module R= [s1,-s2], … … 558 566 view( R ); 559 567 view( autonom2(R) ); 568 kill r; 560 569 //---------------------------------------- 561 570 ring r=0,(d1,d2),dp; … … 576 585 //"Computes the autonomy of a behaviour represented by the matrix R" 577 586 { 578 int i;579 587 int NVars=nvars(basering); 580 int ExtIsZero; 581 582 588 int ExtIsZero; 583 589 R=transpose(R); 584 585 586 590 ExtIsZero=is_zero_Our(Ext_Our(0,R)); 587 588 i=0; 591 int i=0; 589 592 while( (ExtIsZero)&&(i<=NVars) ) 590 593 { … … 592 595 ExtIsZero = is_zero_Our(Ext_Our(i,R)); 593 596 }; 594 595 return(autonom_output(i,NVars)); 596 597 }; 597 598 return(autonom_output(i,NVars)); 599 } 598 600 example 599 601 {"EXAMPLE:"; echo = 2; … … 611 613 view( Rc ); 612 614 view( autonom(Rc) ); 615 kill r; 613 616 //----------------------------------- 614 617 ring r=0,(s1,s2),dp; … … 618 621 view( R ); 619 622 view( autonom(R) ); 620 623 kill r; 624 //----------------------------------- 621 625 ring r=0,(s1,s2,s3,s4),dp; 622 626 module R= [s1,-s2], … … 627 631 view( R ); 628 632 view( autonom(R) ); 633 kill r; 629 634 //---------------------------------------- 630 635 ring r=0,(d1,d2),dp; … … 634 639 view(R); 635 640 view(autonom(R)); 636 637 641 }; 638 642 //---------------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.