Re: Multi-variable first-order perturbation analysis?
- To: mathgroup at smc.vnet.net
- Subject: [mg104646] Re: Multi-variable first-order perturbation analysis?
- From: schochet123 <schochet123 at gmail.com>
- Date: Fri, 6 Nov 2009 05:13:16 -0500 (EST)
- References: <hcl3i9$blv$1@smc.vnet.net>
On Nov 2, 12:54=C2 am, AES <sieg... at stanford.edu> wrote:
> ... Objective is to obtain ... first-order perturbation
> expansions =C2 df1, df2, ... where =C2 df1 means all the relevant derivatives
>
> =C2 =C2 (df1/dx1) * dx1 =C2 + =C2 (df2/dx2) * dx2 + . . .
>
> evaluated at initial values =C2 x1=x10, x2=x20, =C5 and so on
I suggest first setting up an expression as follows:
vars = {x1, x2, x3};
dvs = {dx1, dx2, dx3};
pt = {x10, x20, x30};
funs = {f1, f2};
funsvars = Through[funs @@ vars];
subs = Thread[vars -> pt + t dvs];
expr = funsvars /. subs
which yields
{f1[dx1 t + x10, dx2 t + x20, dx3 t + x30],
f2[dx1 t + x10, dx2 t + x20, dx3 t + x30]}
Although you could also just write that expression by hand, the above
calculation makes it easy to change the number of variables or
functions.
Now do:
pert1 = D[expr, t] /. t -> 0 (**)
which yields the answer
{dx3*Derivative[0, 0, 1][f1][x10, x20, x30]
+ dx2*Derivative[0, 1, 0][f1][x10, x20, x30]
+ dx1*Derivative[1, 0, 0][f1][x10, x20, x30],
dx3*Derivative[0, 0, 1][f2][x10, x20, x30]
+ dx2*Derivative[0, 1, 0][f2][x10, x20, x30]
+ dx1*Derivative[1, 0, 0][f2][x10, x20, x30]}
Formula (**) is essentially the standard perturbation-theory formula
for a first-order perturbation.
Steve