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
function [polynomial, coefficeint] = makePoly(degree)
syms x y
previous = 0 ;
for i=0:degree
current = expand((x+y)^i);
previous= current + previous ;
end
[~,poly] = coeffs(previous);
for j= 1:length(poly)
coefficeint(j) = sym(strcat('a', int2str(j)) );
end
polynomial = fliplr(coefficeint)* poly.' ;
end
2条答案
按热度按时间b4wnujal1#
如果多项式是单变量函数,则可以使用
sym2poly
,如示例y^2
:它会返回
如果您确实希望系数按其他顺序排列,请使用
fliplr(c)
。如果您要使用多项式,最好不要创建名为poly
的变量,这是您可能想要使用的函数的名称。如果您实际上需要处理多变量的多项式,则可以在MatLab中使用MuPAD函数。以下是如何使用MuPAD的
coeff
根据系数前面的变量顺序(x
或y
)获得系数:如果要从多项式中提取所有信息,
poly2list
函数非常有用:然后,可以通过以下方式重建多项式:
nkkqxpd92#
对于这个问题,还有另一种选择。对于给定的次数,此函数返回该次数的多项式及其全部系数。
希望这能帮上忙。