8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
Раздел: Документация

0 ... 86 87 88 89 90 91 92 ... 177

является то, что коэффициенты располагаются в векторе сверху вниз соответственно увеличению степеней членов полинома, к которым они относятся. То есть первым сверху нужно поместить коэффициент при х° (свободный член), нижним — коэффициент при х". где п — порядок полинома. Ответ выдается в виде вектора, содержащего как действительные, так и комплексные корни.

Пример 8.17. Поиск корней полинома посредством численного метода

Пусть стоит задача найти корки уравнении следующего вида

X + X + х+ 1 = 1

Решение: составляем вектор коэффициентов и используем функцию polyroots.

koef :=

1

О

I

polyroots(koei) =

( -1.466 1 О

0.233- 0.793i 1,0.233+ 0..793iy

Переписывать коэффициенты из выражения в вектор не очень интересное и приятное занятие, тем более что при этом очень легко либо допустить ошибку в самом числе, либо просто пе]>епутать знаки. Для решения этой проблемы нужно использовать специальный оператор coeffs, расположенный на панели Symbolic (Символьные). Причем полином может быть представлен в неразвернуто ft форме: к стандартному виду оператор coeffs приведет его автоматически (см. пример 8.18).

Пример 8.18. Использование оператора coeffs Пусть нам необходимо решить уравнение следующего вида:

(х2 + х+ l)2+(x-l)3 + (x+ l)4 = 0

Решение; используем функцию poly roots, вектор коэффициентов для которой создаем с помощью оператора coeffs.

9

✓\21л

koefs

/2 * Y34

с=1х+x+ll+(х-1) +(х+1) coeffs,х

7

polyroots(koefs) *

( -2.981 > -0.2+ 1.1691 -0.2- 1.1691 V -0.119 ,

Найти корни полинома с использованием polyroots можно с помощью двух методов: Лагтера (LaGuerre) и сопровождающей матрицы (Companion matrix). Поменять используемый метод можно в контекстном меню функции polyroots (вызывается щелчком правой кнопкой мыши). По умолчанию выбран метод Лагтера. Нетрудно проверить, что оба метода очень точны - однако точность метода сопровождающей матрицы зачастую все-таки несколько выше. Однако функцией polyroots по умолчанию все же используется метод Лагтера, так как он более стабилен.

Точность работы функции polyroots не зависит от ТТЛ. — она всегда максимальна.


Пример 8.19. Проверка точности функции polyroots

Попробуем применить функцию polyroots к полиному, корим которого известны. Это даст воз-

можность оценить величину погрешности.

koefeHx- 1)(х-4)(х+ 45).(х-2)-0+ Ю01)

expand ,х

coeffs.x

f-ЗбОЗбОЛ 622262 -300679 37737

LaGxicrra

р о I у го о ls(koefi) -

г-юоЛ

-45 I

2

, 4

-1.478 k 10

Л2\

3.243x 10

t.483 хЮ

-1 595 х Ю

г11

13

13

1!

к-2.479*10 J

1039 1

Companion Matrix

f

Л oof)

polyrootstkciels)-

4?

1 2

ч 4

2.002* 10

-1.421* 10

г-14

-3.109x 10

2.665* 10 0

г15

15

Функция polyroots способна находить корни полиномов от 2 до 99 степени. В общем случае, чем выше степень полинома, тем с меньшей точностью будут найдены корни.

Объективно говоря, чаше всего использовать функцию polyroots для поиска корней полинома не совсем технично. На практике лучше всегда применять оператор solve, так как при атом для полиномов невысокой степени ответ может быть получен в более информативном и точном символьном виде. Если же символьный ответ будет слишком громоздок, его всегда можно пересчитать в-числа с плавающей точкой посредством оператора float с той точностью, с которой необходимо. Однако важно понимать, что если степень полинома превышает четыре, то для поиска его корней оператор solve также будет использовать приближенный метод (скорее всего, тот же, что применяет функция polyroots). При этом заметное различие между использованием оператора solve и функции polyroots исчезнет (но в случае solve ответ будет на пять порядков точнее, так как символьный процессор использует не связанную с аппаратным уровнем арифметику длинных мантисс).

Численные методы, используемые функцией polyroots, очень своеобразны. Поэтому стоит с ними познакомиться. Начнем мы с метода Лаггера.

Метод Лаггера - это самый стабильный нз известных методов определения корней полинома. Наверное, единственный его недостаток, это то, Что он требует использования арифметики комплексных чисел, даже если все корни полинома действительны. Впрочем, так как Mathcad поддерживает комплексные числа, даже этот недостаток исчезает. Метод Лаггера требует начальное приближение к корню, однако в подавляющем большинстве случаев не имеет значения, что это будет за приближение (именно поэтому функция polyroots принимает только один параметр). В случае действительных корней метод сходится к решению, какое бы число ни было взято в качестве приближения. Крайне редко проблемы со сходимостью возникают, если у полинома


есть комплексные корни. В атом случае нужно просто сменить неудачное приближение.

Скорость сходимости метода Лагтера к корню весьма высока. Так, она почти в два раза выше скорости сходимости метода секущих и в пол гора раза выше скорости сходимости метола Мюллера,

Метод Лагтера основывается на нескольких фактах. Основной из них - любой полином можно представить в виде произведения линейных множителей. Этот факт вытекает из фундаментальной теоремы алгебры, утверждающей, что у полинома степени N будет N корней.

Рп(х) = ап.х%ап„1-хпЧ + . ..+ a1x+a0 = (x-x1)(x-x2)-.„.(x-xn l)(x-xn)

Логарифмируя разложенный на множители полином, а затем дифференцируя полученную функцию, обнаружим следующие важные связи:

d i / м 111 dx n

dxx-X[ x-x2x~xn PnW

Взятие второй производной от логарифмированного полинома дает следующие соотношения:

н=--4Чрп«)И

Рп(х) dx

Pn(x)

—2Pn(x) dx

Pn(x)

Базируясь на данных формулах, Лагтер сделал предположение, которое иа первый взгляд может показаться просто безумным. Тем не менее оно работает. Лаггер предложил считать, что первый корень располагается на расстоянии а от текущего приближения х, в то время как все остальные корни располагаются от него на одинаковом расстоянии Ь. С учетом этих допущений выражения для G и Н существенно упростятся:

„ I п-1

G= - +-

в b

Данную систему уравнений довольно просто решить относительно а:

п

а =

G ± J (п - 1) (пН-С2)

Полученное уравнение является основным уравнением метода Лагтера. Выбор знака перед дискриминантом должен быть осуществлен таким образом, чтобы величина знаменателя была максимальной.

Поиск корня исходя из уравнения Лагтера - это итеративный процесс То есть на основании начального приближения \ находится поправка а„. Следующее приближение определяется как хх-а,,. Подстановка х, в уравнение Лагтера дает вторую поправку а., на основании которой находится третье приближение х,. Этот процесс продолжается до тех пор, пока не выполнятся условия сходимости к корню. Эти условия те же, что и для других численных методов решения уравнений: I f(xn)l <T0L и (или) xn-xi> 1 <Т01



0 ... 86 87 88 89 90 91 92 ... 177