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 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 ?? Thanks
- Follow-Ups:
- Re: Pattern in immediate definition
- From: Leonid Shifrin <lshifr@gmail.com>
- Re: Pattern in immediate definition
- From: DrMajorBob <btreat1@austin.rr.com>
- Re: Pattern in immediate definition