В. Матросов Основыработы
![]()
|
Дифференцирование и интегрирование Maple позволяет вычислять обыкновенные и частные производные аналитического выраже- ния по одной или нескольким переменным. Для этой процедуры предназначены команды 45 diff() и Diff() . Вторая команда является так называемой отложенной командой (inert command), которая не вычисляет производную от выражения, а просто отображает матема- тическую запись взятия производной. Результат действия отложенной команды можно при- своить переменной Maple, а в дальнейшем при помощи команды value() вычислить ре- зультат этой отложенной команды. Отложенная форма команды дифференцирования удобна, когда необходимо видеть, какие операции были сделаны для получения необходимого выра- жения. Кроме отложенной команды дифференцирования в Maple есть и еще ряд отложенных форм некоторых команд, полную информацию о которых можно получить в Справке. Синтаксис команды дифференцирования следующий: diff( выражение , переменная _1, переменная _2, ... , переменная _n); diff( выражение , [ переменная _1, переменная _2, ... , переменная _n]); В результате выполнения любой из приведенных команд будет вычислена частная производ- ная n -го порядка от заданного первым параметром выражения по заданным n переменным. При формировании производных высокого порядка полезен оператор последовательности $ , который позволяет проще и нагляднее задать производную. Например, для вычисления тре- тьей производной функции f x ( ) по переменной x можно использовать команду diff(f(x),x,x,x), в которой три раза указано дифференцирование по переменной x , или применить в команде дифференцирования оператор последовательности x$3 , что упро- щает и делает более наглядным задание третьей производной: diff(f(x),x$3) . Несколь- ко примеров использования команды дифференцирования приведены ниже: > f:=x^2*sin(x)+sqrt(y)*ln(cos(x)); f x x y x : sin( ) ln(cos( )) = + 2 > diff(f,x); 2 2 x x x x y x x sin( ) cos( ) sin( ) cos( ) + − > diff(f,x$2); 2 4 2 2 2 sin( ) cos( ) sin( ) sin( ) cos( ) x x x x x y y x x + − − − > diff(f,x,y); 46 − 1 2 sin( ) cos( ) x y x > fDerive:=Diff(f,x); fDerive x x x y x : ( sin( ) ln(cos( ))) = + ∂ ∂ 2 > g:=sqrt(fDerive); g x x x y x : ( sin( ) ln(cos( ))) = + ∂ ∂ 2 > value("); 2 2 x x x x y x x sin( ) cos( ) sin( ) cos( ) + − Последние три команды показывают использование отложенной формы команды дифферен- цирования. Интегрирование выражений по заданной переменной осуществляется командой int() , ко- торая также имеет отложенную форму Int() . Эта команда позволяет вычислять как не- определенный интеграл от выражения (при этом в ответе не будет никакой постоянной инте- грирования) с использованием следующего синтаксиса команды: int( выражение , переменная ); так и определенный интеграл с помощью следующего синтаксиса команды int( выражение , переменная =a..b); где a и b являются пределами интегрирования, причем эти пределы могут быть и аналитиче- скими выражениями. Несколько примеров использования команды интегрирования приведе- ны ниже: > f:=a*x^2*sin(b*x); f ax bx : sin( ) = 2 > int(f,x); ( cos( ) cos( ) sin( )) − + + b x bx bx bx bx a b 2 2 3 2 2 > int(f,x=0..1); 47 − − − − a b bx b b b b a b ( cos( ) cos( ) sin( )) 2 3 3 2 2 2 > int(f,x=0..a); − − − − a b a ab ab ab ab b a b ( cos( ) cos( ) sin( )) 2 2 3 3 2 2 2 > Int(f,x=0..Pi); a x bx dx 2 0 π ∫ sin( ) > value("); − − − − a b b b b b b a b ( cos( ) cos( ) sin( )) 2 2 3 3 2 2 2 π π π π π Для символьного вычисления определенного интеграла существуют две опции, управляю- щие обработкой разрывов подынтегральной функции. Эти опции задаются третьим парамет- ром в командах int() или Int() По умолчанию команда интегрирования проверяет выражение на непрерывность в области интегрирования и вычисляет интеграл как сумму отдельных определенных интегралов на промежутках непрерывности функции. Опция `continuous` отключает этот режим и вы- числяет интеграл как разность значений первообразной подынтегральной функции в точке начала и конца промежутка интегрирования. Еще одна опция `CauchyPrincipalValue` вычисляет несобственные интегралы первого и второго рода в смысле главного значения Коши. Если Maple не может найти замкнутую форму выражения для определенного интеграла, то команда интегрирования возвращает просто вызов самой себя (в области вывода печатается математическая запись вычисления интеграла, как при обращении к отложенной команде интегрирования). В подобных случаях можно вычислить значение определенного интеграла численным способом с помощью команды evalf() . Синтаксис подобной конструкции сле- дующий: evalf( int(f,x=a..b) ); evalf( Int(f,x=a..b) ); evalf( Int(f,x=a..b), digits, flag ); 48 Параметр digits позволяет задать число значащих цифр при вычислениях приближенного значения интеграла (по умолчанию это число равно числу значащих цифр, определенных значением системной константы Digits ). По умолчанию используется квадратурная формула Кленшо-Куртиса (Clenshaw-Curtis). Если в подынтегральном выражении встречается сингулярность, то применяется специальная ме- тодика символьного анализа для разрешения существующей сингулярности. Для задач с не- устранимыми сингулярностями используется адаптивный метод двойных экспоненциальных квадратур. Параметр flag позволяет явно задать метод численного интегрирования. Он может принимать следующие значения: Параметр flag Смысл _Ccquad применяется только квадратура Кленшо- Куртиса без вызова процедуры обработки сингулярности _Dexp применяется адаптивный метод двойных экспоненциальных квадратур _Ncrule применяется квадратурная формула Нью- тона-Котеса, являющийся методом фик- сированного порядка, и не эффективен для высоких точностей ( Digits > 15 ) Несколько примеров численного вычисления интегралов помогут освоиться с использовани- ем вышеприведенной методики: > int(sin(x)*ln(x),x=0..1); Ci( ) 1 − γ > evalf( int(sin(x)*ln(x),x=0..1) ); − .2398117420 > Int(sin(x)*ln(x),x=0..1)=evalf( Int(sin(x)*ln(x),x=0..1, 20, _Dexp ) ); sin( ) ln( ) x x dx 0 1 23981174200056319789 ∫ = − > Int(1/(1+x^2),x=0..infinity)= evalf( Int(1/(1+x^2),x=0..infinity, 30, _Dexp ) ); 49 1 1 1 57079632679489661923132169164 2 0 + = ∞ ∫ x dx > Int(exp(x-x^2/2)/(1+exp(x)/2),x=-infinity..infinity)= evalf(Int(exp(x-x^2/2)/(1+exp(x)/2),x=-infinity..infinity) ); e e x x x dx − −∞ ∞ + = ∫ 1 2 2 1 1 2 1 805577049 В заключение этого раздела отметим, что в системе Maple имеется набор команд для полного исследования функций: limit() – для отыскания предела функции, sum() – для нахожде- ния всевозможных конечных сумм, series() – для разложения функций в ряды Тейлора, Маклорена и Лорана, extrema() – для исследования экстремумов функций как одной, так многих переменных, minimize() и maximize() – для поиска минимума и максимума функции на заданном промежутке. Описание всех этих и других команд можно, естественно, найти в Справке Maple. Пакеты Пакеты в Maple используются для удобства организации работы пользователя. Пакет пред- ставляет собой набор команд для решения задач, относящихся к определенным разделам ма- тематики, или решения определенных задач графического представления информации, например, пакет finance служит для решения задач финансовой математики, в пакете stats собраны команды для статистической обработки результатов и т.д. Для того, чтобы использовать команды какого-нибудь пакета, необходимо подключить его, так как они все находятся не в ядре системы Maple, а в специальных файлах. Подключение пакетов осуществляется с помощью команды with( пакет ); где в качестве параметра указывается имя соответствующего пакета. Может оказаться, что подключаемый пакет содержит команду с таким же именем, что и в ранее подключенном па- кете. В этом случае в области вывода отображается сообщение о переопределении соответ- ствующей команды, и результат ее действия будет соответствовать команде, находящейся в последнем подключенном пакете. 50 Полный список и описание пакетов можно найти в справочной системе Maple, или выпол- нить команду ?index[package]; С пакетом графического вывода результатов ( plots ) мы познакомимся в разделе Графика, а пакеты финансовой математики ( finance ) и статистической обработки результатов ( stats ) будут описаны во второй части книги. Графика Системы аналитических вычислений привлекают исследователей не только своими возмож- ностями реализации алгоритмов построения аналитических решений, но и развитой графи- кой, начиная от построения простейших двумерных кривых и заканчивая сложными трех- мерными поверхностями и анимацией двумерных и трехмерных изображений. В любой мо- мент пользователь может отобразить результаты своих исследований в виде графических об- разов, которые, как известно, более информативны, чем скупые ряды цифр. (Хотя в некото- рых ситуациях цифра может оказаться более полезной, чем общая картина изменения какого- либо параметра.) Исходными данными для графических команд, объединенных в пакете plots , могут высту- пать как типы данных, поддерживаемые Maple (функции, массивы, множества, графические структуры), так и данные других программ и приложений, сохраненные в файлах текстового формата. Чтобы можно было использовать команды графического отображения этого пакета, необхо- димо подключить его с помощью оператора with(plots) Простейшая графическая команда plot() расположена в системной библиотеке Maple, и поэтому доступна в любое время. Именно с нее мы и начнем знакомство с графическими возможностями системы аналитических вычислений Maple. Команды двумерной графики Наиболее употребительной командой двумерной графики является многофункциональная команда plot() . Она позволяет рисовать график одной или нескольких функций одной пе- ременной, заданных в явном или параметрическом виде, а также отображать множество то- чек в декартовой или полярной системе координат. Синтаксис команды plot() следующий plot(f, h, v, опции ); 51 где f – функция, которую необходимо отобразить, h, v – соответственно диапазон измене- ния независимой переменной по горизонтальной оси графика и диапазон изменения значе- ния функции по вертикальной оси графика. Отметим, что диапазон изменения независимой переменной задается в виде x=a..b , где a и b наименьшее и наибольшее значение измене- ния переменной, а x имя независимой переменной. Если диапазон не задан, т.е. второй пара- метр представляет собой просто имя независимой переменной в функции, то по умолчанию принимается следующий интервал ее изменения -10..10. Этот параметр обязательно должен присутствовать при задании графика командой plot() . Вертикальный диапазон ограничи- вает вывод графика заданной областью изменения функции. Этот параметр необязателен, как и опции, задающиеся в виде уравнений имя _ опции = значение . При отсутствии явного за- дания опций принимаются значения опций по умолчанию. Опции задают вид отображаемого графика: толщину, цвет и тип линии графика, вид осей ко- ординат, размещение надписей и т.д. Набор возможных опций во всех командах двумерного графического вывода, за некоторым исключением, одинаков. Ниже перечислены все опции и соответствующие им значения (умалчиваемые значения подчеркнуты): • title=` строка ` – задает заголовок рисунка. По умолчанию заголовок не выво- дится. • coords=< значение > – по умолчанию при выводе как явно заданной функции, так и параметрически заданной функции используется декартовая система координат. Задание значения данной опции меняет тип системы координат. Возможные значения следующие: bipolar , cardiod , cassinian , elliptic , hyperbolic , invcassinian , invelliptic , logarithmic , logcosh , maxwell , parabolic , polar , rose и tangent , описание которых можно получить в справочной системе Maple с помощью команды ?coords . Здесь отметим только, что значение polar задает полярную систему координат. • axes=< значение > – определяет тип отображаемых осей координат. Эта опция мо- жет принимать следующие значения: normal - обычные оси координат; boxed - график заключен в прямоугольник с нанесенными шкалами по нижней и вертикальной левой гра- ням; frame - оси с точкой пересечения в левом нижнем углу рисунка; none - оси не отображаются. • scaling=< значение > – масштаб, в котором отображается график. Если значение этой опции равно constrained , то это соответствует заданию абсолютных значений по осям координат, т.е. одна единица измерения по оси независимой переменной равна одной еди- 52 нице измерения по оси значений функции. Умалчиваемое значение равно uncon- strained , и это соответствует тому, что оси растягиваются таким образом, чтобы их размеры соответствовали размерам графического окна вывода. • style=< значение > – задание отображения графика функции линиями (значение оп- ции равно line ) или точками (значение опции равно point ). Значения параметра patch и patchnogrid применяются только тогда, когда выводится замкнутый многоугольник. В этом случае его внутренняя область закрашивается цветом, установленным в опции color . Если в графическом выводе нет замкнутых многоугольников, то действие этих значений опции соответствуют значению line • numpoints=n – число вычисляемых точек, по которым строится график (значение по умолчанию равно 50 ) • resolution=n – горизонтальное разрешение дисплея в пикселях (значение по умолча- нию равно 200 ) • color=< значение > – задание цвета, которым отображается график. В качестве значе- ния этой опции может выступать одно из зарезервированных значений цвета в Maple: aquamarine , black , blue , navy , ral , cyan , brown , gold , green , gray , grey , khaki , magenta , maroon , orange , pink , plum , red , sienna , tan , turquoise , violet , wheat , white и yellow . Можно также определить и свой собственный цвет, соответствующий смешению заданных частей красного, зеленого и синего цветов. Это осуществляется с помощью следующей команды macro(palegreen=COLOR(RGB, .5607, .7372, .5607)), где palegreen имя константы нового цвета, в котором красный составляет 0.5607 части, зеленый - 0.7372 и синий - 0.5607. • font=< значение > – задание шрифта для вывода текста на рисунке. Значение опции задается в виде списка [ семейство , стиль , размер ] . Параметр семейство задает гарнитуру шрифта: TIMES , COURIER , HELVETICA или SYMBOL . Параметр стиль опре- деляет стиль шрифта: для гарнитуры TIMES возможные значения ROMAN , BOLD , ITALIC или BOLDITALIC , для гарнитур COURIER и HELVETICA стиль можно опустить, или за- дать BOLD , OBLIQUE или BOLDOBLIQUE , для шрифта SYMBOL стиль не задается. По- следний параметр размер задает размер шрифта в пунктах (один пункт приблизительно равен 1/72 дюйма). 53 • axesfont=< значение > – задание шрифта для надписей под засечками вдоль осей координат. Значение этой опции аналогично значению опции font • labelfont=< значение > – задание шрифта для названия осей координат. Значение этой опции аналогично значению опции font • titlefont=< значение > – задание шрифта для заголовка рисунка. Значение этой опции аналогично значению опции font • linestyle=n – задание типа линии графика. Значением этой опции является целое число n . При n=0 или 1 график отображается сплошной линией. Если значение больше 2 , то используются разнообразные шаблоны линий для вывода графика функции: штрихо- вые, с разной толщиной и т.д. • thickness=n – задание толщины линии графика, меняется от 0 до 15 , соответствуя изменению толщины линии от самой тонкой до самой жирной. • symbol=< значение > – задание типа символа, которым помечаются точки графика функции при style=point . Может принимать следующие значения: box для ‘’, cross для ‘+’, circle для ‘’, POINT (прописными буквами) для ‘’ (точка) и diamond для ‘’. • labels=[x,y] – задание названий осей координат. Параметры x и y задаются в виде строк и соответствуют отображаемым названиям горизонтальной и вертикальной осей. По умолчанию принимают значения имени независимой переменной и имени функции. • |