Post a reply
Username:
Note:If not registered, provide any username. For more comfort, register here.
Subject:
Message body:
Enter your message here, it may contain no more than 60000 characters. 

Smilies
:D :) :( :o :shock: :? 8) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:
Font size:
Font colour
Options:
BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON
Disable BBCode
Disable smilies
Do not automatically parse URLs
Confirmation of post
To prevent automated posts the board requires you to enter a confirmation code. The code is displayed in the image you should see below. If you are visually impaired or cannot otherwise read this code please contact the %sBoard Administrator%s.
Confirmation code:
Enter the code exactly as it appears. All letters are case insensitive, there is no zero.
   

Topic review - Inverse of a matrix
Author Message
  Post subject:  Re: Inverse of a matrix  Reply with quote
Your answers work perfectly, however the documentation on power says that power works with integer exponents, so the manual must be updated.

And I think I've computed inverses using power(A,-1) in a different setting. If I found the code I'll post it here.

Thanks
Post Posted: Wed Mar 24, 2010 4:56 pm
  Post subject:  Re: Inverse of a matrix  Reply with quote
Yes, 'inverse' of linalg.lib works; see below.
Indeed, 'power' of matrix.lib expects an exponent >= 0. (It is then also clear why the unit matrix is returned, because the loop inside 'power' terminates immediately with the power computed so far which is just the unit matrix.)

$ ./Singular
SINGULAR / Development
A Computer Algebra System for Polynomial Computations / version 3-1-1
0<
by: G.-M. Greuel, G. Pfister, H. Schoenemann \ Feb 2010
FB Mathematik der Universitaet, D-67653 Kaiserslautern \
// ** executing /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/.singularrc
> LIB "linalg.lib";
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/linalg.lib (12258,2009-11-09)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/general.lib (12231,2009-11-02)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/poly.lib (12443,2010-01-19)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/inout.lib (12541,2010-02-09)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/elim.lib (12231,2009-11-02)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/ring.lib (12231,2009-11-02)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/primdec.lib (12617,2010-03-08)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/absfact.lib (12231,2009-11-02)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/triang.lib (12231,2009-11-02)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/random.lib (12231,2009-11-02)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/matrix.lib (12231,2009-11-02)
// ** loaded /cygdrive/c/Work/SINGULAR-Branches/SINGULAR-for-fans/Singular/LIB/nctools.lib (12231,2009-11-02)
> ring cuerpobase=(0,a),(dummy),dp; minpoly=a4-10a2+1;
> def sqrt6 = 1/2a2-5/2;
> def sqrt2 = 1/2a3-9/2a;
> def sqrt3 = a - sqrt2;
> vector v1=[0,0,1];
> vector v2=[0,2/3*sqrt2,-1/3];
> vector v3=[-1/3*sqrt6,-1/3*sqrt2,-1/3];
> vector v4=[1/3*sqrt6,-1/3*sqrt2,-1/3];
> matrix basesaux[3][3]=matrix(v1),matrix(v2),matrix(v3);
> matrix b1bc=transpose(basesaux);
> inverse(b1bc);
_[1,1]=(-1/8*a^2+5/8)
_[1,2]=(1/8*a^3-9/8*a)
_[1,3]=1
_[2,1]=(-1/8*a^2+5/8)
_[2,2]=(3/8*a^3-27/8*a)
_[2,3]=0
_[3,1]=(-1/4*a^2+5/4)
_[3,2]=0
_[3,3]=0
> inverse(b1bc)*b1bc; // just checking...
_[1,1]=1
_[1,2]=0
_[1,3]=0
_[2,1]=0
_[2,2]=1
_[2,3]=0
_[3,1]=0
_[3,2]=0
_[3,3]=1
>
Post Posted: Tue Mar 23, 2010 11:10 am
  Post subject:  Re: Inverse of a matrix  Reply with quote
Take a look, whether power from matrix.lib
is only limited to positive powers.

Use inverse from linalg.lib instead.

C. Gorzel
Post Posted: Mon Mar 22, 2010 4:31 pm
  Post subject:  Inverse of a matrix  Reply with quote
I think I've found a bug. When I execute the following code
Code:
                     SINGULAR                             /
A Computer Algebra System for Polynomial Computations   /   version 3-1-0
                                                       0<
     by: G.-M. Greuel, G. Pfister, H. Schoenemann        \   Mar 2009
FB Mathematik der Universitaet, D-67653 Kaiserslautern    \
> LIB "matrix.lib";
// ** loaded /usr/share/Singular/LIB/matrix.lib (1.48,2009/04/10)
// ** loaded /usr/share/Singular/LIB/nctools.lib (1.54,2009/05/08)
// ** loaded /usr/share/Singular/LIB/poly.lib (1.53,2009/04/15)
// ** loaded /usr/share/Singular/LIB/general.lib (1.62,2009/04/15)
// ** loaded /usr/share/Singular/LIB/random.lib (1.20,2009/04/15)
// ** loaded /usr/share/Singular/LIB/ring.lib (1.34,2009/04/15)
// ** loaded /usr/share/Singular/LIB/primdec.lib (1.147,2009/04/15)
// ** loaded /usr/share/Singular/LIB/absfact.lib (1.7,2008/07/16)
// ** loaded /usr/share/Singular/LIB/triang.lib (1.14,2009/04/14)
// ** loaded /usr/share/Singular/LIB/elim.lib (1.34,2009/05/05)
// ** loaded /usr/share/Singular/LIB/inout.lib (1.34,2009/04/15)
> ring cuerpobase=(0,a),(dummy),dp; minpoly=a4-10a2+1;
> def sqrt6 = 1/2a2-5/2;
> def sqrt2 = 1/2a3-9/2a;
> def sqrt3 = a - sqrt2;
> vector v1=[0,0,1];
> vector v2=[0,2/3*sqrt2,-1/3];
> vector v3=[-1/3*sqrt6,-1/3*sqrt2,-1/3];
> vector v4=[1/3*sqrt6,-1/3*sqrt2,-1/3];
> matrix basesaux[3][3]=matrix(v1),matrix(v2),matrix(v3);
> matrix b1bc=transpose(basesaux);
> power(b1bc,-1);
_[1,1]=1
_[1,2]=0
_[1,3]=0
_[2,1]=0
_[2,2]=1
_[2,3]=0
_[3,1]=0
_[3,2]=0
_[3,3]=1
>


the result can't be correct since the matrix b1bc is not the unit matrix. Am I doing anything wrong?

Best,

Javier
Post Posted: Mon Mar 22, 2010 12:40 pm


It is currently Fri May 13, 2022 11:06 am
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group