Re: Convert from String to variable
- To: mathgroup at smc.vnet.net
- Subject: [mg70248] Re: [mg70229] Convert from String to variable
- From: "Peng Yu" <pengyu.ut at gmail.com>
- Date: Mon, 9 Oct 2006 01:56:05 -0400 (EDT)
- References: <200610080604.CAA11869@smc.vnet.net> <NDBBJGNHKLMPLILOIPPOAECNFDAA.djmp@earthlink.net> <366c6f340610081232x7f030299lc3f5f5827d3b757e@mail.gmail.com> <366c6f340610081242h1de28809k4dcf80adbfdb81a@mail.gmail.com> <22d35c5a0610081512o60a5c424m87888113b756953@mail.gmail.com>
On 10/8/06, Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com> wrote:
> On 10/8/06, Peng Yu <pengyu.ut at gmail.com> wrote:
> > Hi,
> >
> > I replied the mail to mathgroup at smc.vnet.net. It seems that I haven't
> > subscribe to that mailing list. So I forward the mail to you. Would
> > you please take some time to answer it?
> >
> > Thanks,
> > Peng
> >
> > ---------- Forwarded message ----------
> > From: Peng Yu <pengyu.ut at gmail.com>
To: mathgroup at smc.vnet.net
> > Subject: [mg70248] Re: [mg70229] Convert from String to variable
> >
> >
> > On 10/8/06, David Park <djmp at earthlink.net> wrote:
> > > Peng,
> > >
> > > Just use Symbol.
> > >
> > > Symbol["a" <> ToString[1] <> ToString[2] <> ToString[3]]
> > > Head[%]
> > > a123
> > > Symbol
> >
> > What I really intent to define is a function like the following. l, m
> > and n could go from 0 to any positive integer. Here the parameter list
> > of CD should also be changed correspondingly.
> >
> > CD[Ith_, z_, d_, Ith0_, a000_, a001_, a002_, a010_, a011_, a012_, a020_,
> > a021_, a022_, a100_, a101_, a102_, a110_, a111_, a112_, a120_, a121_,
> > a122_, a200_, a201_, a202_, a210_, a211_, a212_, a220_, a221_, a222_] :=
> > Sum[ToExpression["a" <> ToString[l] <> ToString[m] <> ToString[n]]*(
> > Ith - Ith0)^l*z^(2*m)*d^(n), {l, 0, 2}, {m, 0, 2}, {n, 0, 2}]
> >
> >
> > I tried this, but it is not working. The difficulty is in the left
> > hand side. Can I write a function to define a set of other functions?
> >
> > CD[Ith_, z_, d_, Ith0_, Flatten@
> > Table[ToExpression["a" <> ToString[l] <> ToString[m] <> ToString[n] <>
> > "_"], {l, 0, 2}, {m, 0, 2}, {n, 0, 2}]] := Sum[ToExpression["a" <>
> > ToString[l] <> ToString[m] <> ToString[n]]*(Ith - Ith0)^l*z^(
> > 2*m)*d^(n), {l, 0, 2}, {m, 0, 2}, {n, 0, 2}]
> >
>
> You should use an immediate assigment '=' rather than a delayed assighment ':='
>
> In[1]:=
> CD[Ith_, z_, d_, Ith0_, a000_, a001_, a002_, a010_,
> a011_, a012_, a020_, a021_, a022_, a100_, a101_,
> a102_, a110_, a111_, a112_, a120_, a121_, a122_,
> a200_, a201_, a202_, a210_, a211_, a212_, a220_,
> a221_, a222_] =
> Sum[ToExpression[StringJoin["a", ToString[l],
> ToString[m], ToString[n]]]*(Ith - Ith0)^l*
> z^(2*m)*d^n, {l, 0, 2}, {m, 0, 2}, {n, 0, 2}]
>
> Out[1]=
> a000 + a001*d + a002*d^2 + a100*(Ith - Ith0) +
> a101*d*(Ith - Ith0) + a102*d^2*(Ith - Ith0) +
> a200*(Ith - Ith0)^2 + a201*d*(Ith - Ith0)^2 +
> a202*d^2*(Ith - Ith0)^2 + a010*z^2 + a011*d*z^2 +
> a012*d^2*z^2 + a110*(Ith - Ith0)*z^2 +
> a111*d*(Ith - Ith0)*z^2 + a112*d^2*(Ith - Ith0)*
> z^2 + a210*(Ith - Ith0)^2*z^2 +
> a211*d*(Ith - Ith0)^2*z^2 + a212*d^2*(Ith - Ith0)^2*
> z^2 + a020*z^4 + a021*d*z^4 + a022*d^2*z^4 +
> a120*(Ith - Ith0)*z^4 + a121*d*(Ith - Ith0)*z^4 +
> a122*d^2*(Ith - Ith0)*z^4 + a220*(Ith - Ith0)^2*
> z^4 + a221*d*(Ith - Ith0)^2*z^4 +
> a222*d^2*(Ith - Ith0)^2*z^4
":=" works fine for me. Please the results below. My question was how
to define a set of CD function easily, like
CD[Ith_,z_,d_,Ith0_,a000_,a001_,a010_,a011_,a020_,a021_,a100_,a101_,a110_,a111_,a120_,a121_,a200_,a201,a210_,a211_,a220_,a221_]:=
Sum[ToExpression[StringJoin["a",ToString[l],ToString[m],ToString[n]]]*(
Ith-Ith0)^l*z^(2*m)*d^n,{l,0,2},{m,0,2},{n,0,1}]
or CD[Ith_,z_,d_,Ith0_,a000_,a001_,a010_,a011_,a100_,a101_,a110_,a111_,a200_,a201,a210_,a211_,a220_,a221_]:=
Sum[ToExpression[StringJoin["a",ToString[l],ToString[m],ToString[n]]]*(
Ith-Ith0)^l*z^(2*m)*d^n,{l,0,2},{m,0,1},{n,0,1}]
In[74]:=
CD[Ith_,z_,d_,Ith0_,a000_,a001_,a002_,a010_,a011_,a012_,a020_,a021_,a022_,\
a100_,a101_,a102_,a110_,a111_,a112_,a120_,a121_,a122_,a200_,a201_,a202_,a210_,\
a211_,a212_,a220_,a221_,a222_]:=
Sum[ToExpression[StringJoin["a",ToString[l],ToString[m],ToString[n]]]*(
Ith-Ith0)^l*z^(2*m)*d^n,{l,0,2},{m,0,2},{n,0,2}]
In[75]:=
CD[Ith,z,d,Ith0,a000,a001,a002,a010,a011,a012,a020,a021,a022,a100,a101,a102,\
a110,a111,a112,a120,a121,a122,a200,a201,a202,a210,a211,a212,a220,a221,a222]
Out[75]=
\!\(a000 + a001\ d + a002\ d\^2 + a100\ \((Ith - Ith0)\) + a101\
d\ \((Ith - Ith0)\) + a102\ d\^2\ \((Ith - Ith0)\) +
a200\ \((Ith - Ith0)\)\^2 + a201\ d\ \((Ith - Ith0)\)\^2 + a202\ d\^2\ \
\((Ith - Ith0)\)\^2 + a010\ z\^2 + a011\ d\
z\^2 + a012\ d\^2\ z\^2 + a110\ \((Ith - Ith0)\)\ z\^2 + a111\ d\ \((Ith \
- Ith0)\)\ z\^2 + a112\ d\^2\ \((Ith - Ith0)\)\
z\^2 + a210\ \((Ith - Ith0)\)\^2\ z\^2 + a211\ d\ \((Ith - Ith0)\)\^2\ \
z\^2 + a212\ d\^2\ \((
Ith - Ith0)\)\^2\ z\^2 + a020\ z\^4 + a021\ d\ z\^4 + a022\ d\^2\ z\^4 + \
a120\ \((Ith -
Ith0)\)\ z\^4 + a121\ d\ \((Ith - Ith0)\)\ z\^4 + a122\ d\^2\ \((
Ith - Ith0)\)\ z\^4 + a220\ \((Ith - Ith0)\)\^2\
z\^4 + a221\ d\ \((Ith -
Ith0)\)\^2\ z\^4 + a222\ d\^2\ \((Ith - Ith0)\)\^2\ z\^4\)
- References:
- Convert from String to variable
- From: "PengYu.UT@gmail.com" <PengYu.UT@gmail.com>
- Convert from String to variable