Re: How to change symbolic values to numbers

*To*: mathgroup at smc.vnet.net*Subject*: [mg77103] Re: How to change symbolic values to numbers*From*: Szabolcs <szhorvat at gmail.com>*Date*: Sun, 3 Jun 2007 06:17:22 -0400 (EDT)*Organization*: University of Bergen*References*: <f3of5j$oq2$1@smc.vnet.net> <f3r8qf$r6i$1@smc.vnet.net>

Jean-Marc Gulliet wrote: > krzysztof.lisowski at wp.pl wrote: >> Hello for all. >> I have a problem with changeing symbolic to number values: >> >> f1[{x1_,x2_}]=Block[{}, >> L={x1, 1-x1}; >> Print[L]; (*Print prints {x1, 1-x1} but I want to get value {.5, . >> 5)*) >> >> ]; >> >> fCE=f1[{x1,x2}]; fC[{x1_, x2_}]=fCE; >> fCi:=(N[f1[#]])&; >> fCa=fCi[{.5,.5}]; >> fCa >> >> Any help would by very appreciated. >> With best regards, >> Krzysztof Lisowski >> >> > > Use SetDelayed (:=) rather than Set (=) and define L in your Block > statement otherwise it is useless (although Module might be more > appropriate here). WRI should put some scary examples in the documentation about why shouldn't one use Block in situations like this. In[13]:= f1[{L, 1}] During evaluation of In[13]:= $RecursionLimit::reclim: Recursion \ depth of 256 exceeded. >> During evaluation of In[13]:= $RecursionLimit::reclim: Recursion \ depth of 256 exceeded. >> During evaluation of In[13]:= $RecursionLimit::reclim: Recursion \ depth of 256 exceeded. >> During evaluation of In[13]:= General::stop: Further output of \ $RecursionLimit::reclim will be suppressed during this calculation. \ >> Out[13]= $Aborted Ans this way just a simple and easy to debug example ... While the documentation does not say that Block is for local variables, too many people seem to use it this way when they try to program in a procedural style ... There is no "Possibel issues" section on the doc page, and no mention of what can go wrong on http://reference.wolfram.com/mathematica/tutorial/BlocksComparedWithModules.html > f1[{x1_, x2_}] := Block[{L}, L = {x1, 1 - x1}; Print[L]; ]; > f1[{0.5, 2.}] > > {0.5, 0.5} > > Regards, > Jean-Marc >