[Date Index]
[Thread Index]
[Author Index]
Re: Very very basic question about Mathematica expressions
*To*: mathgroup at smc.vnet.net
*Subject*: [mg111193] Re: Very very basic question about Mathematica expressions
*From*: Bill Rowe <readnews at sbcglobal.net>
*Date*: Fri, 23 Jul 2010 07:11:38 -0400 (EDT)
On 7/22/10 at 5:44 AM, sam.takoy at yahoo.com (Sam Takoy) wrote:
>May I belabor this point a little. I understand how to make
>Manipulate work and I understand functions. (I am a product of
>Scheme from with Mathematica seems to have borrowed a few ideas.)
>My question is much more formal: What are the building blocks of
>Mathematica, the formal language. When you say
>s = x+h
>what is s?
>Is it an "expression"?
No, s is a symbol which evaluates to x+h as a result of the
assignment operation.
>Does s represent x+h wherever it appears (assuming x and h are
>unassigned at the time of s=x+h)? Apparently not always: yes in
>s/.h->5, but not in Manipulate.
>So here, then is my "model" of Mathematica: In s = x+h, s is an
>"Expression" In s[x_, h_]:=x+h, s is a "Function"
With s=x+h, x+h is evaluated and becomes one of the OwnValues of
s. With s[x_, h_]:= x+h, x+h is not evaluated and the expression
x+h becomes one of the DownValues for s. That is:
In[5]:= s = x + h;
{OwnValues[s], DownValues[s]}
Out[6]= {{HoldPattern[s] :> h + x}, {}}
In[7]:= Clear[s];
s[x_, h_] := x + h
{OwnValues[s], DownValues[s]}
Out[9]= {{}, {HoldPattern[s[x_, h_]] :> h + x}}
>Manipulate expects a "Function" so that answers my question.
No, the following works just fine.
Manipulate[Plot[x (1 + a x), {x, 0, 6}], {a, 0, 2}]
Here, the argument x (1 + a x) is simply an expression, clearly
not a function with named arguments.
>Then what is
>s[h_] := x + h? Is it an "Expression" or a "Function" of h with a
>parameter x?
Actually, I would call this an example of bad programming style.
The result depends on h which is local to s and x which is a
global parameter. The dependence on a global parameter often
leads to unexpected results and difficult debugging.
>Would then Manipulate[Plot[s[h], {x, 0, 1}, PlotRange -> {0, 1}],
>{h, 0, 1}] work? (The answer is yes.) So apparently, Plot is happy
>with an "Expression", but Manipulate wants a "Function"? Why?
Manipulate isn't restricted to functions.
>Also, in Manipulate[Plot[x+h, {x, 0, 1}, PlotRange -> {0, 1}], {h,
>0, 1}], x+h is no longer an "Expression", but is once again a
>"Function", because of the context? Even though it's inside Plot
>which is happy with an "Expression"?
No, x+h doesn't become a function simply by making it an
argument to Plot.
>A personal note: I guess I'm a little frustrated that after a few
>months of working with Mathematica, I still have to try things
>before I know whether they'll work or not. I'm used to having a
>clear picture of the grammar of the language that I'm working with,
>but I'm struggling here.
I don't have much to say here. I've been using Mathematica since
version 1.2 and still find I need to try some things out before
I know whether they will work as I want. This is particularly
true of newer features like Manipulate that I don't use frequently.
Prev by Date:
**Re: Show left hand side**
Next by Date:
**Re: Kolmogorov-Smirnov 2-sample test**
Previous by thread:
**Re: Very very basic question about Mathematica expressions**
Next by thread:
**Re: Very very basic question about Mathematica expressions**
| |