X-Git-Url: https://www.ginac.de/ginac.git//ginac.git?p=ginac.git;a=blobdiff_plain;f=doc%2Ftutorial%2Fginac.texi;h=06ab56fe55ae1c9baed9498d7d2bbcf48d35de33;hp=9c28e7e7b0c6adc5cef8d8b762c43fd3b819b6ac;hb=4102c379eb11a8b9e10adfe4229995e9823c6851;hpb=81c621e4ff1f3e0fdce06b71908f88172666bafa diff --git a/doc/tutorial/ginac.texi b/doc/tutorial/ginac.texi index 9c28e7e7..06ab56fe 100644 --- a/doc/tutorial/ginac.texi +++ b/doc/tutorial/ginac.texi @@ -481,12 +481,10 @@ so if you have a different compiler you are on your own. For the configuration to succeed you need a Posix compliant shell installed in @file{/bin/sh}, GNU @command{bash} is fine. Perl is needed by the built process as well, since some of the source files are automatically -generated by Perl scripts. Last but not least, Bruno Haible's library -CLN is extensively used and needs to be installed on your system. -Please get it either from @uref{ftp://ftp.santafe.edu/pub/gnu/}, from -@uref{ftp://ftpthep.physik.uni-mainz.de/pub/gnu/, GiNaC's FTP site} or -from @uref{ftp://ftp.ilog.fr/pub/Users/haible/gnu/, Bruno Haible's FTP -site} (it is covered by GPL) and install it prior to trying to install +generated by Perl scripts. Last but not least, the CLN library +is used extensively and needs to be installed on your system. +Please get it from @uref{ftp://ftpthep.physik.uni-mainz.de/pub/gnu/} +(it is covered by GPL) and install it prior to trying to install GiNaC. The configure script checks if it can find it and if it cannot it will refuse to continue. @@ -1974,6 +1972,38 @@ by @samp{c}) unit matrix. And finally, @code{symbolic_matrix} constructs a matrix filled with newly generated symbols made of the specified base name and the position of each element in the matrix. +Matrices often arise by omitting elements of another matrix. For +instance, the submatrix @code{S} of a matrix @code{M} takes a +rectangular block from @code{M}. The reduced matrix @code{R} is defined +by removing one row and one column from a matrix @code{M}. (The +determinant of a reduced matrix is called a @emph{Minor} of @code{M} and +can be used for computing the inverse using Cramer's rule.) + +@cindex @code{sub_matrix()} +@cindex @code{reduced_matrix()} +@example +ex sub_matrix(const matrix&m, unsigned r, unsigned nr, unsigned c, unsigned nc); +ex reduced_matrix(const matrix& m, unsigned r, unsigned c); +@end example + +The function @code{sub_matrix()} takes a row offset @code{r} and a +column offset @code{c} and takes a block of @code{nr} rows and @code{nc} +columns. The function @code{reduced_matrix()} has two integer arguments +that specify which row and column to remove: + +@example +@{ + matrix m(3,3); + m = 11, 12, 13, + 21, 22, 23, + 31, 32, 33; + cout << reduced_matrix(m, 1, 1) << endl; + // -> [[11,13],[31,33]] + cout << sub_matrix(m, 1, 2, 1, 2) << endl; + // -> [[22,23],[32,33]] +@} +@end example + Matrix elements can be accessed and set using the parenthesis (function call) operator: @@ -3778,7 +3808,6 @@ avoided. * Built-in Functions:: List of predefined mathematical functions. * Multiple polylogarithms:: * Complex Conjugation:: -* Built-in Functions:: List of predefined mathematical functions. * Solving Linear Systems of Equations:: * Input/Output:: Input and output of expressions. @end menu