RE: problem with modules
- To: mathgroup at smc.vnet.net
- Subject: [mg72247] RE: [mg72228] problem with modules
- From: "David Annetts" <davidannetts at aapt.net.au>
- Date: Sat, 16 Dec 2006 05:18:01 -0500 (EST)
Hi Jamie, > I do not understand how to return a result from a module so > that I can use the result globally. I am trying to generate 2 > matrices from the module. > For example, > ludecomp[n_,A_]:=Module[{...}, > ...; > Return[U//MatrixForm] > Return[L//MatrixForm]] > When I type ludecomp[n,A], it returns a result, however, when > I try to input just the variable U, it doesn't return a > value. I'd greatly appreciate any help that you can offer! That is because your module is defined for two arguments only. By the way, if n_ is the matrix size, then you don't need this as an argument since you can ask the matrix for this internally (dims = Dimensions[A]). This makes translating Fortran a bit clearer. As to returning different arguments, the easiest way is to set up options. Options[ludecomp] = {DefaultOutput -> "Both"}; ludecomp[oneArg_, opts___] := Module[...]; Somewhere in your module, you'll need to do something like mOutput = DefaultOutput /. {opts} /. Options[ludecomp]; To see what you're going to output and actualOutput = Switch[mOutput, Both, {L, U}, Upper, U, Lower, L ]; At the end of your module. You don't need Return[] (just make the returned output is the last line in the module) but it does help (IMHO) readability as you can easily see exactly what is returned. Regards, Dave.