MathGroup Archive 2009

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

Search the Archive

Re: Re: Re: Putting an If in my function

  • To: mathgroup at smc.vnet.net
  • Subject: [mg101153] Re: [mg101093] Re: [mg101073] Re: Putting an If in my function
  • From: Bob Hanlon <hanlonr at cox.net>
  • Date: Thu, 25 Jun 2009 07:14:23 -0400 (EDT)
  • Reply-to: hanlonr at cox.net

It did exactly what you asked it to do (immediately evaluate RHS). Some proper forms are

Clear[myFun]

myFun[a_, g_, f_, x_, d_, g_] = (d + a f x);

myFun[a, w, f, x, d, w]

a f x+d

Or

Clear[myFun]

myFun[a_, g_, f_, x_, d_, w_] /; w == g = (d + a f x);

myFun[a, w, f, x, d, w]

a f x+d


Bob Hanlon

---- Porscha Louise McRobbie <pmcrobbi at umich.edu> wrote: 

=============
Hi,

I'm also interested in adding a special case to a function. Using 
what's written below works fine:

myFun[a_, g_, f_, x_, d_, w_] := d + a f x /; g == w

But why doesn't the same work when the myFun is defined using "=" 
instead of":="?  i.e.,

myFun[a_, g_, f_, x_, d_, w_] = (d + a f x) /; g == w
ln[5]:=myFun[a, w, f, x, d, w]
Out[5]=d + a f x /; w == w

Thanks,
Porscha


Quoting "Sjoerd C. de Vries" <sjoerd.c.devries at gmail.com>:

> Dear lobotomy,
>
> "Nomen est omen", the old Romans used to say. And they were often
> right.
>
> I'm not sure what you are trying to do here, with your function in an
> unneccessary, overly complex, pure function notation. Why not write:
>
> myFun[a_, g_, f_, x_, d_, w_] := d (1 + (E^g - E^w)/f)^(f x) + (a (-1
> + (1 + (E^g - E^w)/f)^(f x)) f)/( E^g - E^w)
>
> which is much more readable (at least in Mathematica)?
>
> In[31]:= Limit[myFun[a, g, f, x, d, w], g -> w]
>
> Out[31]= d + a f x
>
> You use the undefined 'n' in d + a n. I guess this must be f x...
>
> You can add a definition for myFun for this special case like this (no
> If[ ] necessary):
>
> myFun[a_, g_, f_, x_, d_, w_] := d + a f x /; g == w
>
> In[36]:= myFun[a, w, f, x, d, w]
>
> Out[36]= d + a f x
>
> If you want to use an If in the definition this would be something
> like:
>
> myFun[a_, g_, f_, x_, d_, w_] := If[g===w, d (1 + (E^g - E^w)/f)^(=
f=
>  x)
> + (a (-1 + (1 + (E^g - E^w)/f)^(f x)) f)/( E^g - E^w),d + a f x]
>
> Cheers -- Sjoerd
>
> On Jun 22, 10:21 am, Lobotomy <labb... at gmail.com> wrote:
>> Hi, this is my function
>>
>> #5 (1 + ((E^#2 - 1) - (E^#6 -
>>             1))/#3)^(#3*#4) + (#1*((1 + (((E^#2 - 1) - (E^#6 =
> -
>>                  1))/#3))^(#3*#4) -
>>         1))/(((E^#2 - 1) - (E^#6 - 1))/#3) &[a, g, f, x, d, w]
>>
>> in the case when w==g the denominator equals zero.
>>
>> in this case i would like to rewrite the formula above to the much
>> simpler
>> d+a*n. How is this done? I've tried
>>
>> If[w == g, % = d + a*n], but this is not working. Another thing is
>> where to put the "If"
>
>
>
>
>



--

Bob Hanlon



  • Prev by Date: Re: FindInstance over Integers
  • Next by Date: stirring chocolate pudding backwards: identifying coordinates
  • Previous by thread: Re: Re: Re: Putting an If in my function
  • Next by thread: Two questions about modification of a matrix.