       Re: infinity expression from matrix inverse

• To: mathgroup at smc.vnet.net
• Subject: [mg49810] Re: [mg49800] infinity expression from matrix inverse
• From: Daniel Lichtblau <danl at wolfram.com>
• Date: Sun, 1 Aug 2004 18:48:42 -0400 (EDT)
• References: <200408010810.EAA02530@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Xiao Huang wrote:
> Dear Friends,
>
> Recently I've been having this problem with Mathematica 5.0: In the follwing
> program, when I set t=2 to 11, mathematica can give me the inverse of matrix
> n0, but for t >=12, it fails to produce the inverse due to infinity
> expressions. Can anyone explain this to me? (I guess the problem occurs in
> the last line.) Thanks a lot!  Those a1,a2,n0,n0s,nn,c you see in the
> following program are just some matrices.
>
> Best Regards,
>
> Xiao
>
> \!\(<< LinearAlgebra`MatrixManipulation`\[IndentingNewLine]
>   \(Remove["\<Global`*\>"];\)\[IndentingNewLine]
>   \(ó = 8;\)\[IndentingNewLine]
>   \(t = 11;\)\[IndentingNewLine]
>   \(â = 0.6;\)\[IndentingNewLine]
>   \(a1 = AppendRows[\ \ \ \ IdentityMatrix[\ t - 1\ ]\ , \ \ \ Table[\ 0\ ,
> \ \
> {\ t - 1\ }, \ {\ 1\ }\ ]\ \ \ \ ];\)\[IndentingNewLine]
>   \(a2 = AppendRows[\ \ \ \ Table[\ 0\ , \ {\ t - 1\ }, \ {\ 1\ }\ ]\ , \ \
> \
> IdentityMatrix[\ t - 1\ ]\ \ \ \ \ ];\)\[IndentingNewLine]
>   \(nn = Transpose[a1] . a1;\)\[IndentingNewLine]
>   \(n1 = Transpose[a1] . a2;\)\[IndentingNewLine]
>   \(c = IdentityMatrix[t] + AppendColumns[\ Table[0, \ {1}, \ {t}],
>     AppendRows[\ \ \(-â\)*IdentityMatrix[t - 1], \
>   Table[\ 0, \ {t - 1}, \ {1}\ ]\ ]\ ];\)\[IndentingNewLine]
>   \(vc = ó\^2*Inverse[c] . Transpose[Inverse[c]];\)\[IndentingNewLine]
>   \(n0 = IdentityMatrix[t]\  + \ 2  x*vc . nn;\)\[IndentingNewLine]
>   \(Print[\ MatrixForm[n0]\ ];\)\[IndentingNewLine]
>   \(n2 = Inverse[n0] . vc;\)\[IndentingNewLine]
>   \)

I doubt this is specific to version 5. Also, I'd do this using exact
input, as below (names changed to avoid non-ascii characters).

<<LinearAlgebra`MatrixManipulation`
oo = 8; t = 12; aa = 3/5;
a1 = AppendRows[IdentityMatrix[t-1], Table[0, {t-1}, {1}]];
a2 = AppendRows[Table[0, {t-1}, { 1 } ], IdentityMatrix[t-1]];
nn = Transpose[a1].a1;
n1 = Transpose[a1].a2;
c = IdentityMatrix[t] + AppendColumns[Table[0, {1}, {t}],
AppendRows[-aa*IdentityMatrix[t - 1], Table[0, {t-1}, {1}]]];
vc = oo^2*Inverse[c].Transpose[Inverse[c]];
n0 = IdentityMatrix[t] + 2*x*vc.nn;

Now we'll do the solving step. It is more efficient to use LinearSolve

In:=
Timing[n2=LinearSolve[n0,vc,Method\[Rule]OneStepRowReduction];]
Out=
{1.71 Second,Null}

In:=
LeafCount[n2]
Out=
297054

In:=
Timing[n2t=Together[n2];]
Out=
{8.79 Second,Null}

In:=
LeafCount[n2t]
Out=
12970

Your matrix consists of linear polynomials in one variable. As an
alternative approach that might help for large examples, you might try
interpolation. For details see

Moreover, as your matrix has the structure IdentityMatrix+x*M, there
should also be an efficient power series approach, using knowledge about
the degree of rational functions in the result.

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: contains 1044938 decimal digits)
• Next by Date: Special characters for German
• Previous by thread: infinity expression from matrix inverse
• Next by thread: Re: Re: contains 208,987,640 decimal digits (was: Fibonachi[5,000,000] contains 1044938 decimal digits)