这适用于 MuPAD 的原因mtaylor
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), x, 4) % [x] is fine too
这并不
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), [x, y], 4)
那是[x, y]
argument 被视为单个符号向量参数/变量,而不是用于扩展的变量列表。你的表情,exp(x^2 - y)
,不是向量变量,而是简单的标量,x
and y
.
解决方法是将列表作为字符串传递:
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), '[x, y]', 4)
or
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), ['[' char(x) ',' char(y) ']'], 4)
or use evalin按照 @Daniel 在评论中的建议将 MuPAD 命令写入单个字符串:
syms x y;
evalin(symengine,'mtaylor(exp(x^2 - y), [x, y], 4)')
MuPAD 中的数组和矩阵与列表
为了进一步说明,Matlab 中的符号变量数组对应于 MuPADarray类型,可以通过创建feval(symengine,'array','1..1','1..2','[x,y]')
。更具体地说,它们属于类型Dom::Matrix(),可以通过创建V=feval(symengine,'Dom::Matrix()','[x,y]')
要不就syms x y;
V=[x,y]
.
The mtaylor
函数需要一个列表输入,可以通过以下方式创建L=evalin(symengine,'[x,y]')
. Thus
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), V, 4)
会产生与你的问题相同的错误,但是
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), L, 4)
将正常工作。很遗憾,L
and V
在 Matlab 中看起来相同,但您可以使用 MuPADdomtype区分它们的函数:
feval(symengine,'domtype',V)
feval(symengine,'domtype',L)
返回Dom::Matrix()
and DOM_LIST
.