       Re: Problem with "Which"

• To: mathgroup at smc.vnet.net
• Subject: [mg122221] Re: Problem with "Which"
• From: Bill Rowe <readnews at sbcglobal.net>
• Date: Fri, 21 Oct 2011 06:24:16 -0400 (EDT)
• Delivered-to: l-mathgroup@mail-archive0.wolfram.com

```On 10/20/11 at 7:44 AM, sb at 9y.com (mbmb) wrote:

>Who can check my module?

>KD[f0_, a0_, b0_] := Module[{f = f0, a = a0, b = b0}, f2 = D[f, {x,
>2}]; ew = Solve[D[f, x] == 0, x, Reals]; Print["Extremwerte: ",
>{Which[f2 > 0, "T", f2 < 0, "H", f2 = 0, "S" ], x, f} /. ew];
>Print["Extremwerte: ", {If[f2 > 0, "T", "H" ], x, f} /. ew];
>]

>When I enter: KD[x^3 - 3 x^2, -1, 4] the output is

>Extremwerte: {{Which[-6+6 x<0,H,f2=0,S],0,0},{T,2,-4}}

>whereas the IF-line gives

>Extremwerte: {{H,0,0},{T,2,-4}}

>Why can't I use Which in this case. Why doesn't Mathematica evaluate
>f2 in all cases?

Mathematica is evaluating f2 to 6 x - 6 in all cases. But,
Mathematica cannot do the comparison until a value is
substituted for x. It is the substitution that is creating the problem.

In the case of the If, there is only one substitution per value
of x to be done. This happens, the comparison takes place you
are expecting and you get the output you expect.

In the case of Which, the substitution occurs in the first
expression with x only. So, when 0 is substituted for x, the
first test evaluates as false and no other test gets evaluated.
Then when 2 is substituted for x, the first test evaluates as
true and not other test gets evaluated.

Since nothing evaluates as true when 0 is substituted for x, you
get the Which statement returned unevaluated.

Which[f2 > 0, "T", f2 < 0, "H", f2 = 0, "S" ]

Which[f2 > 0, "T", f2 < 0, "H", f2 == 0, "S" ]

That is your last "test" sets f2 to 0 which I suspect is not
what you intended

```

• Prev by Date: Re: Problem with "Which"
• Next by Date: Re: Simplifying radicals
• Previous by thread: Re: Problem with "Which"
• Next by thread: Re: Problem with "Which"