matlab - 在 Matlab 中获取符号多项式的系数

标签 matlab polynomial-math symbolic-math binomial-coefficients

我有一个 Matlab 函数返回以下形式的多项式:

poly = ax^2 + bx*y + cy^2

其中 a、b 和 c 是常量,x 和 y 是符号(类 sym)。

我想以 [a b c] 的形式获取多项式的系数,但我遇到了以下问题。如果函数返回 poly = y^2,则 coeffs(poly) = 1。我不想要这个——我想要它返回 [0 0 1]

如何创建一个函数,以我想要的形式给出符号多项式的系数?

最佳答案

您可以使用 sym2poly如果您的多项式是单个变量的函数,例如您的示例 y^2:

syms y
p = 2*y^2+3*y+4;
c = sym2poly(p)

返回

c =

     2     3     4

如果您真的想要其他顺序的系数,请使用 fliplr(c)。如果您要使用多项式,最好不要创建名为 poly 的变量,它是您可能想要使用的函数的名称。

如果你真的需要处理多个变量中的多项式,你可以使用MuPAD Matlab 中的函数。以下是您如何使用 MuPAD 的 coeff根据变量的顺序获取系数(xy):

syms x y
p = 2*x^2+3*x*y+4*y;
v = symvar(p);
c = eval(feval(symengine,'coeff',p,v))

如果您想从多项式中提取所有信息,poly2list功能非常有用:

syms x y
p = 2*x^2+3*x*y+4*y;
v = symvar(p);
m = eval(feval(symengine,'poly2list',p,v));
c = m(:,1); % Coefficients
degs = m(:,2:end); % Degree of each variable in each term

然后可以通过以下方式重建多项式:

sum(c.*prod(repmat(v,[size(m,1) 1]).^degs,2))

顺便说一下,你上学的地方是个不错的选择。 :-)

关于matlab - 在 Matlab 中获取符号多项式的系数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21764871/

相关文章:

arrays - matlab中如何从对象数组中获取属性数组

function - 有人可以解释函数 mkpp 和 ppval 的行为吗?

python - 在 sympy 中隔离多元多项式的一个系数的最佳方法

math - 如何定量测量数学表达式的简化程度

image - MATLAB:如何更改imhist的颜色和窗口的大小?

oop - MATLAB : Instantiate a class from an empty Instance to a 'Blank' Instance

C++ Hermite多项式实现

wolfram-mathematica - 分解为幂的 GCD

matlab - MATLAB 中的因式分解符号表达式(和的平方)

matlab - Matlab中有debug和release配置吗