Методическое пособие по изучению
математического пакета Maxima
Содержание
1. Введение
2. Установка и запуск программы
3. Описание интерфейса wxMaxima
4. Используемые обозначения для ввода команд
5. Решение задач элементарной математики
6. Решение задач линейной алгебры
7. Решение задач математического анализа
8. Решение обыкновенных дифференциальных уравнений
9. Задания для самостоятельной работы Введение Важное замечание: данное пособие разработано для Maxima 5.13 (RC2). В предыдущих версиях Maxima могут быть особенности записи выражений, отличные от указанных в данном пособии. Например, в предыдущих версиях Maxima названия встроенных функций были регистронезависимыми, а начиная с версии 5.11 это было изменено. Подробнее см. руководство пользователя для конкретной версии Maxima.
Maxima - программа для выполнения математических вычислений, символьных преобразований и построения графиков. С каждой новой версией в Maxima появляются новые функциональные возможности и виды решаемых задач.
Система аналитических вычислений Maxima идеально подходит как для изучения школьниками старших классов, так и студентами, его могут использовать профессиональные математики для проведения сложных расчетов и исследований.
Основными преимуществами программы являются:
возможность свободного использования (Maxima относится к классу • свободных программ и распространяется на основе лицензии GNU);
возможность функционирования под управлением различных ОС (в • частности Linux и Windows);
небольшой размер программы (дистрибутив занимает порядка • мегабайт, в установленном виде со всеми расширениями потребуется около 80 мегабайт);
широкий класс решаемых задач;
• возможность работы как в консольной версии программы, так и с • использованием одного из графических интерфейсов (xMaxima, wxMaxima или как плагин (plug-in) к редактору TexMacs);
расширение wxMaxima (входящее в комплект поставки) предоставляет • пользователю удобный и понятный интерфейс, избавляет от необходимости изучать особенности ввода команд для решения типовых задач;
интерфейс программы на русском языке;
• наличие справки и инструкций по работе с программой (русскоязычной • версии справки нет, но в сети Интернет присутствует большое количество статей с примерами использования Maxima);
Установка и запуск программы Скачать последнюю версию программы Вы можете с ее сайта в сети Интернет: http://maxima.sourceforge.net/. Русская локализация сайта:
http://maxima.sourceforge.net/ru/ Рассмотрим пример установки программы под управлением операционной системы Windows XP. Не забудьте, что для установки программ, Вам необходимы права Администратора, если Ваш компьютер подключен к сети или по каким-то причинам права вашей учетной записи ограничены.
Полученный файл, например maxima-5.12.99rc2.exe (размер файла около мегабайт), является исполняемым. Для начала установки программы достаточно нажать на него два раза мышкой.
Сразу появится окно выбора локализации (выбираем русский язык).
В следующем окне жмем «далее», внимательно читаем лицензионное соглашение, выбираем «я принимаю условия соглашения» и снова жмем «далее» (два раза).
Выбираем путь установки программы (можно оставить его без изменения).
Переходим к выбору устанавливаемых компонент. Из всего перечисленного для нас «лишними» являются Пакеты поддержки языков Maxima.
В следующих окнах нам будет предложено выбрать, куда помещать ярлыки для запуска программы (в меню «Пуск», на рабочий стол и т.д.).
Завершающим этапом будет окно с предложением начать установку. По окончании установки жмем «далее» и «завершить».
Интерфейс wxMaxima Для удобства работы сразу обратимся к графическому интерфейсу wxMaxima, т.к. он является наиболее дружественным для начинающих пользователей системы.
Достоинствами wxMaxima являются:
• возможность графического вывода формул Вывод формулы в xMaxima Вывод формулы в wxMaxima • упрощенный ввод наиболее часто используемых функций (через диалоговые окна), а не набор команд, как в классической Maxima.
• разделение окна ввода данных и области вывода результатов (в классической Maxima эти области объединены, и ввод команд происходит в единой рабочей области с полученными результатами).
Рассмотрим рабочее окно программы. Сверху вниз располагаются: текстовое меню программы – доступ к основным функциям и настройкам программы.
В текстовом меню wxMaxima находятся функции для решения большого количества типовых математических задач, разделенные по группам:
уравнения, алгебра, анализ, упростить, графики, численные вычисления.
Ввод команд через диалоговые окна упрощает работу с программой для новичков. Например, пункт меню Анализ/Интегрировать позволяет вычислить определенный или неопределенный интеграл:
После ввода необходимых параметров, в рабочем окне мы увидим команду и результат вычисления:
Ниже располагается графическое меню – наиболее часто используемые функции для работы с файлами: открыть / сохранить / печать данных, а также функции правки – копировать / удалить / вставить текст и другие, затем расположено окно вывода результатов расчетов, поле ввода команд и кнопки доступа к часто используемым функциям расчетов (упрощение выражения, раскрытие скобок, построение графика функции(ий) и др.).
При написании подпрограмм и длинных команд нажмите на кнопку (многострочный ввод), которая располагается слева от окна ввода команд.
При использовании интерфейса wxMaxima, Вы можете выделить в окне вывода результатов необходимую формулу и вызвав контекстное меню правой кнопкой мыши скопировать любую формулу в текстовом виде, в формате TEX или в виде графического изображения, для последующей вставки в какой-либо документ.
Также в контекстном меню, при выборе результата вычисления, Вам будет предложен ряд операций с выбранным выражением (например, упрощение, раскрытие скобок, интегрирование, дифференцирование и др.).
Ввод простейших команд в wxMaxima Все команды вводятся в поле ВВОД, разделителем команд является символ ;
(точка с запятой). После ввода команды необходимо нажать клавишу Enter для ее обработки и вывода результата. В ранних версиях Maxima и некоторых ее оболочках (например, xMaxima) наличие точки с запятой после каждой команды строго обязательно. Поэтому автор настоятельно рекомендует добавлять ; после каждой команды.
В случае, когда выражение надо отобразить, а не вычислить, перед ним необходимо поставить знак ‘ (одинарная кавычка). Но этот метод не работает, когда выражение имеет явное значение, например, выражение sin() заменяется на значение равное нулю.
Обозначение команд и результатов вычислений После ввода, каждой команде присваивается порядковый номер. На приведенном выше рисунке, введенные команды имеют номера 1-3 и обозначаются соответственно (%i1), (%i2), (%i3). Результат вычисления также имеет порядковый номер, например (%o1), (%o2) и т.д. Где “i” – сокращение от англ. input (ввод), а “o” – англ. output (вывод).
Этот механизм позволяет избежать в последующих вычисления повторения полной записи уже выполненных команды, например (%i1)+(%i2) будет означать добавление к выражению первой команды – выражения второй и последующего вычисления результата. Также можно использовать и номера результатов вычислений, например (%o1)*(%o2).
Для последней выполненной команды в Maxima есть специальное обозначение - %.
Пример: Вычислить значение производной функции в точке x=1.
Используемые обозначения для ввода команд Ввод числовой информации.
Правила ввода чисел в Maxima точно такие, как и для многих других подобных программ. Целая и дробная часть десятичных дробей разделяются символом точка. Перед отрицательными числами ставится знак минус.
Числитель и знаменатель обыкновенных дробей разделяется при помощи символа / (прямой слэш).
Обратите внимание, что если в результате выполнения операции получается некоторое символьное выражение, а необходимо получить конкретное числовое значение в виде десятичной дроби, то решить эту задачу позволит применение оператора numer. В частности он позволяет перейти от обыкновенных дробей к десятичным.
Арифметические операции Обозначение арифметических операций в Maxima ничем не отличается от классического представления: +, -, *, /. Возведение в степень можно обозначать несколькими способами: ^, ^^, **. Извлечение корня степени n записываем, как степень 1/n. Введем еще одну полезную операцию нахождение факториала числа. Эта операция обозначается восклицательным знаком, например 5!.
Для увеличения приоритета операции, как и в математике, используются круглые скобки: ().
Константы В Maxima для удобства вычислений есть ряд встроенных констант, самые распространенные из них показаны в следующей таблице:
Переменные Для хранения результатов промежуточных расчетов применяются переменные. Заметим, что при вводе названий переменных, функций и констант важен регистр букв, так переменные x и X это две разные переменные.
Присваивание значения переменной осуществляется с использованием символа: (двоеточие), например x:5.
Если необходимо удалить значение переменной (очистить ее), то применяется метод kill:
kill(x) – удалить значение переменной x;
kill(all) – удалить значения всех используемых ранее переменных.
Математические функции В Maxima имеется достаточно большой набор встроенных математических функций. Вот некоторые из них:
тригонометрические функции: sin (синус), cos (косинус), tan(тангенс), cot (котангенс);
обратные тригонометрические функции: asin (арксинус), acos (арккосинус), atan (арктангенс), acot (арккотангенс);
sec (секонс, sec x = 1/cos x), csc (косеконс, csc x = 1/sin x);
sinh (гиперболический синус), cosh (гиперболический косинус), tanh (гиперболический тангенс), coth (гиперболический котангенс), sech (гиперболический секанс), cosh (гиперболический косеканс);
log (натуральный логарифм);
sqrt (квадратный корень);
mod (остаток от деления);
abs (модуль);
min(x1,…,xn) и max(x1,…,xn) – нахождение минимального и максимального значения в списке аргументов;
sign (определяет знак аргумента: pos – положительный, neg – отрицательный, pnz – не определен, zero – значение равно нулю);
Правило записи функций Для записи функции необходимо указать ее название, а затем, в круглых скобках записать через запятую значения аргументов. Если значением аргумента является список, то он заключается в квадратные скобки, а элементы списка также разделяются запятыми.
Пример:
sin(x);
integrate(sin(x),x,-5,5);
plot2d([sin(x)+3,cos(x)],[x,-%pi,%pi],[y,-5,5]);
Пользовательские функции Пользователь может задать собственные функции. Для этого сначала указывается название функции, в скобках перечисляются названия аргументов, после знаков := (двоеточие и равно) следует описание функции.
После задания пользовательская функция вызывается точно так, как и встроенные функции Maxima.
Пример:
Нужно помнить, что не следует использовать для функций названия, зарезервированные для встроенных функций Maxima.
Перевод сложных выражений в линейную форму записи Одним из самых сложных занятий для начинающих пользователей системы Maxima является запись сложных выражений, содержащих степени, дроби и другие конструкции, в линейной форме (в текстовой форме записи, при помощи ASCII символов, в одну строку).
Для облегчения данного процесса можно дать несколько рекомендаций (основаны на многолетнем опыте преподавания Maxima студентам и школьникам):
• Не забывайте ставить знак умножения! В математике удвоенное значение переменной х может быть записано в виде 2x, но в Maxima это должно выглядеть как 2*x.
• В случае сомнения всегда лучше поставить «лишние», дополнительные скобки. Числитель и знаменатель выражения лучше всегда заключать в скобки. Также при возведении в степень выражение и степень лучше всегда брать в скобки.
Пример:
Математическая запись Линейная запись выражения • Функция не существует отдельно от своих аргументов (если таковые имеются). Поэтому, например, при возведении в степень, можно взять всю функцию с аргументами в скобки, а потом уже возводить полученную конструкцию в нужную степень: (sin(x))**2 Очень часто пользователи пытаются возвести в степень только название функции, забывая про аргументы: sin**2(x) – это не правильно!
• Также помните, что аргументы функции записываются в скобках, через запятую. Недопустима запись функции sin(2*x) в виде sin*2*x или sin2x. Сначала напишите название функции, затем поставьте после нее пустые скобки, и только потом, в этих скобках, напишите все ее аргументы, разделяя их запятыми. Никаких конструкций между названием функции и открывающейся скобкой быть не должно!
• В случае записи сложного выражения разбейте его на несколько простых составляющих, введите их по отдельности, а затем объедините, используя рассмотренные ранее обозначения введенных команд.
Пример:
Необходимо ввести следующее выражение:
Данное выражение можно разделить на 3 части, записать их по отдельности и затем соединив, используя результаты промежуточных расчетов Решение задач элементарной математики К таким задачам можно отнести вычисление и преобразование арифметических выражений, построение графиков функций, решение уравнений и систем алгебраических уравнений.
Рассмотрим ряд полезных функций:
assume - ввод ограничений и forget - снятие ограничений divide - нахождение частного и остатка от деления одного многочлена на другой Первый элемент полученного массива – частное, второй – остаток от деления.
factor - разложение на множители expand - раскрытие скобок gcd - наибольший общий делитель многочленов ratsimp – упрощение выражения partfrac – преобразовать в простые дроби по заданной переменной Пусть дано выражение trigsimp - тригонометрическое упрощение trigexpand (тригонометрическое раскрытие скобок) - использует формулы преобразования сумм двух углов для представления введенного выражения в как можно более простом виде – где в качестве аргумента только одна переменная trigreduce (приведение тригонометрическое) - преобразует тригонометрическое выражение к сумме элементов, каждый из которых содержит только sin или cos Нахождение корней уравнений и систем алгебраических уравнений solve - решение алгебраических уравнений и их систем (в качестве параметров в первых квадратных скобках указывается список уравнений через запятую, во-вторых - список переменных, через запятую) В случае множества решений у тригонометрических уравнений выдается соответствующее сообщение только и одно из решений Также Maxima позволяет находить комплексные корни Построение графиков функций В Maxima имеется несколько альтернативных библиотек для отображения графиков функций, наборов точек, трехмерных тел, градиентов и т.д.
Рассмотрим несколько примеров построения графиков. По умолчанию используется библиотека Plot, которая и будет рассмотрена ниже. Также для решения некоторых задач рекомендуется ознакомиться с возможностями библиотеки Draw (см. справочную систему Maxima).
Сразу стоит отметить, что при построении графика стоит обращать внимание на масштаб делений по осям. И, если, вместо ожидаемой окружности, мы увидим эллипс, то, скорее всего это произошло именно из-за несоответствия масштаба делений по осям.
Пример 1. Двумерный график. На графике показаны три зависимости.
График построен с использованием функции plot2d. Первый аргумент – список функций, второй и третий – ограничения по осям координат. Третий аргумент является необязательным. Если его не указать – он будет подобран автоматически.
Пример 2. Построение графиков функций, заданных параметрически.
Приведем пример построения графика функции с зависимостью, заданной параметрически:
(%i31) plot2d ([parametric, cos(t), sin(t), [t,-%pi,%pi], [nticks,80]], [x, -4/3, 4/3]);
Параметр nticks,80 указывает сколько опорных точек используется для построения графика. В данном примере, при значении 4 получим треугольник, при значении 5 – четырехугольник и т.д.
sin(t) Пример 3. Построение графиков функций в полярных координатах.
На первом этапе необходимо задать функцию для построения графиков в полярных координатах.
(%i11) plot_polar(expr,range):=block([theta_var: range[1]],plot2d( ['parametric,cos(theta_var)*expr, sin(theta_var)*expr,range,[nticks,80]])) Теперь для построения дуги необходимо ввести sin(t) Приведем еще один пример построения графика в полярных координатах. На этот раз для функции sin(t)+2*cos(2*t).
В результате получим следующее изображение:
sin(t)*(2*cos(2*t)+sin(t)) Пример 4. Построение графика по точкам.
Зададим координаты как два массива значений (в первом координаты х точек, во втором – координаты у):
и вызовем функцию построения графика:
В результате получим график функции, построенный по заданным координатам опорных точек.
discrete data Еще раз отметим опорные точки на осях координат (на этот раз укажем Maxima не соединять точки между собой):
discrete data Пример 5. Затабулировать функцию и построить ее график.
Сначала создадим список абцисс точек табуляции. Его можно задать как в виде функции (см. ниже), так и просто записав координаты в квадратных скобках, через запятую (как было рассмотрено ранее).
Затем задаем функцию и вызываем функцию построения графика.
discrete data Пример 6. Построение трехмерных графиков Для начала рассмотрим простой пример:
Пример 7. В следующем примере «трехмерность» заменена градиентным переходом цветов.
(%i40) plot3d (cos (-x^2 + y^3/4), [x, -4, 4], [y, -4, 4], [gnuplot_preamble, "set view map; unset surface"], [gnuplot_pm3d, true], [grid, 150, 150]);
Более подробно о построении графиков можно посмотреть в справочной системе Maxima.
Решение задач линейной алгебры В данном разделе будут рассмотрены основные операции с матрицами.
Для задания матрицы используется функция matrix:
Операции с матрицами Рассмотрим основные операции с матрицами на примере, для этого зададим две матрицы: x и y.
Поэлементное сложение, вычитание, умножение и деление матриц, возведение в степень.
Пример применения функции к матрице:
Умножение матриц Возведение в степень (в данном примере получается обратная матрица) Функции для работы с матрицами determinant – нахождение определителя матрицы:
eigenvalues – нахождение собственных значений матрицы:
invert – получение обратной матрицы:
minor – определяет минор матрицы. Первый аргумент – матрица, второй и третий – индексы строки и столбца соответственно:
rank – ранг матрицы:
submatrix – возвращает матрицу, полученную из исходной удалением соответствующих строк и (или) столбцов. В качестве параметров следуют номера удаляемых строк, исходная матрица, номера удаляемых столбцов.
transpose – транспонирование матрицы:
Решение задач математического анализа Нахождение производной Функция diff позволяет найти производные, как первого, так и более высоких порядков. При наличии у функции нескольких переменных можно найти частную производную по одной из них.
Синтаксис: diff(функция, переменная, порядок производной);
Пример: найти первую производную функции y(x)=ex/x2.
Сначала введем функцию: y(x):=exp(x)/x^2; (обратите внимание, что в отличие от присвоения значения переменной, здесь используется комбинация символов ":=" (двоеточие и равно)), а затем найдем ее производную по переменной х.
Для этого введем команду: diff(y(x),x,1); или diff(y(x),x);. В случае первой производной ее порядок можно не указывать.
При вычислении кратных производных по нескольким переменным после указания функции перечисляются переменные дифференцирования с указанием соответствующих кратностей, например, diff(x^8*y^5, x, 4, y, 2);
Интегрирование Для нахождения неопределенного интеграла в качестве аргументов указывается функция и переменная интегрирования.
Синтаксис: integrate(функция, переменная);
Пример: вычислить интеграл функции x2+5x+3 по переменной х.
При нахождении значения определенного интеграла помимо рассмотренных параметров указываются пределы интегрирования.
В качестве пределов интегрирования могут фигурировать бесконечность (inf) и минус бесконечность (minf).
Синтаксис: integrate(функция, переменная, левый предел, правый предел);
Пример: вычислить интеграл функции sin(x) по переменной х на отрезке от В случае, когда интеграл расходится Maxima выдает сообщение "Integral is divergent".
Например integrate(1/x, x, 0, inf); выдаст именно такое сообщение.
В некоторых случаях Maxima может попросить доопределить некоторую переменную, как в случае интегрирования функции xn:
Нахождение пределов Синтаксис: limit(функция, переменная, значение); или limit(функция, переменная, значение, слева/справа);
Предел слева обозначается minus, а справа - plus.
Пример 1:
Пример 2:
Разложение в ряд Тейлора Синтаксис: taylor(функция, x, a, n). Параметр n определяет, до какой степени (x-a) находить решение.
Пример: Разложить функцию sin(x)+ax+1 в ряд Тейлора по степеням x+1 до третьей степени.
Нахождение суммы ряда Синтаксис: sum(функция, переменная, индекс начального члена ряда, индекс конечного члена ряда).
Пример 1:
В данном примере числовой результат получается сразу после записи выражения.
Пример 2:
В данном примере необходимо упростить полученный результат, применив simpsum.
Решение обыкновенных дифференциальных уравнений Пример 1. Решение ОДУ первого порядка.
Записываем ОДУ, обращая внимание на одинарную кавычку (напомним, что она позволяет отображать, но не вычислять некоторое выражение). Затем применяем функцию ode2. Параметры: уравнение, зависимая переменная, независимая переменная. На завершающем этапе подставляем значение начального условия задачи: у()=0, для этого воспользуемся функцией ic (начальная задача для ОДУ первого порядка).
Пример 2. Решение ОДУ второго порядка.
Первые два этапа схожи с предыдущим примером.
Для подстановки начального условия используем функцию ic2 (начальное условие для ОДУ второго порядка) и сразу упрощаем полученный ответ при помощи уже рассмотренной функции ratsimp.
В случае граничной задачи применяется функция bc2 (в качестве параметров указываются значения функции в двух точках) Пример 3. Решить задачу Коши для дифф. уравнения второго порядка:
на отрезке [1,3], при начальных условиях y’(1)=1, y(1)=1.
На первом этапе записываем дифф. уравнение и решаем его при помощи функции ode2.
Задаем начальные условия.
Ответ построим в виде графика функции на отрезке [1,3] 25*%e^(6*log(x)/5)/28-x^4/56+1/ Пример 4. Нахождение числового значения ОДУ методом Рунге-Кутта 4-го порядка.
Решить численно ОДУ для t от 0 до 8 с шагом 0.1, при х=1 в т. t=0.
Подключаем необходимую библиотеку:
Вызываем метод Рунге-Кутта 4-го порядка, результат заносим в переменную sol.
Отобразим полученный результат графически. Подключаем графическую библиотеку и вызываем метод draw2d, для отображения полученного решения.
Решить численно систему ОДУ для t от 0 до 4, при x=-1.25 и y=0.75 в т. t=0:
Подключаем необходимую библиотеку:
Вызываем метод Рунге-Кутта 4-го порядка, результат заносим в переменную sol.
Подключаем графическую библиотеку и вызываем метод draw3d, для отображения полученного решения.
-0. -0. -0. -0. Задачи для самостоятельной работы Для самопроверки рекомендуется использовать задачи из Сборника типовых расчетов по курсу высшей математики. Учебное пособие. /Под ред. В.Б. Миносцева, –М:
МГИУ, 2004. –582с.
1. Задачи элементарной математики.
Упростить алгебраическое выражение.
№ Алгебраическое выражение Раскройте скобки и приведите подобные слагаемые.
№ Алгебраическое выражение Разложите алгебраическое выражение на множители.
№ Алгебраическое выражение Разложите рациональную дробь на простейшие дроби.
№ Алгебраическое выражение Построить графики предложенных многочленов y = f n (x) и найти все корни уравнения f n ( x) = 0.
Уравнение для многочленов y = f n (x) Графически исследовать решение нелинейных уравнений и для каждого корня получить решение.
2. Задачи линейной алгебры.
Выполнить свой вариант типового задания по линейной алгебре из сборника типовых расчетов.
3. Задачи математического анализа.
Выполнить свой вариант типового задания по пределам функций числовых и последовательностей из сборника типовых расчетов.
Выполнить свой вариант типового задания по дифференцированию функции одной переменной из сборника типовых расчетов.
Выполнить свой вариант типового задания по интегралам из сборника типовых расчетов.
4. Решение обыкновенных дифференциальных уравнений.
Решить задачу Коши методом Рунге-Кутта четвертого порядка точности для приведенных ниже уравнений и начальных данных. Ответ представить графически.
Решить задачу Коши.