Этот пример показывает несколько различных методов для вычисления корней полинома.
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
Чтобы отменить замену, используйте . The 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™ Symbolic Math, то существуют дополнительные опции для оценки полиномов символически. Один из способов - использовать solve
(Symbolic Math Toolbox) функция.
syms x
s = solve(x^2-x-6)
s = -2 3
Другой способ - использовать factor
(Symbolic Math Toolbox) функция для факторизации полиномиальных членов.
F = factor(x^2-x-6)
F = [ x + 2, x - 3]
Смотрите Решение Алгебраического Уравнения (Symbolic Math Toolbox) для получения дополнительной информации.