Re: Product command with matrices

• To: mathgroup at smc.vnet.net
• Subject: [mg87922] Re: Product command with matrices
• From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
• Date: Sat, 19 Apr 2008 23:53:36 -0400 (EDT)
• Organization: The Open University, Milton Keynes, UK
• References: <fu9ft7\$ce2\$1@smc.vnet.net>

```J Davis wrote:

> I want to define a matrix valued function such as the following (in
> LaTeX lingo):
>
> \$\$
> X(0)=Id,
> X(n)=\prod_{i=0}^{n-1} (Id + f[i] A)
> \$\$
>
> where A and f have already been defined and Id is the identity matrix
> of appropriate size.
>
> I tried the following:
>
> Id=IdentityMatrix[2];
> Phi[0]:=Id;
> Phi[n_]:= Product[Id + f[i] A,{i,0,n-1}]
>
> However, Phi[3] and (Id+f[2]A).(Id+f[1]A).(Id+f[0]A) do not agree.

The following will do the recursion and correctly handle the *matrix*
product (which Product[] does not do).

Fold[(Id + f[#2] A).#1 &, Id + f[0] A, Range[n - 1]]

Here is an example of a complete definition:

Id = IdentityMatrix[2];

phi[0] := Id;
phi[n_] := Fold[(Id + f[#2] A).#1 &, Id + f[0] A, Range[n - 1]]

phi[3]
% == (Id + f[2] A).(Id + f[1] A).(Id + f[0] A) // Simplify

{{A (A (1 + A f[0]) f[1] + A f[0] (1 + A f[1])) f[
2] + (A^2 f[0] f[1] + (1 + A f[0]) (1 + A f[1])) (1 + A f[2]),
A (A^2 f[0] f[1] + (1 + A f[0]) (1 + A f[1])) f[
2] + (A (1 + A f[0]) f[1] + A f[0] (1 + A f[1])) (1 +
A f[2])}, {A (A^2 f[0] f[1] + (1 + A f[0]) (1 + A f[1])) f[
2] + (A (1 + A f[0]) f[1] + A f[0] (1 + A f[1])) (1 + A f[2]),
A (A (1 + A f[0]) f[1] + A f[0] (1 + A f[1])) f[
2] + (A^2 f[0] f[1] + (1 + A f[0]) (1 + A f[1])) (1 + A f[2])}}

True

Regards,
-- Jean-Marc

```

• Prev by Date: Re: A Problem with Simplify
• Next by Date: Fw: Re: DifferenitalD vs CapitalDifferenitalD
• Previous by thread: Re: Product command with matrices
• Next by thread: Re: Re: Product command with matrices