1

我需要var像这样在 Mathematica 函数 Series[] 中输入一个变量,比如 : Series[A^2+B^2+C^2, var]。Series[ ] 具有以下语法:

Series[f, {x, x_0, n}] 生成 f 关于点 x=x_0 到 n 阶的幂级数展开。
Series[f, {x, x_0, n}, {y, y_0, m}, ...] 依次找到关于 x、y 等的级数展开.

因为我并不总是在一个维度上计算 Series[ ](即,B并不C总是在每次迭代中都是变量),var所以必须正确格式化以适应维度需求。需要注意的是,Mathematica 喜欢列表,因此任何退化的表都会有一组 external {}

假设我之前的代码生成了以下两组集合:

表[1]= {{A, 0, n}};
表[2]= {{A, 0, n}, {B, 0, m}}; .

我最好的想法是使用字符串操作(对于 i=2):

字符串 = ToString[table[i]]; .
str = StringReplacePart[string, {" ", " "}, {{1}, {StringLength[string], StringLength[string]}}]

下一步是通过doing转换str为类似var和do的表达式,但这会返回以下错误:Series[A^2 + B^2 + C^2, var]var= ToExpression[str]

ToExpression::sntx: "{A, 0, n}, {B, 0, m}" 中或之前的语法无效。
$失败

帮助正确转换str为表达式或提出另一种处理此问题的方法。

4

2 回答 2

2

如果我理解正确,你有

table[2] = {{A, 0, n}, {B, 0, m}};

并试图从中获得

Series[f[A,B],{A,0,n},{B,0,m}]

这可以使用 来完成Sequence,就像这样(我将使用series而不是Series保持它不被评估,这样你就可以看到发生了什么):

series[f[A, B], Sequence @@ table[2]]
(*
-> series[f[A,B],{A,0,n},{B,0,m}]
*)

所以例如

table[3] = {{A, 0, 2}, {B, 0, 2}};
Series[f[A, B], Sequence @@ table[3]]

给出正确的级数展开。

于 2011-07-29T11:49:53.593 回答
1

您可以使用FirstorLast或更一般地,Part来获得List您想要的。例如,

var = {{x, 0, 3}, {x, 0, 5}};
Series[1/(1 + x), var[[1]]]

Out[1]= 1 - x + x^2 - x^3 + O[x]^4

Series[1/(1 + x), var[[2]]]

Out[2]= 1 - x + x^2 - x^3 + x^4 - x^5 + O[x]^6

编辑:

对于多个变量,您可以将SlotSequence( ##) 与Apply( ) 一起使用,@@如下所示:

Series[Sin[u + w], ##] & @@ {{u, 0, 3}, {w, 0, 3}}
于 2011-07-29T06:41:18.907 回答