Re: A Problem with x[i_]:=
- To: mathgroup at smc.vnet.net
- Subject: [mg83001] Re: A Problem with x[i_]:=
- From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
- Date: Tue, 6 Nov 2007 03:48:33 -0500 (EST)
- Organization: The Open University, Milton Keynes, UK
- References: <fgmq4o$9tv$1@smc.vnet.net>
John wrote:
> The assignment, x=N[Total[-2Log[((n)(pdpd)/v[I])^v[i]]],10], executes
---------------------------------------------^^^^
Beware: I (uppercase i) is a system defined symbol, which is equal to
the imaginary unit sqrt(-1). Therefore, as written, v[I] iwill evaluate
to v[1.0 * \[imaginary]], I bet not exactly what you expect.
> for i=1,2,..,10, and I can make a list of the 10 outcomes by repeating
> the assignment 10 times.
>
> I thought that the assignment, x[i_]:=N{Total[-2Log[((n)(pdpd)/
> v[i])^v[i]]],10], would make a list of the 10 outcomes, without the
> necessity of manual repetitions, but Mathematica rejected it.
>
> The error message tells me that my assignment won't execute because
> times is protected.
>
> There must be some way to do what I want to do, but I can't figure it
> out.
>
> I am using Mathematica 6.
The first definition conflicts with the second because Mathematica
evaluates the LHS of an expression first, so the expression x[i_] := ...
is going to be evaluates to N[Total[-2 Log[((n) (pdpd)/v[I])^v[i]]],
10][i_] := ..., the symbol x on the LHS is replaced by its current
value. To avoid that, erase any anterior definition with Clear (see below).
In[1]:= x = N[Total[-2 Log[((n) (pdpd)/v[I])^v[i]]], 10]
Out[1]= -2.000000000 +
Log[((n pdpd)/v[1.000000000 \[imaginary]])^v[i]]
In[2]:= x[i_] := N[Total[-2 Log[((n) (pdpd)/v[i])^v[i]]], 10]
During evaluation of In[2]:= SetDelayed::write: Tag Plus in \
(-2.000000000+Log[((n pdpd)/v[1.000000000 \[ImaginaryI]])^v[i]])[i_] \
is Protected. >>
Out[2]= $Failed
In[3]:= Clear[x]
x[i_] := N[Total[-2 Log[((n) (pdpd)/v[i])^v[i]]], 10]
In[5]:= x[1]
Out[5]= -2.000000000 + Log[((n pdpd)/v[1.000000000])^v[1.000000000]]
HTH,
--
Jean-Marc