Тихон Тарнавский. Maxima. Алгебра и начала анализа // Maxima CAS Pg Тихон Тарнавский. Maxima. Алгебра и начала анализаВпервые было опубликовано в « » .Из встроенного функционала Maxima в первую очередь стоит обратить внимание на несколько групп функций: работу с пределами, дифференцирование, интегрирование, поиск решений уравненийPЂЂЂ как «просто», так и дифференциальных.«Предельничаем»ЂЂЂСобственно полноценных функций для нахождения предела существует в Maxima аж одна. Но зато какая! Она может принимать три различных варианта списка аргументов, и кроме того, на ее действие влияют еще и три флага. Но давайте по порядку. Зовут эту функции вполне соответственно ее действию: limit; и в самом стандартном варианте ее вызов выглядит как limit(выражение,Pпеременная,Pточка), то есть то, что в математической записи выглядит как limxЂЂЂaPf(x), в контексте Maxima запишется как limit(f(x),Px,Pa):Maxima может искать пределы не только в конечных точках, но и на бесконечности. Среди стандартных обозначений программы существуют универсальные названия для разных бесконечностей: плюс-бесконечность записывается через inf (от слова infinity, как нетрудно догадаться), минус-бесконечностьPЂЂЂ через minf (от minus infinity); для комплексных чисел бесконечность, как известно, одна, и она (комплексная бесконечность) обозначается полным словом infinity. При работе с пределами все три обозначения могут как использоваться при вводе, так и возникать в виде найденного значения предела; отдельно здесь надо отметить один момент касательно работы с интерфейсом к Maxima в редакторе TeXmacs: символы inf и minf при выводе здесь отображаются в своей традиционной математической нотации, то есть как ЂЂЂ и ЂЂЂЂЂЂ; символ вместо inf можно, кроме того, использовать еще и при вводе.Второй вариант вызова функции limit()PЂЂЂ это расширенная версия первого: limit(выражение,Pпеременная,Pточка,Pнаправление), для поиска односторонних пределов. Для предела справа в качестве «направления» указывается plus, для предела слеваPЂЂЂ minus:Пределы справа и слева еще иногда называют соответственно пределами сверху и снизу. Хотя правильнее в таком случае говорить полностью: «предел при x, стремящемся к a сверху», в том числе чтобы не создавать путаницы с верхним и нижним пределами, которые суть совершенно другое.Кроме упомянутых выше бесконечностей, на выходе возможно появление и еще двух обозначений, на случай, если заданный предел не существует: ind (от слова indefinitePЂЂЂ неопределенный) и und (от слова undefinedPЂЂЂ опять же неопределенный). В документации первое из этих обозначений описано как indefinite but bounded (не определен, но ограничен), что дает предположить, что функция, не имеющая предела, при этом ограничена либо в окрестности предельной точки, либо на всей прямой. Какое из этих предположений имелось в виду, мне так и не удалось понять, потому как на практике ни одно из них не соответствует действительности. Вывода ind мне не удалось добиться ни на одной функции, радикально отличающейся от «канонической» (в том смысле, что фигурирующей в стандартном примере из комплекта) функции sin(1/x).Здесь все правильно, tan(1/x) не ограничена в окрестности нуля. А вот дальше начинаются чудеса: Как видите, первая функция имеет конечные односторонние пределы в нуле, а вторая ограничена вообще на всей осиPЂЂЂ и тем не менееЂЂЂ Но это, думаю, не столь критично: главное, что наличие любого из этих символов в качестве вывода дает нам понять, что искомого предела не существует.Функция limit() в третьем вариантеPЂЂЂ limit(выражение)PЂЂЂ предназначена уже не для поиска собственно пределов, а для упрощения выражений, содержащих символы inf и minf:Выражения такого рода могут возникать, к примеру, при подстановках в формулы результатов вычисления каких-то других пределов или интегралов.Такая способностьPЂЂЂ принимать различные списки аргументовPЂЂЂ не является в Maxima чем-то особенным; она свойственна очень многим встроенным функциям, как и различное действие в зависимости от значений разнообразных переключателей. Это достаточно удобно: не нужно запоминать много разных имен функций (для поиска пределов, к примеру, используется исключительно функция limit); для вычисления производных, в том числе и частных,PЂЂЂ функция diff (с которой мы уже бегло ознакомились в первой статье и сейчас продолжим это знакомство); для нахождения интегралов, как определенных, так и неопределенныхPЂЂЂ функция integrate (с которой мы тоже сегодня познакомимся). Имена наиболее часто используемых функций запомнить несложно, а о дополнительных ключах или флагах, в случае чего, можно прочитать во встроенной справке, набрав ?Pимя-функции.Об этих самых ключах к функции limit и осталось рассказать. Первый ключ называется lhospitallim и задает максимальное количество применений правила Лопиталя; название ключа и происходит от фамилии ученого, давшей название самому правилу, которая в оригинале пишется как LЂЂЂHospital. Напомню, правило это гласит, что в случае неопределенности вида 0/0 или можно продифференцировать числитель и знаменательPЂЂЂ и предел от этого не изменится. Ограничитель количества применений этого правила нужен для того, чтобы избежать зацикливаний, которые могут случиться для бесконечно дифференцируемых функций, у которых в данной точке равны нулю либо бесконечности все производные. По умолчанию значение lhospitallim равно четырем, и мне не удалось сходу придумать пример, когда этого не хватаетPЂЂЂ ведь функция поиска предела использует не только правило Лопиталя, но и другие соотношения; и для всех заданных мною соотношений двух функций с корнями выше четвертого порядка в искомой точке предел был успешно найден и при умолчательном значении.Второй ключ к функции limitPЂЂЂ это флаг limsubst, который, будучи выставлен в true, позволяет этой функции производить подстановки внутрь неизвестных выражений. По умолчанию этот флаг равен false, что исключает ошибки вроде такой:И, наконец, последний дополнительный параметрPЂЂЂ еще один флаг, по имени tlimswitch. По умолчанию он тоже выключен, а если его включить, функция limit будет, при невозможности найти предел другими способами, пытаться его найти путем разложения подпредельной функции в ряд Тейлора в окрестности заданной точки: Но в случае поиска односторонних пределов, в тех точках, где они не равны между собой, то есть полного предела не существует, этим флагом нужно пользоваться с осторожностью: при его включении функция limit может вернуть в качестве полного предела один из односторонних: Реально у этой функции в точке ноль только предел справа равен единице; а предел слеваPЂЂЂ нулю.И последнее: почему я употребил в начале по отношению к функции limit() слово «полноценная». Потому что кроме нее существует еще одна «недофункция»PЂЂЂ tlimit(); она представляет собой фактически просто-напросто вызов самой функции limit() с поднятым флагом tlimswitch, то есть пытается при необходимости разложить «подпредельную» функцию в ряд Тейлора вне зависимости от реального значения этого флага. Другими словами вызов tlimit(аргументы) полностью аналогичен записи limit(аргументы), tlimswitch:true; только чуть короче. И аргументы она может принимать точно такие же.ЂЂЂдифференцируем и интегрируемО функции diff я кое-что уже рассказывал в первой статье, и здесь это «кое-что» только напомню. В двух упомянутых тогда вариантах вызова эта функция принимала один либо два аргумента. С двумя, diff(выражение,Pпеременная), она возвращает производную от «выражения» по заданной переменной; с одним, diff(выражение)PЂЂЂ полный дифференциал заданного выражения. Другими словами, запись diff(f,Px) равнозначна математическому обозначению df/dx, а diff(f)PЂЂЂ df.Но это еще не все. Кроме одного либо двух, эта функция может также принимать любое нечетное число агрументов вида diff(выражение,Pпеременная,Pпорядок,Pпеременная,Pпорядок,PЂЂЂ) и возвращает при этом производную либо смешанную частную производную от выражения заданных порядков по заданным переменным. К примеру, diff(f,Px,P3) означает d3f/dx3, а diff(f,Px,P1,Py,P2,Pz,P1)PЂЂЂ d4f/dxdy2dz. Единственный флаг, имеющий прямое отношение к самой функции diffPЂЂЂ это флаг derivabbrev, который влияет на отображение производных в ячейках вывода Maxima. По умолчанию он равен false, и производные обозначаются в виде дробей с буквой d; если же его выставить в true, производные будут отображаться в сокращенном виде, с пере
Комментариев нет:
Отправить комментарий