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