Дьяконов В. Maple 7 - Учебный курс (1185900), страница 57
Текст из файла (страница 57)
Порою упрощенное выражение скрывает его особенности, знание которых является желательным. Функция ехрапс( «расширяет» выражение ехрг и записывается в виде: ехрапс(ехрг, ехрг), ехрг2, . ехргп) где ехрг — расширяемое выражение, ехрг1, ехрг2, ..., ехргп — необязательные подвыражения — опции. Имеется также инертная форма данной функции — Ехрапс((ехрг). Кроме топь возможно применение операторной конструкции Ггопгепс((ехрапз, [ехрг3). Функция ехрапс( раскладывает рациональные выражения на простые дроби, полиномы на полиномиальные разложения, она способна раскрыть многие математические функции, такие как з(п, соз, 2ап, з1пЬ, созЬ, Сапй, с(ет, егй ехр, Гас2огаа!, ВАИИА, 1п, мах, впп, Рз(, Ьтпогйа!, зим, рго((исс, тпс, 1тжтт, Ьегпон111, еи1ег, аЬз, зтдпвм, росийавв)ег, ро1У1ой, Веззе1), Вевве1У, Веззе11, Возле!К, Апяег,), Веца, НапКе1, Ке!У1п, Фанторизации выражений 375 51гпче, ИеЬегЕ и функция р1есеытзе, С помощью дополнительных аргументов ехрг1, ехрг2, „., ехргп можно задать расширение отдельных фрагментов в ехрг.
Примеры применения функции ехрапо приведены ниже: > ехрапп((х+2)*(х+3)*(х+4)); х'+ 9 хт + 26 х + 24 > ехрапп(в1п(2*х)); 2 гйп(х) сов(х) > ехрапо(а!п(х+у)): а!п(х) сов(у) + сов(х) юп(у) > охрана([(а+Ь)*(а-Ь),тап(2*х)1); с 2 Ь2 1 — (ап(х) 3 > ехрапо((а+О)*(Ь+П)*(с+С)); а Ьс+аЬД+и Дс+аД~+ДЬ > ехрапо((х+1)*(У>1)); ху +х +у + 1 > ехрапп((У+1),(х+1)); у+1 > ехрапо((х+1)*(У>х)); ху+хх+у+а > ехрапс((х+1)*(У>х), х+1); (х е 1) у+ (х+ 1) а > Ггоптепп(ехрапа,[(а+Ь)"31): а'+3 а'Ь+ 3 а Ь'+ Ь' с + Дт Ь ч Дт с+ Дз Факторизация выражений Разложение целых и рациональных чисел 1(астог(п) или 1(ас(ог(п,ие(поп) где и — число, ае1Ьоо — параметр, задающий метод разложения. Другая биб- лиотечная функция, ) тас1огз(п), возвращает результат разложения в форме вло- женных списков: > 4(астог(123456789); (3)т (3803) (3607) > ттастог(30!); (2)та (3)м (3)т ( 7)4 (! ! )т (13)т (17) (19) (23) (29) Для разложения целых или рациональных чисел иа множители в виде простых чисел служит функция: 376 Урок 10.
Символьные (аналитические) операции > )тассог(121/201); 1 2)в (3)з (5)т (7) (13) (17) (19) > т'Гастог(100/76); (2) (5)т (3) (13) > геап) тЬ(мастогв): > (тастога(100/78); (1, ((2,1), (5,2), (3, -1), (13,-)Ш Разложение выражений (фанторизацил) Для алгебраических выражений функция факторизации записывается в вычис- ляемой и невычисляемой (инертной) формах; гас(ог(а) (ас(ог(а,К) Гас(ог(а) гас(ог(а.К) Гастог(а"2+2"а*Ь+Ь 2); (а+ Ь)~ > Гас(ос(а"2-2*а>Ь.Ь"2); а) — 2 а Ь вЂ” Ь 2 > р: ехрапе((х- 1)*(х.2)*(х-З)*(х.а)); р:= х — 1О х~ + 35 хт — 50 х+ 24 > гастог(р); (х — 1) (х — 2) (х -3) (х — 4) > тастог(х"5-2,2 (1/5)): (р5) 4 ) (п5) (нт) (х — 2 ) (х4+х) 2 .~.х) 2 > а1!ав(а)рпа-асото((х"2.2)); (х > Гастог(х"2.2,а)рпа): (х+ сс) (х — и) > тастог(х"З.У'3)( (х-у)(х +ху+у ) > (астог(х"З-У"З,(.2)"(1/2)); (х -у) (ах+ худ ) 2(х') „2""') Здесь а — полипом с несколы<пын переменными, К вЂ” необязательное алгебраическое расширение.
Для получения результата от инертной формы функции факторизации надо использовать функции вычисления еча1а илп еча!0К Главная цель факторизации — это нахождение максимального числа независимых сомножителей выражения, линейных по заданным переменным с коэффициентами наиболее простой формы. Ннжс представлены примеры применения функции 7асеог: Конпяеятоеанне по степенен 377 > Гастог(х"З.у 3.(.3)"(1(2)): 1 -(2х+у-у,~-З ) (2х+у+у /-3) (х — у) 4 > Гастог(х З.З,сонр1ех); (х + .7211247852 + !,249024766 7) (х + .721 ! 247В52 — 1.249024766 У) (х — 1.442249570) Комплектование по степеням Еще одна функция общего назначения — со11есс — служит для комплектования выражения ехрг по степеням указанного фрагмента х (в том числе множества либо списка).
Она задается в одной из следующих форм: со11ест(а. х) со11ес((а, х, (огн, (опс) Во второй форме этой функции дополнительно задаются параметры тога) (форма) и тнпс (функция или процедура). Параметр тога может иметь два значения: геспгз)че (рекурсивная форма) и 01з1г!Ьи1ео (дистрибутивная форма). Параметр топе позволяет задать имя функции, по которой будет идти комплектование ехрг, Примеры применения функции со11есС представлены ниже: > со1!ест(х+х"3-2*х,х); — х+х 3 > со1!ест(я+2*у"3>х+3+х"3*у,гесога(че.х); х(2 х + 2 у) + 3 + х' у ) > со11ест(х>2"у'3>я+3+я "3*уА(атг(ьнт(че, у); у(2х+2у + 3+хну) > т: а ехр(х)-ехр(х)*х-х; 7":= а е" — е" х — х > со11ест((,ехр(х)): (а — х) е' — х > д:-(пт(х*(ехр(х)+ехр(-х)),х); х 1 В:= е" х — е' — — „—— е" е" > со11есг(д,ехр(х)): -х — 1 (х-1) е*+— е' > р:-х>у+а*я>учу>х 2-а*у>х 2+х+а "х; р:=хуеахуеухт — аух +х+ах > со))есс(р,[х,у],геснга1че); (1 — а)ух +((1+а)у+1+а)х 378 урок 10.
Сииаольние (аналитические) операции > со11ест(р,[х.у),бзвтгзвитеб); (1 ч-а) х+(!+ а) ху+(1 — а)ухз > Г: а"3"х"2.х+а"3+а; 7:= а х - х + а + а > со11ест((.х); а х — х + а + а > со11ест(т.х,(астог): а хз - х + а (а + 1 ) р: У/х+2*в/х+х (1/3).У>х (1/3); у 2 (нз) (нзз р:= — + — +х -ух х х > со11ест(р,х)Г (из) у+2в (! -у)х + х Программирование символьных операций Реализация итераций Ньютона в символьном виде Найти достаточно простую и наглядную задачу, решение которой о~сутствуе~ в системе Мар!е 7, не очень просто.
Позтому для демонстрации решения задачи с применением аналитических методов воспользуемся примером, ставшим классическим, — реализуем итерационный метод Ньютона прп решении нелинейного уравнения вида /(х) = О. Как известно, метод Ньютона сводится к итерационным вычислениям по следующей формуле: х,, - х, + Г(х,)/Г(х,). Реализующая его процедура выглядит довольно просто; > гевтагс: и!. ргос(ехрг,х) 1оса1 (тег; (тег; х-ехрг/ПИт"(ехрг,х): цпарр1у((тег,х) епб: /з/1:= ргос (ехрг х) 1оса1 пег; /тег:= х — ехрг/й([[(ехрг, х); ппарр1у(нег, х ) еп([ ргос Для получения итерационной формулы в аналитическом виде здесь используется функция цпарр1у.
Теперь, если задать решаемое уравнение, то можно получить искомое аналитическое выражение; > ехрг; в1п(х)"2-0,5: ехрг:= взп(х) — .5 > г:М1(ехрг,х): 1 в!п(х)з —,5 зт;=х~х-- 2 в!п(х) сов(х) Програииирование сиивольних операций 379 Далее, задав начальное приближение для х в виде х = хм можно получить резуль- таты вычислений для ряда итераций.' > хО:=0.2; хО:= .2 хо 8 Оо хО:-Е(хО);оо: .хО:= 1382611210 хО:= .117460944 хО з> 2.206529505 хО:= 2.360830634 хО:= 2.356194357 хО:= 2.356194490 хО:= 2.356194490 хО:= 2.356!94490 Нетрудно заметить, что,испытав скачок в начале решения, значения х-довольно быстро сходятся к конечному результату, дающсл(у кор(нь заданной функции.
Последние три итерации дают одно и то же значение х. Заметим, что этот метод дает только одно решение, даже если корней несколько. Вычислить другис корпи в таком случае можно, изменив начальное условие. Можно попробовать с помощью полученной процедуры получить решенно и лля другой функции: > ехрг:=)п(х"2).0.5: ехрг:= 1п(х") — .5 > Г;-И1(ехрг.х); 1 )г; = х а х — — ( 1п(х ) — .5 ) х 2 > хО: 0.2; хО:= .2 > то 0 Оо хО>=8(хО);оси хО:= .5718875825 хО:= 1.034437603 хО;= 1.258023119 хО:= 1283760340 хО;= 1.284025389 хО;= 1,284025417 хО;= 1.284025416 хО:= 1,284025417 380 Урок 10, Символьные (аналитические) операции Здесь итерационная форыула имеет (и вполне естественно) уже другой вид, но сходимость к корню также обеспечивается за несколько итераций.
Возможна и иная форма задания итерационной процедуры с применением оператора дифференцирования 0 и заданием исходной функции также в виде процедуры; > И1г=ргос(ть:ргосеоиге) > (х.>х).еча)(т)/0(еча)(т)): > епсн М1:= ргос фргосег(иге) (х — ) х) — еча!Я!Р(еча!Я) епб ргос > О: х.>х"сов(х): азах — )х-сов(х) > 51> И1(О): х — ) х — сов(х) Я:= (х — ь х)— х — ~! + в!п(х) > ко:=0.1: хО:= .1 > то б Оо хо:=51(хО) оси хО:= .9137633858 хО г>.7446642419 хО:= .7390919660 хО:= .7390851333 хО:= .7390851332 хО:= .7390851332 Вообще говоря, в программных процедурах можно использовать любые операторы и функции, присущие Мар1е-языку, в том числе и те, которые реализуют символьные вычисления.
Это открывает широкий простор для разработки новых процедур и функций, обеспечивающих выполнение символьных операций. Вычисление интеграла по известной формуле рассмотрим следующий пример: > 1п((е"х"х*п,х)=опт(е х*х"п,х); е" х" с(х = -(-1) 1в(е) (х" (-1)" 1л(е)" л Г(л) ( — х!п(е)) -х" (-1)"!п(е)" е — х" (-1)"!п(е)" л (-х!п(е)) Г(л,-х 1п(е))) Прежние версии системы Мар1е не брали этот интеграл, поскольку он не имеет аналитического представления через обычные функции. Мар!е 7 блестяще вычисляет этот «крепкий орешек», но полученное выражение довольно сложно. Программирование символьных операций 381 Из математики известно, что такой интеграл может быть прелставлен в следую- щем виде: л 1 ~ лс» ! = 1 «'(, ( 1)л-(Х (=О 1 Используя эту формулу, мы можем создать простую процедуру для численного и аналитического вычисления данного интеграла: > 1птЕхрйопоипа1: =ргос( и:: а пугни пр, х:: папе) 1оса1 3: п!"ехр(х)*аои(((- 1)"(п-1)*х 1)Л 1,1 О..п)) епо; !л(ЕхрМопот(а(:= ргос (пкапугй(пе, хзпате) 1осв1 (; п!хехр(х)хаши((-1)"(и — ())о: ))(1, ! = 0 ..