RE: Define a matrix function with size as argument
- To: mathgroup at smc.vnet.net
- Subject: [mg71381] RE: [mg71358] Define a matrix function with size as argument
- From: "David Park" <djmp at earthlink.net>
- Date: Thu, 16 Nov 2006 00:53:20 -0500 (EST)
Simone,
I think your problem is using MatrixForm in the definition. MatrixForm is
not all that transparent as one might think or hope. Use MatrixForm in the
final output.
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}]
Then to define dum use parentheses to keep the definition independent of
MatrixForm.
(dum = Q[2]) // MatrixForm
That should work.
David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/
From: Simone Giannerini [mailto:sgiannerini at gmail.com]
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.
Many thanks for your attention.
Kind regards,
______________________________________________________
Simone Giannerini
Dipartimento di Scienze Statistiche "Paolo Fortunati"
Universita' di Bologna
Via delle belle arti 41 - 40126 Bologna, ITALY
Tel: +39 051 2098262 Fax: +39 051 232153
______________________________________________________