Pattern in immediate definition

• To: mathgroup at smc.vnet.net
• Subject: [mg120737] Pattern in immediate definition
• From: eLVa <elvadrias at gmail.com>
• Date: Mon, 8 Aug 2011 04:20:11 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com

```Hi,

I want to write more clearly the following definition :
TestFunction[{{a_, b_, c_}, {d_, e_, f_}, {g_, h_, k_}}] =
(* immediate definition with = *)
Module[{F, det},
F = {{a, b, c}, {d, e, f}, {g, h, k}};
det = Det[F];
Flatten[Table[D[det, F[[i, j]]], {i, 1, 3}, {j, 1, 3}]]
]

After that, I can pass any 3x3 matrix to the function and get the
result directly replaced, without having to evaluate the derivatives
again , i.e I don't want it to be written :

TestFunction[F_] :=
(* delayed definition with := *)
Module[{det},
det = Det[F];
Flatten[Table[D[det, F[[i, j]]], {i, 1, 3}, {j, 1, 3}]]
]

for it will compute everything every time I get to call the function
(which will be inefficient since I will call it often).

However, I find the trick with the temporary F that gets to be
assigned the matrix of {{a,b,c},{d,e,f},{g,h,i}} ugly and potentially
dangerous since it uses the value of the variables (a,b,...,k) if they
are defined.

I would like something close to :
TestFunction[F_<....>] = Module[<...>] where in the first <..> I get
to specify that the argument is a 3x3 matrix and so I can have access
obviously just a symbol and not a matrix). This way I just have to
worry about F not being defined elsewhere. It will also be a cleaner
definition in my opinion.

Is that possible in any way ??
Thanks

```

• Prev by Date: Re: Can a Locator be Made to Track a Curve?
• Next by Date: Random prices from FinancialData
• Previous by thread: Re: Random prices from FinancialData
• Next by thread: Re: Pattern in immediate definition