Этот пример показывает несколько различных методов, чтобы вычислить корни многочлена.
Функция roots вычисляет корни одно-переменного многочлена, представленного вектором коэффициентов.
Например, создайте вектор, чтобы представлять полиномиальный , затем вычислить корни.
p = [1 -1 -6]; r = roots(p)
r =
3
-2Условно, MATLAB® возвращает корни в векторе - столбце.
Функция poly преобразовывает корни назад в полиномиальные коэффициенты. При работе с векторами poly и roots являются обратными функциями, такими, что poly(roots(p)) возвращает p (до ошибки округления, упорядоченного расположения и масштабирования).
p2 = poly(r)
p2 =
1 -1 -6При работе с матрицей функция poly вычисляет характеристический многочлен матрицы. Корни характеристического многочлена являются собственными значениями матрицы. Поэтому roots(poly(A)) и eig(A) дают тот же ответ (до ошибки округления, упорядоченного расположения и масштабирования).
Можно решить полиномиальные уравнения, включающие тригонометрические функции путем упрощения уравнения с помощью замены. Получившийся многочлен одной переменной больше не содержит тригонометрических функций.
Например, найдите, что значения
этого решают уравнение

Используйте то, что
выразить уравнение полностью с точки зрения синусоидальных функций:

Используйте замену
, чтобы выразить уравнение как простое полиномиальное уравнение:

Создайте вектор, чтобы представлять многочлен.
p = [-3 -1 6];
Найдите корни многочлена.
r = roots(p)
r = 2×1
-1.5907
1.2573
Чтобы отменить замену, использовать
. Функция asin вычисляет обратный синус.
theta = asin(r)
theta = 2×1 complex
-1.5708 + 1.0395i
1.5708 - 0.7028i
Проверьте, что элементы в theta являются значениями
этого, решают исходное уравнение (в ошибке округления).
f = @(Z) 3*cos(Z).^2 - sin(Z) + 3; f(theta)
ans = 2×1 complex
10-14 ×
-0.0888 + 0.0647i
0.2665 + 0.0399i
Используйте функцию fzero, чтобы найти корни многочлена в определенном интервале. Среди другого использования этот метод подходит, если вы строите график многочлена и хотите знать значение конкретного корня.
Например, создайте указатель на функцию, чтобы представлять многочлен
.
p = @(x) 3*x.^7 + 4*x.^6 + 2*x.^5 + 4*x.^4 + x.^3 + 5*x.^2;
Постройте график функции на интервале
.
x = -2:0.1:1; plot(x,p(x)) ylim([-100 50]) grid on hold on

Из графика многочлен имеет тривиальный корень в 0 и другом около -1.5. Используйте fzero, чтобы вычислить и построить график корня, который является около -1.5.
Z = fzero(p, -1.5)
Z = -1.6056
plot(Z,p(Z),'r*')
Если у вас есть Символьная Математика Toolbox™, то существуют дополнительные опции для оценки многочленов символически. Один путь состоит в том, чтобы использовать функцию solve.
syms x
s = solve(x^2-x-6)
s = -2 3
Иначе должен использовать функцию factor, чтобы учесть полиномиальные условия.
F = factor(x^2-x-6)
F = [ x + 2, x - 3]
Смотрите Решают Алгебраическое Уравнение (Symbolic Math Toolbox) для получения дополнительной информации.