将字符串转换为 Mathematica 中非法/不支持的表达式。
我需要将一个变量(例如 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 喜欢列表,因此任何退化的表都将具有一组外部 {}
。
假设我之前的代码生成了以下两组集合:
表[1]= {{A, 0, n}};
表[2]= {{A, 0, n}, {B, 0, m}}; .
我最好的想法是使用字符串操作(对于 i= 2):
字符串 = ToString[表[i]]; .
str = StringReplacePart[string, {" ", " "}, {{1}, {StringLength[string], StringLength[string]}}]
下一步是将 str
转换为如下表达式var
并通过执行 var= ToExpression[str]
来执行 Series[A^2 + B^2 + C^2, var]
,但是这将返回以下错误:
ToExpression::sntx:“{A, 0, n}, {B, 0, m}”中或之前的语法无效。
$失败
帮助将 str
正确转换为表达式或建议另一种方法来处理此问题。
I need to input a variable, say var
, into Mathematica function Series[ ] like this: Series[A^2+B^2+C^2, var]
. Series[ ] has the following syntax:
Series[f, {x, x_0, n}] generates a power series expansion for f about the point x=x_0 to order n.
Series[f, {x, x_0, n}, {y, y_0, m}, ...] successively finds series expansions with respect to x, then y, etc.
Because I am not always computing Series[ ] in one dimension (i.e., B
and C
are not always variables at each iteration), var
must be properly formatted to fit the dimension demands. The caveat is that Mathematica likes lists, so any table degenerated will have a set of outer {}
.
Suppose my previous code generates the following two sets of sets:
table[1]= {{A, 0, n}};
table[2]= {{A, 0, n}, {B, 0, m}}; .
My best idea is to use string manipulation (for i= 2):
string = ToString[table[i]]; .
str = StringReplacePart[string, {" ", " "}, {{1}, {StringLength[string], StringLength[string]}}]
The next step is to convert str
to an expression like var
and do Series[A^2 + B^2 + C^2, var]
by doing var= ToExpression[str]
, but this returns the following error:
ToExpression::sntx: Invalid syntax in or before "{A, 0, n}, {B, 0, m}".
$Failed
Help convert str
to expression propertly or suggest another way to handle this problem.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果我理解正确,您已经
并且正在尝试从中获取
这可以使用
Sequence
来完成,就像这样(我将使用series
而不是Series 使其不被评估,以便您可以看到发生了什么):
例如
给出正确的级数展开。
If I understood correctly, you have
and are trying to obtain from that
This may be done using
Sequence
, like so (I will useseries
instead ofSeries
to keep it unevaluated so you can see what is happening):So for instance
gives the right series expansion.
您可以使用
First
或最后
或更一般地说,Part
获取List
你想要的。例如,编辑:
对于多个变量,您可以使用
SlotSequence
(##
) 以及应用
(@@
),如下所示:You can use
First
orLast
or more generally,Part
to get theList
you want. For e.g.,EDIT:
For multiple variables, you can use a
SlotSequence
(##
) along withApply
(@@
) like so: