Корни полиномов

Этот пример показывает несколько различных методов для вычисления корней полинома.

Числовые корни

roots функция вычисляет корни полинома с одной переменной, представленного вектором коэффициентов.

Для примера создайте вектор, чтобы представлять полином x2x6, затем вычислите корни.

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) возвращает тот же ответ (до ошибки округления, упорядоченного расположения и масштабирования).

Корни, использующие замену

Можно решить полиномиальные уравнения с участием тригонометрических функций путем упрощения уравнения с помощью замены. Получившийся полином одной переменной больше не содержит никаких тригонометрических функций.

Для примера найдите значения θ которые решают уравнение

3cos2(θ)-sin(θ)+3=0.

Используйте тот факт, что cos2(θ)=1-sin2(θ) для выражения уравнения полностью в терминах синусоидальных функций:

-3sin2(θ)-sin(θ)+6=0.

Используйте замену x=sin(θ) чтобы выразить уравнение как простое полиномиальное уравнение:

-3x2-x+6=0.

Создайте вектор, чтобы представлять полином.

p = [-3 -1 6];

Найдите корни полинома.

r = roots(p)
r = 2×1

   -1.5907
    1.2573

Чтобы отменить замену, используйте θ=sin-1(x). 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 функция для поиска корней полинома в определенном интервале. Среди других применений этот метод подходит, если вы строите график полинома и хотите знать значение конкретного корня.

Для примера создайте указатель на функцию, чтобы представлять полином 3x7+4x6+2x5+4x4+x3+5x2.

p = @(x) 3*x.^7 + 4*x.^6 + 2*x.^5 + 4*x.^4 + x.^3 + 5*x.^2;

Постройте график функции через интервал [-2,1].

x = -2:0.1:1;
plot(x,p(x))
ylim([-100 50])
grid on
hold on

Figure contains an axes. The axes contains an object of type line.

Из графика полином имеет тривиальный корень в 0 и еще один ближний -1.5. Использование fzero чтобы вычислить и построить график близкого корня -1.5.

Z = fzero(p, -1.5)
Z = -1.6056
plot(Z,p(Z),'r*')

Figure contains an axes. The axes contains 2 objects of type line.

Символьные корни

Если у вас есть 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) для получения дополнительной информации.

См. также

| |

Похожие темы