MathGroup Archive 2011

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

Search the Archive

Pattern in immediate definition

  • To: mathgroup at
  • Subject: [mg120737] Pattern in immediate definition
  • From: eLVa <elvadrias at>
  • Date: Mon, 8 Aug 2011 04:20:11 -0400 (EDT)
  • Delivered-to:


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 := *)
  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
to F[[i,j]] (Mathematica complains about this part since F is
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 ??

  • 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