MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Define a matrix function with size as argument

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71380] Re: Define a matrix function with size as argument
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Thu, 16 Nov 2006 00:53:18 -0500 (EST)
  • Organization: The Open University, Milton Keynes, UK
  • References: <ejf10f$4pt$1@smc.vnet.net>

Simone Giannerini wrote:
> Dear all,
> 
> I am quite new to Mathematica and I have the following problem I could
> not find track of both in the Forum and in the documentation.
> I need to define a matrix function with size of the matrix as an
> argument. The function produces a tridiagonal matrix:
> 
> Q[w_] := MatrixForm[SparseArray[
>     {i_, j_} /; Abs[i - j] <= 1 -> Which[i < j,
>       a[i - 1]*(1 - (i - 1)/(2*w)), i > j,
>       (a[-i + 2*w + 1]*(i - 1))/(2*w), i == j,
>       (-(1 - (i - 1)/(2*w)))*a[i - 1] -
>        (a[-i + 2*w + 1]*(i - 1))/(2*w) + 1],
>     {2*w, 2*w}]]
> 
> 
> dum = Q[2]
> 
> the problem is that dum is not recognized as a matrix so that
> operations like Inversion and the like do not work.

MatrixForm is a wrapper function for display only: do not use it within 
your function definition.

Q[w_] := SparseArray[{i_, j_} /; Abs[i -
     j] â?¤ 1 -> Which[i < j, a[i - 1]*(1 - (i - 1)/(2*w)), i > j, (
       a[-i + 2*w + 1]*(i - 1))/(
         2*w), i == j, (-(1 - (i - 1)/(2*w)))*a[i - 1] - (a[-i + 2*
         w + 1]*(i - 1))/(2*w) + 1], {2*w, 2*w}]

dum = Q[2]
dum // MatrixForm
Inverse[dum]

The above expression work as expected.

Regards,
Jean-Marc


  • Prev by Date: Re: Function defined with If
  • Next by Date: Re: Define a matrix function with size as argument
  • Previous by thread: Re: Define a matrix function with size as argument
  • Next by thread: Re: Define a matrix function with size as argument