Для решения уравнений в MATLAB существует множество функций. Решение одного уравнения можно представить как поиск нулей функции, стоящей в левой части уравнения. В частном случае в левой части уравнения стоит алгебраический многочлен n-ой степени. Как уже упоминалось выше, многочлен в MATLAB представляется вектором коэффициентов при степенях переменной. Рассмотрим пример – определим в MATLAB многочлен 5x2 2x + 1, для этого в консоли нужно ввести poly=[5 -2 1]. Обратите внимание, что при использовании символа пробела в качестве разделителя элементов вектора знак перед коэффициентом нужно указывать без пробела – иначе MATLAB этот знак будет считать признаком арифметической операции. Коэффициенты при степенях переменных следует вводить в порядке понижения степени. Определение многочлена в виде вектора характерно для MATLAB и обеспечивает краткость программных кодов и эффективность вычислений, однако не обеспечивает наглядности, привычной для естественной записи многочлена. Для переключения между MATLAB формой полинома и естественной записью служат две функции – poly2sym и sym2poly. Ключевое слово sym указывает на объект специфического класса. Класс sym позволяет в MATLAB производит символьные вычисления. Объекты из этого класса чаще всего выводятся на экран в виде, максимально приближенном к естественной математической записи. Функция poly2sym преобразует входной вектор коэффициентов многочлена в привычную запись, а sym2poly делает обратное преобразование. Обратите внимание, что эти функции не только изменяют формат вывода, но и содержимое переменной.


Пример 30.
Определение многочлена в MATLAB и переключение между различными вариантами представления
1 >> poly=[5 2 1]
2 poly =
3 3 1
4
5 >> poly=[5 2 1]
6 poly =
7 5 2 1
8
9 >> poly_sym=poly2sym(poly)
10 poly_sym =
11 5x^2 2x + 1
12 >> sym2poly(poly_sym)
13 ans =
14 5 2 1
15 >> whos
16 Name Size Bytes Class Attributes
17
18 poly 1x3 24 double
19 poly_sym 1x1 112 sym

Для поиска корней алгебраического полинома следует пользоваться функцией roots(polynom). Причем в качестве входного многочлена нужно указывать его в виде именно вектора. Поиск корней многочленов, представленных в символьном виде, также возможен, но с использованием дополнительного расширения – Symbolic Math Toolbox. Вызов roots с аргументом, отличным от алгебраического полинома, приводит к ошибке.


Пример 31.
Поиск корней многочлена
1 >> poly=[5 2 1]
2 poly =
3 5 2 1
4 >> roots(poly)
5 ans =
6 0.2000 + 0.4000i
7 0.2000 0.4000i