Говорухин В., Цибулин Б. Компьютер в математическом исследовании (1185927), страница 15
Текст из файла (страница 15)
Для функции нескольких переменных параметр 1 является списком. Для разложения выражения ехрг в ряд Лорана можно использовать команду )ацгепС(ехрг, х-а, п) из пакета пцпгврргах с параметрами, которые аналогичны параметрам команды Сау1ог, Команда азул)рС(г,х,п) позволяет выписать асимптотическое разложение выражения г по степеням переменной х порядка п, когда х стремится к бесконечности. приближенные аналитические вычисления Результатом разложения выражения в ряд является переменная типа эег1 ез (формальное степенное разложение). Покажем это: > Г 5: ЫвУ1ог(1п(1>х).х,8); ух»х--х + — х --х +0(х ) 2 1 3 1 4 5 2 3 > ипвССуре(Г 5); ленах Для преобразования переменной зег типа зег1ез в алгебраическое выражение применяется команда сопчегС (зег,ро1упси) Для работы с формальными степенными разложениями существует пакет ров(лег)ез.
КОМаидм ЗтОГО ПаКЕта ПОЗВО(зяЮт ЗадаВатЬ раЗЛОжсиня КаК ПОСрЕдетВОМ РЕКуррЕНтг> 84 Глава а. Математический анализ в Мар(е иых формул (рсисгеасе), так и через обычные полииомы (роиро1у), а также проводить с ними различные операции. Для хранения разложений используется специальный формат, поэтому для просмотра их нужно переводить в обычные ряды при помощи команды (грзтогв)). Коротко опишем имеюшиеся в пакете команды.
Определяемым пользователем степенным разложениям присваивается имя, которое далее используется в аргументах следующих команд: вычисления суммы (ас)с)) и разности (зпь(гас1), умножения иа заданное выражение (п(311соп51), произведения (пк31 1! р1 у) и деления (доо1! епс), дифференцирования (роас(! ГГ) и интегрирования (ром! п1), вычисления экспоненты (рсиехр) и натурального логарифма (рси!од), вычисления мультипликативного (!пчегзе) и аддитивиого (педаг! че) обратных, композиции (сапрозе) и обратного к композиции разложения (, ечег' ! оп).
Имеется также аналог команды еча1 — команда еча1рси, позволяющая вычислять сложные выражения, в которых участвуют разложения и используются обычные знаки для сложения, вычитания и умножения, а также специальиые операции. Для решения линейного дифференциального уравнения в виде формального разложения применяется команда роизо1че. Приведем демонстрационный пример. Вначале подключим пакет и определим рекурреитно разложение функции 1п(1+х), которому будет присвоено имя й > изсп(роизегзез); рсисгеасе(((п)=а"и!и!); > ( 5г=тр510ге(т.х.5); 23:=!+ах+ — а х+ — а х+ — а х+0(х) 2 2 1 3 3 ! 4 4 3 2 а ' 24 Следующей командой найдем обратное разложение и умиожим его иа исходное выражение; > Г!пч:=зпчегзе(т): Срзтопв(т!пч.х,5): 2 2 1 3 3 1 4 4 5 1 — ах+-а х — — а х + — а х+О(х) 2 6 24 > р:-пи!С!р!у(тзпч,т): Срзтоги(р,х,35); 1+ Р( зз) Теперь продемоистрируем работу пакета иа примере построения формального разложения для решения дифференциального уравнения, Подробнее различные методы решения обыкновенных дифференциальных уравнений обсуждаются в соответствующей главе.
Обратим внимание, что при постановке начальных условий отсутствовало условие для второй и третьей производных и в ответе возникли коистаиты С2 и СЗ: > ед:-ситт(у(х).х$5)--у(х).у(0)-0,0(у)(0)--1; Эз е():44 — у(х) = -у(х), у(0) = О, ()(у)(0) = -1 ' Э,' > ч:-рочзо!че((ед.0(0(00)(у))))(0)-5)): Срзтопв(ч,х,т): — х+ — С2 х + — СЗ х + — х + — х + 0(х ) 1 2 1 з 5 4 1 4 2 6 24 720 Исследование, разложение и приближение функций 88 Аппроксимация функций При помощи Мар!е можно решать задачи приближения функций. Например, для разложения выражения ехрг в ряд по полиномам Чебышева относительно переменной х с точностью ере в пакете поп)арргох существует команда сиеЬузпеч(ехрг.х. ерз). В этом пакете имеется еще ряд команд для аппроксимации выражений рациональнымн полиномами; О снеЬрабе — вычисление аппроксимации и паде-аппроксимации при помощи полиномов Чебышева; О сопггасГогж — преобразование рациональной функции в цепную дробь; О Ьогпегтопп — преобразование полинома по схеме Горнера; О )пгпого — вычислениенормыА; О в)зп)виХ' — вычисление наилучшей минимаксной рациональной аппроксимации; О рабе — вычисление паде-аппроксимации; О генея — вычисление наилучшей минимаксной рациональной аппроксимации по алгоритму Ремеза.
Параметры команд для краткости мы опустили, но их легко посмотреть в справке Мар1е. Приведем примеры обращения к командам пакета, выбрав синус в качестве аппроксимируемой и оцениваемой функции. Вначале получим обычное разложение в ряд Лорана и превратим его в рациональную дробь: > изеи(пннарргох): > с:=)ангеле(юп(х),х): сопчегыс,гаеро1у); с гк х — -х + — к + 0(х ) 3 1 3 6 6 120 7 з — — к +х 60 1+ — х 20 Затем вычислим паде-аппроксимацию и преобразуем ее в цепную дробь: > р:-рабе(з(п(х).х.(4.4)): рс:-соптгастогн(р); 31 — — к ех 294 Р:= 3 з 11 4 1+ — х + — х 49 5880 620 11 14394 341 1647086 1 74369 30380 2399 к+ х 86 Глава 3.
Иачеиагичесхий ввалив в Иар1е Вычислим норму для синуса на заданном отрезке и найдем точку, в которой достигается максимум: > 1пгпога($1п,О.,Р1, "хвах"); хаах; 1.000000000 1.570796248 Проведем аналогичное вычисление для паде-аппроксимации синуса; при этом используем команду опарр)у для превращения выражения в функцию, так как команда 1пгпогв оценивает норму функции: > 1п(оопп(опарр)у(р,х),О.,Р1, "хаих"): плах; .9997177605 1.569270436 Далее обратимся к команде пп п1(пах для получения наилучшей аппроксимации синуса полнномом второй степени: > а1п1иах($1п(х),х-О..Р1,2): †.0280040553 + (1,273239545 †.4052847348 «) « Наконец, используем для аппроксимации полиномы Чебышева, причем для сокращения числа цифр уменьшим мантиссу: > 01911$:-5: сл;-спеораое($1п(х) .х,б); са:= .88010 Т(1, «) — .039127 Т(3, «) + .00049952 Т(5, «) Теперь сравним значения двух приближений с аппроксимируемой функцией в точке я/2, преобразовав выражения в функции и подключив пакет вычисления ортогональных полнномов: > 01911$:-10: (1:-опаРР)У(сл,х): (2:-опаРР)У(Р,х): и)СП(огслоро)у): > еча) Г((1(Р)/2)-$)п(Р1/2)): еча)Г(/2(Р1/2)-$1п(Р1/2)); ,001882256 -.0002834124 Дифференцирование и интегрирование Вычисление производной выражения ехрг по переменной х осуществляется при помощи команд ()1ГГ(ехрг.
х) или 01 ГГ(ехрг, х). Отметим, что эти команды могут использоваться и для вычисления частных производных функций многих переменных, в этом случае используется следующий формат: ШГГ(ехрг,х1$п1,х2$п2. .) Здесь ехрг — выражение, зависящее от переменных х1. х2, ..., а п1.
п2.... — по-, рядки дифференцирования по соответствующим переменным. Для команды 01 ГГ параметры аналогичны. Операция 01 ГГ используется и во многих других случаях (например, см. раздел «Обыкновенные дифференциальные уравнения» в главе 4 «Решение уравнеиийв Мар)е»). Приведем примеры: > 01/Г()п(1ап(х/2))/2-сов(х)/$1п(х)"2/2.х): дифференцирование и интегрирование 87 $-в1пр)1(у(ча1че(т)): > ч:-а"(х>у): б1(т(о,х); б1(т(ч,у); б1(т(ч.г); у!п(х) в х !п(в) ои .т у в > тастог(б!тт(ч,г$4)); он ху(ху — 3) (ху- )) (ху -2) Если правило дифференцирования функции пакету неизвестно или одна из переменных неявно зависит от другой, то в ответе будут сохраняться символы дифференцирования. Пример: > а11ав (у-у(х)): бт (1(х"2+у"2-0(х),Ю: Гд ) д 2х«2у~ — у)= — в(х) (дх )=д В Мар)е существует возможность определять с помощью своей процедуры (о процедурах см.
главу 7 «Программирование в Мар)е») правила дифференцирования для функций. Поясним эту возможность примером, в котором мы определим правило дифференцирования функции т: > "б)тГЧ(" :- ргос(р,х) щ ГГ(о.х)*т"(х) епб ргсс: б1тт(т(51п(х)),х): сов(х) т(х) Для задания дифференциальною оператора используется символ О. Чтобы преобразовать выражение с оператором 0 к виду, использующему команду б)тт, применяется команда сопчегС, Она же используется и для обратного преобразования, Поясним сказанное следующими примерами: > 0(в!и): 0(1п-агсв)п): сов > (:-б1(((у(х).хВУ): сопчегт(Г,0): дт — у(х) дх' (() )(у)(х) Операторное дифференцирование 0 применяется в тех случаях, когда ищется производная функции, а не выражения, и результатом действия оператора будет также функция.
Пример: ВВ Глава 3. Математический анализ в Мар(е > 9:=х->х 5!п(х); Х ! х > х 55п(х) > 90:=0(9); 9П(Р1): Хн) 'юх -+ 5!п(х) !. х с05(х) Аналогичного результата можно добиться при помощи команды опарр 1у(О! ГГ(9 (х), х), х). Для вычисления частных производных функции нескольких переменных используется обращение к оператору 0 с индексами, которые указывают, по какому аргументу дифференцировать. Например, вычисление оператора Лапласа ( функции )! будет выглядеть следующим образом: > П; (к У)->51п(к)*с05(у): (:"(0(1.
П>0(2.2))(п); 1.:=((х, у) -+ — Мп(х) соз(у)) + ((х, у) -+ — 5)п(х) соз(у)) Оператор 0 можно примеиять к любым Мар!е-процедурам (о процедурах ем. в главе 7 «Программироваиие в Мар)е>), например: > Гип:-ргос(х) зт х<О Феп 5!п(х) е)зе )п(х) епп !т; епп ргос! стип:=0((ип). н((нп:= ртос(х) 5Т х < 0 Цнеп соз(х) е)ае 1нх еп!) 1( еп!) рп5с Теперь перейдем к интегрированию функций. Для атой цели в пакете предусмотрено несколько команд, находящихся в различных библиотеках. В стандартной библиотеке находятся процедуры1пь(ехрг,раг) и 1П((ехрг,раг), которыевзависимости от параметров ра г могут использоваться для поиска неопределенных иитегралов, аналитического или численного вычисления определенных, собствениых и иесобственных интегралов.