Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2009

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

Search the Archive

Re: using predefined expressions in functions [newbie question]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg100212] Re: [mg100167] using predefined expressions in functions [newbie question]
  • From: "David Park" <djmpark at comcast.net>
  • Date: Thu, 28 May 2009 04:29:01 -0400 (EDT)
  • References: <14105722.1243411978425.JavaMail.root@n11>

I don't see how the VectorAnalysis package is yet used in your example.

Using SetDelayed means that the right hand side of the definition is not
evaluated and the definition never sees any of the left hand side arguments
on the right hand side. The arguments are useless and never get substituted.
Use Set instead.

R1 := {x1, y1, z1}
R2 := {x2, y2, z2}
f[x1_, y1_, z1_, x2_, y2_, z2_] = R1.R2

f[1, 2, 3, 4, 5, 6]
32

Perhaps it is just an example, but I don't see how this function does much.
Isn't it almost as easy to write {1, 2, 3}.{4, 5, 6}? 

I often see questions on MathGroup where definitions are written in a
non-localized manner, where parts of the definition are written in separate
statements outside the principal definition. Although this will sometimes
work, it seems to be an invitation to trouble. It is better to keep the
definition together in one localized structure. I would tend to write your
definition as:

f[x1_, y1_, z1_, x2_, y2_, z2_] := {x1, y1, z1}.{x2, y2, z2}

or as:

f[x1_, y1_, z1_, x2_, y2_, z2_] :=
 With[{R1 = {x1, y1, z1}, R2 = {x2, y2, z2}},
  R1.R2]


David Park
djmpark at comcast.net
http://home.comcast.net/~djmpark/  


From: ChangMo [mailto:nichthierwohne at gmail.com] 

Hi,

I've been trying to write a function using some predefined
expressions, but the function assignment seems to understand the
symbols in the expressions as literals. eg.,

Needs["VectorAnalysis`"]
R1 := {x1,y1,z1}
R2 := {x2,y2,z2}
f[x1_,y1_,z1_,x2_,y2_,z2_] := R1 . R2

f[1,2,3,4,5,6]

gives the output
x1 x2 + y1 y2 + z1 z2
instead of
32 ( = 1*4 + 2*5 + 3*6 )

Can anyone help me with this?  Thanks for your attention.


-ChangMo




  • Prev by Date: Re: Keep Slider Consistent With a Slow Graph
  • Next by Date: Re: list manipulation
  • Previous by thread: Re: using predefined expressions in functions [newbie
  • Next by thread: Re: using predefined expressions in functions [newbie question]