Разделите два полинома, используя MATLAB - PullRequest
2 голосов
/ 13 ноября 2009

Я хочу разделить p(x) на q(x), учитывая, что:

p(x)=-5x^4+3x^2-6x
q(x)=x^2+1

Я пытался:

p=inline('-5*(x^4)+3*(x^2)','x')

p =
     Inline function:
     p(x) = -5*(x^4)+3*(x^2)

q=inline('x^2+1','x')

q =
     Inline function:
     q(x) = x^2+1

deconv(p,q)

но получил ошибку:

??? Undefined function or method 'filter' for input arguments of type 'inline'.

Error in ==> deconv at 32
   [q,zf] = filter(b, a, [1 zeros(1,nb-na)]);

Почему?

Ответы [ 2 ]

15 голосов
/ 13 ноября 2009

Встроенные функции - это просто выражения matlab, которые он будет оценивать. Он понятия не имеет, являются ли они полиномами или нет.

Вы хотите это:

p = [-5 0 3 -6 0];
q = [2 0 1];

[quotient remainder] = deconv(p, q)

Здесь нет необходимости в Symbolic Math Toolbox.

0 голосов
/ 13 ноября 2009

r = sym(p) \ sym(q) сделает свое дело. Результатом будет символическая функция, конечно. Чтобы преобразовать это к действующему, s = inline(r).

Edit: Что касается «ПОЧЕМУ»: вы не можете разделить две встроенные функции. Вместо этого они должны сначала быть преобразованы в их символическое представление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...