Re: Re: Ask Mathematica to sub for a long expression

*To*: mathgroup at smc.vnet.net*Subject*: [mg71947] Re: [mg71921] Re: Ask Mathematica to sub for a long expression*From*: Andrzej Kozlowski <akoz at mimuw.edu.pl>*Date*: Tue, 5 Dec 2006 06:04:47 -0500 (EST)*References*: <ekp4o4$2fq$1@smc.vnet.net><ekudat$86k$1@smc.vnet.net> <200612041138.GAA02860@smc.vnet.net>

On 4 Dec 2006, at 20:38, carlos at colorado.edu wrote: > aaronfude at gmail.com wrote: >> Hi, >> >> Thanks for all the responses. It doesn't quite work for me, but maybe >> with a little extra expertise it will. The problem is that that >> pattern >> is not always obvious w/o extra algebra. The basic problem is >> summarized in the fact that the following doesn't work the way I'd >> like >> it to: >> >> -a-b/.a+b->c >> >> 2a+2b/.a+b->c >> >> Many thanks in advance! >> >> Aaron Fude > > Replacing nontrivial patterns sometimes works, sometimes it doesnt. > It may depends on FullForm details. This violates a basic tenet of > computer science: user-level results should not depend on internal > representation. This would be true if FullForm was "internal representation". However, it is not: Mathematica's programming language *is* exactly what FullForm shows; all other forms are just shortcuts, "macros" or visually pleasing representations of it. In my opinion, if you don't think in FulLForm you can't program fluently in Mathematica. > Here is a simple example. > > ClearAll[f,a,b,c,i]; > f[b_,c_]:=1/(c+b^2); > v=Table[{i,f[b,i]/.b^2->16},{i,-6,6}]; > ListPlot[v,PlotJoined->True]; > > Try to track the source of the error message and the plot gap. > Yes, this is a fair test of your understanding of the Mathematica programming language: if you can't see immediately that this will not work you have some learning to do. In fact, this involves understanding not just of FullForm but also of the evaluation process - another essential aspect of Mathematica programming. In this case, as in many similar ones, a simple solution is to insert Evaluate int the right place: v=Table[Evaluate[{i,f[b,i]/.b^2->16}],{i,-6,6}]; ListPlot[v,PlotJoined->True]; Andrzej Kozlowski Tokyo, Japan

**References**:**Re: Ask Mathematica to sub for a long expression***From:*carlos@colorado.edu