Re: Package and options, subroutines Mathematica programming 3GL function procedure
- To: mathgroup at smc.vnet.net
- Subject: [mg50668] Re: Package and options, subroutines Mathematica programming 3GL function procedure
- From: bobmarlow at postmaster.co.uk (Bob Marlow)
- Date: Wed, 15 Sep 2004 07:54:53 -0400 (EDT)
- References: <ch97qo$ff1$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
I have written a 'subroutine' in Mathematica, shown below, which seems to work fine, but when would it be better, or when would I need to make it a package? Rintegrate2D[f_, x1_, x2_, y1_, y2_, n_] := {dx = (x2 - x1)/n; dy = (y2 - y1)/n; Rvalue = 0; Do[Rvalue = Rvalue + f[ x1 + i*dx, y1 + j*dy], {i, 0, n - 1}, {j, 0, n - 1}]; N[dx*dy*Rvalue]}[[1]] Example call:= T1[x_,y_]:=x+y z=Rintegrate2D[T1,-3,3,-3,3,100] "David Park" <djmp at earthlink.net> wrote in message news:<ch97qo$ff1$1 at smc.vnet.net>... > Guillermo, > > If it was part of a notebook, I would write your package something like the > following. > > BeginPackage["Test1`"] > > fexample1::"usage" = > "fexample[x, opts] calculates (a + b) x where a and b are set by \ > options."; > > a::usage = "a is an option for fexample that sets its value."; > > b::usage = "b is an option for fexample that sets its value."; > > Begin["`Private`"] > > Options[fexample1] = {a -> Global` A, b -> Global` B}; > fexample1[x_, opts___Rule] := > (a + b) x /. {opts} /. Options[fexample1] > > End[] > EndPackage[] > > > Then > > ?Test1`* > > gives usage messges for a, b and fexample1 and > > fexample1[x] > (A + B) x > > Notice that I moved the Options statement to the Private section and I used > Global`A and Global`B to set the default values of a and b. Also you want to > start the usage message with the function name and arguments to get > automatic command completion when desired. > > David Park > djmp at earthlink.net > http://home.earthlink.net/~djmp/ > > > From: Guillermo Sanchez [mailto:guillerm at aida.usal.es] To: mathgroup at smc.vnet.net > > > Dear friends > > Here is a example package: > > (*Title : Package for testing options*) > > BeginPackage["Test`Test1`"] > > fexample1::"usage" = "Help example"; > > Options[fexample1] = {a -> A, b -> B} > > Begin["`Private`"] > > fexample1[x_, opts___Rule] := > (a + b) x /. {opts} /. Options[fexample1] > > End[] > > EndPackage[] > > (*Now I request the package Help*) > > ?"Test`Test1`*" > > (*They are shown not only the fexample1 help but the symbols used in > Options are also shown. How can I prevend that these symbols (a, A, b, > B} be shown. > > Other general question: > > When Options should be place inside of the private context? > Thanks. > > > Guillermo*)