MathGroup Archive 2011

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

Search the Archive

Re: NMinimize problem: fct minimized uses FindRoot


On 12 Dec 2011, at 12:43, Oleksandr Rasputinov wrote:

> For example, the erroneous usage:
>
> Block[{a = 1, b = 2}, Return[a]; Return[b]]
>
> gives:
>
> Return[1]
>
> but a correct usage:
>
> Do[Block[{a = 1, b = 2}, Return[a]; Return[b]], {1}]
>
> gives (because of the enclosing Do):
>
> 1

This is not quite the whole story. For example, while the above use of Return in Block does not work, this one (in a function call) does:

f[] := Block[{a = 1, b = 2}, Return[a]; Return[b]]

f[]

1

Moreover, if you replace the Do loop in your example with a While loop, you will get:

n = 1; While[n < 10, Block[{a = 1, b = 2}, Return[a]; Return[b]]]

Return[1]

All of this is purposeful design and can be explained and justified but I don't think it's worth the bother since Mathematica has far superior means of flow control than this clumsy and arcane construct.

Andrzej 




  • Prev by Date: Re: ListLinePlot starting at x=0 rather than x=1
  • Next by Date: Plots come out blank except for certain limits
  • Previous by thread: Re: NMinimize problem: fct minimized uses FindRoot
  • Next by thread: Re: NMinimize problem: fct minimized uses FindRoot