Мой символический полином это не символический полином?! Странная ошибка

У меня есть символическое выражение, подобное этому:

syms h

g=exp(h)+h*exp(h)+h^2*exp(h);

А мне очень нужно извлечь из него многочлен, поэтому я написал:

polyn=coeffs(g,exp(h))

что дает мне символический многочлен от h, равный: h^2+h+1.

Теперь я хочу извлечь коэффициенты из этого символьного многочлена:

coeff=sym2poly(polyn);

Но я получаю сообщение об ошибке:

"Ошибка использования symengine (строка 58). Выражение не является многочленом."

Итак, либо в моем компьютере есть ошибка (что есть шанс), либо Matlab не распознает мой «символический полином» как symb. полин, на самом деле.

Я должен упомянуть, что если я наберу:

polyn=h^2+h+1;

coeff=sym2poly(polyn);

У меня вообще ни одной ошибки! Однако, поскольку я программирую, я не могу ввести этот многочлен, поэтому мне нужно получить его так, как я это сделал.

Я могу что-то здесь сделать??


person gustavoreche    schedule 22.09.2016    source источник
comment
Я следовал вашему коду, и у меня не было ошибки. Вы уверены, что ваш код ничего не делает с polyn между coeffs и sym2poly? Возможно, вы могли бы добавить точку останова прямо перед sym2poly и посмотреть, как выглядит polyn.   -  person erfan    schedule 22.09.2016
comment
@erfan проверит это завтра на приличном компьютере, я не доверяю своему. Спасибо   -  person gustavoreche    schedule 22.09.2016


Ответы (1)


Вот решение, которое работает для меня:

syms h
g= exp(h)+h*exp(h)+h^2*exp(h);
polyn= coeffs(g,exp(h))
polyn= sym(char(polyn));
coeff= sym2poly(polyn)
person AVK    schedule 22.09.2016