И другие программы этой серии
Вычисление корней полинома
Приведенная ниже функция вычисляет корни (в том числе комплексные) для полинома вида c1sn + … + cns + cn+1.
• roots(c) – возвращает вектор-столбец, чьи элементы являются корнями полинома ñ.
Вектор-строка c содержит коэффициенты полинома, упорядоченные по убыванию степеней. Если ñ имеет n+1 компонентов, то полином, представленный этим вектором, имеет вид c1sn + … + cns + cn+1.
Вначале рассмотрим простой пример – решение полиномиального уравнения x2 – x – 1 = 0. Как известно, один из корней этой системы дает значение константы золотого сечения. Решение этого уравнения вполне очевидно:
>> p=[1 -1 -1]; >> roots(p) ans =
-0.6180 1.6180
Полезно отметить, что пакет символьных вычислений, который поставляется отдельно, дает это решение с помощью функции solve в более естественном виде:
>> solve(\'x^2-x-1=0\') ans =
1/2*5^(1/2)+1/2
1/2-1/2*5^(1/2)
Нетрудно убедиться, что и в этом случае корни уравнения соответствуют ранее найденным значениям:
>> 1/2*5^(1/2)+1/2 ans =
1.6180 >> 1/2-1/2*5^(1/2) ans =
-0.6180
Рассмотрим еще один пример решения полиномиального уравнения, дающий решение в виде комплексных чисел:
>> x=[7,45,12,23];d=roots(x) d =
-6.2382
-0.0952+0.7195i
-0.0952 –0.7195i A=[-6.2382 -0.0952+0.7195i -0.0952 –0.7195i];
B=Poly (A)
B=[1.0000 6.4286 1.7145 3.2859]
B*7 ans = 7.0000 45.0002 12.0015 23.0013
C погрешностью округления получен тот же вектор.
8.7.5. Вычисление производной полинома
Ниже приведена функция, возвращающая производную полинома ð:
• polyder(p) возвращает производную полинома p;
• polyder(a,b) возвращает производную от произведения полиномов a и b;
• [q,d] = polyder(b,a) возвращает числитель q и знаменатель d производной от отношения полиномов b/a. Примеры:
>> a=[3,5,8];b=[5,3,8];dp=polyder(a)
dp = 6 5
>> dt=polyder(a,b)
dt = 60 102 158 64
>> [q,p]=polyder(b,a)
q = 16 32 -16
p = 9 30 73 80 64
8.7.6.
Начало в части 1