Matlab — Корни многочлена с переменными коэффициентами

#matlab #solver #polynomials

#matlab #решатель #многочлены

Вопрос:

Предположим p=[3,2,1] . Затем roots(p) дает корни 3x^2 2x 1 .

Что, если коэффициенты многочлена зависят от коэффициента a ? Как многочлен 3x^2 2x a . Если я определяю p = @(a) [3,2,a] , то roots(p) не работает. Ошибка

 Undefined function 'isfinite' for input arguments of type 'function_handle'.
  

Есть ли способ настроить roots функцию или мне нужно отступить fsolve , чтобы найти корни многочлена с переменными коэффициентами?

Комментарии:

1. какую версию Matlab вы используете?

Ответ №1:

Вам необходимо определить a как символьную переменную следующим образом:

 syms a
  

Затем

 p = [3,2,a]
roots(p)
  

должно работать. Я использую R2019b.

Для более сложных примеров, если вы знаете что-либо о переменной a (например a , является реальной), вы должны сообщить roots() функции, определив переменную как реальную:

 syms a real
  

Комментарии:

1. Большое вам спасибо, все работает отлично! Я использую R2019a.