matelor mupad - 意思
mtaylor MuPAD - Matlab
我正在尝试 运行 来自 MatLab 中的 MuPAD 引擎的函数 mtaylor
,它提供了函数的多元泰勒展开。但是,它一直告诉我我正在尝试围绕无效点进行扩展。这是我尝试过的最小工作示例:
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), [x, y], 4)
Error message:
vError using mupadengine/feval (line 157)
MuPAD error: Error: Invalid expansion point. [mtaylor]
为什么这不起作用?
这适用于 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/variable 而不是扩展的变量列表。您的表达式 exp(x^2 - y)
不是向量变量,而是简单的标量 x
和 y
.
解决方法是将列表作为字符串传递:
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), '[x, y]', 4)
或
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), ['[' char(x) ',' char(y) ']'], 4)
或使用 evalin
将 MuPAD 命令写入单个字符串,如@Daniel 在评论中所建议:
syms x y;
evalin(symengine,'mtaylor(exp(x^2 - y), [x, y], 4)')
数组和矩阵与 MuPAD 中的列表
为了进一步说明,Matlab 中的符号变量数组对应于 MuPAD array
type, which can be created via feval(symengine,'array','1..1','1..2','[x,y]')
. More specifically, they are of type Dom::Matrix()
,可以通过 V=feval(symengine,'Dom::Matrix()','[x,y]')
或仅 syms x y;
V=[x,y]
.
创建
mtaylor
函数需要一个列表输入,可以通过 L=evalin(symengine,'[x,y]')
创建。于是
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
和 V
在 Matlab 中看起来完全相同,但您可以使用 MuPAD 的 domtype
函数来区分它们:
feval(symengine,'domtype',V)
feval(symengine,'domtype',L)
其中 returns Dom::Matrix()
和 DOM_LIST
.
我正在尝试 运行 来自 MatLab 中的 MuPAD 引擎的函数 mtaylor
,它提供了函数的多元泰勒展开。但是,它一直告诉我我正在尝试围绕无效点进行扩展。这是我尝试过的最小工作示例:
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), [x, y], 4)
Error message:
vError using mupadengine/feval (line 157)
MuPAD error: Error: Invalid expansion point. [mtaylor]
为什么这不起作用?
这适用于 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/variable 而不是扩展的变量列表。您的表达式 exp(x^2 - y)
不是向量变量,而是简单的标量 x
和 y
.
解决方法是将列表作为字符串传递:
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), '[x, y]', 4)
或
syms x y;
feval(symengine,'mtaylor',exp(x^2 - y), ['[' char(x) ',' char(y) ']'], 4)
或使用 evalin
将 MuPAD 命令写入单个字符串,如@Daniel 在评论中所建议:
syms x y;
evalin(symengine,'mtaylor(exp(x^2 - y), [x, y], 4)')
数组和矩阵与 MuPAD 中的列表
为了进一步说明,Matlab 中的符号变量数组对应于 MuPAD array
type, which can be created via feval(symengine,'array','1..1','1..2','[x,y]')
. More specifically, they are of type Dom::Matrix()
,可以通过 V=feval(symengine,'Dom::Matrix()','[x,y]')
或仅 syms x y;
V=[x,y]
.
mtaylor
函数需要一个列表输入,可以通过 L=evalin(symengine,'[x,y]')
创建。于是
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
和 V
在 Matlab 中看起来完全相同,但您可以使用 MuPAD 的 domtype
函数来区分它们:
feval(symengine,'domtype',V)
feval(symengine,'domtype',L)
其中 returns Dom::Matrix()
和 DOM_LIST
.