Составители:
16
Он получен путем пятикратного применения пары команд roots/poly,
когда по корням восстанавливался полином, снова искались его кор
ни и т. д. Кружок в центре рис. 1.7 соответствует истинным корням
полинома
8
(1)x 1
, а звездочками помечены значения корней, вычис
ленные в процессе итераций.
% Корневой тест
n=8; r=ones(1,n); clg, hold on
for i=1:5,
p=poly(r), r=roots(p),
plot(r,'*','LineWidth',2)
end
plot(1,0,'o','LineWidth',2),grid on; hold off
Избежать подобных ошибок можно, переходя к символьным вы
числениям (для этого необходимо наличие тулбокса SYMBOLIC).
>> r=–ones(1,8); p=poly(r) % численное представление
% полинома
p = 1 8 28 56 70 56 28 8 1
>> P=poly2sym(p)
,% символьное представление
% полинома
P =x^8+8*x^7+28*x^6+56*x^5+70*x^4+56*x^3+28*x^2+8*x+1
>>R=solve(P)
; R' % решение уравнения
R'=[
1, 1, 1, 1, 1, 1, 1, 1] % найденные корни
Как видим, символьный решатель уравнений solve дал точный
ответ. К сожалению, его возможности ограничены только уравнени
ями, допускающими аналитическое решение.
Для того чтобы построить график полинома, надо предваритель
но вычислить его значения в точках заданного интервала. Для этой
цели служит функция polyval (сокращение от polynomial value). На
пример, чтобы построить график полинома
2
56yx x122
на интер
вале
55x12 2
следует набрать
>> x= 5:0.1:5; p=[1 5 6]; y=polyval(p, x); plot(x, y), grid.
В результате будет получен график, который пересекает ось абс
цисс в точках х
1
= –3, х
2
= –2 (это найденные выше корни полинома).
Для умножения полиномов предназначена функция conv (сокра
щение от convolution). Рассмотрим произведение двух квадратных
трехчленов:
22
12
432
12
32; 4 51;
41724132.
Px x P x x
PPP x x x x
122 1 22
131 2 2 2 2
() 0.Px 1
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »
