       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
>>
>>
>> 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

```

• Prev by Date: Re: Re: Pythonika: Python in Mathematica
• Next by Date: Re: Drawing function with 3 variables in a graph
• Previous by thread: Re: Re: Ask Mathematica to sub for a long expression
• Next by thread: Re: Ask Mathematica to sub for a long expression