Mathematica How can I expand a function in Mathematica to second order in two variables?

  • Thread starter Thread starter ice109
  • Start date Start date
  • Tags Tags
    Mathematica Weird
AI Thread Summary
The discussion revolves around deriving multivariate Taylor series in Mathematica, highlighting the default behavior of the Series function, which expands successively with respect to each variable, resulting in a nested series format. Users express dissatisfaction with this representation, seeking a method to order terms by total degree. A workaround using the Collect function is suggested, but some users find it inadequate for their needs. A custom function, multiVarSeries, is provided to facilitate expansion around a point to a specified order, though users request modifications for filtering terms based on total order. The conversation also touches on the challenges of learning Mathematica programming, with suggestions for online workshops and self-study through the built-in help resources. Users share frustrations about specific functions not working as expected and seek clarity on achieving a desired representation of multivariate expansions.
ice109
Messages
1,707
Reaction score
6
does anyone know how to derive multivariate taylor series in mathematica? by default it is computed in a very strange: "Series performs a series expansion successively with respect to each variable. The result in this case is a series in x, whose coefficients are series in y. "
 
Physics news on Phys.org
What don't you like about this representation? If you want to have the terms ordered by the total degree of the monomials, there seems not to be a built-in way to do it. (But it shouldn't be too hard to come up with a work-around oneself ...)
 
Try using the function Collect:

Collect[Series[Exp[x y], {x, 0, 8}, {y, 0, 8}] , {x, y}]

If that's not what you want, then I fail to understand. I'm sure there must be a way to do what you are asking, however.
 
Now I understand the problem. That's strange that Mathematica does not have much material about multivariate series, so we can add it ourselves.

Code:
multiVarSeries[f_, x_List, a_List, k_Integer] :=  Block[{n, F}, 
  Evaluate[Fold[Sum, 
     Product[(1/n[i]!) (x[[i]] - a[[i]])^(n[i]), {i, 1, Length[x]}]
 ((Fold[D, F@@x, Table[{x[[i]], n[i]}, {i, 1, Length[x]}]]) /. 
        Table[x[[i]] -> a[[i]], {i, 1, Length[x]}]), 
     Table[{n[i], 1, k}, {i, 1, Length[x]}]]] /. F -> Function[x, f]]

Copy and paste that function into a new cell and then execute it with shift + enter. After that you can invoke the function. Here is a simple example:

multiVarSeries[Exp[x y], {x, y}, {0,0}, 2]

This says to expand the function Exp[x y] with respect to the variables x and y around the point {0,0} up to order 2 (in both variables, I don't let you specify the order separately for each individual variable). The output is of course:

\frac{x^3 y^3}{6}+\frac{x^2 y^2}{2}+x y
 
i don't know much about mathematica programming so can you adjust your function so that it computes to a total order of n? e.g. for order 2 xy terms are written out and x^2 and y^2 terms but not x*y^2. and you example seems to show terms up to order 3

ps
how can i learn to program mathematica
 
ice109 said:
i don't know much about mathematica programming so can you adjust your function so that it computes to a total order of n? e.g. for order 2 xy terms are written out and x^2 and y^2 terms but not x*y^2. and you example seems to show terms up to order

Yes, I understand your complaint with the function. One thing you can do is make n larger than you need and then use a filter to get only the terms you want. It is more work than it is worth for me to change the function to match that behavior.

how can i learn to program mathematica

There is no good way. If you are really wealthy, you can do workshops online with Wolfram Inc that will teach you how to program Mathematica. Otherwise you have to do what I did, which is to read the built-in help and practice for months.
 
well it doesn't work. i read on a grou somewhere the Normal[Series[Exp[x*t + y*t], {t, 0, 2}]] /. t -> 1 would work and it does but it doesn't work for my function. any ideas?
 
ice109 said:
well it doesn't work. i read on a grou somewhere the Normal[Series[Exp[x*t + y*t], {t, 0, 2}]] /. t -> 1 would work and it does but it doesn't work for my function. any ideas?

What doesn't work and what function are you trying to do this with?
 
so here i am again with the same problem. how in the heck do i get mathematica to give me this representation:
943f2353e0a301de0bfb79c59081582a.png

704c13f6bfba5c76307c1b7d1c1cac92.png

441cf1e77141e929014082c51cb68fe3.png


of a function expanded to second order in both of its arguments
 
Last edited by a moderator:

Similar threads

Back
Top