Система компьютерной математики Maxima для решения математических задач
Порядок установки системы компьютерной математики Maxima. Интерфейс основного окна программы, работа с ячейками и со справочной системой программы, ее графические возможности. Алгоритмы решения различных задач в системе Maxima, ее функции и команды.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 12.01.2011 |
Размер файла | 4,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Размещено на http://www.allbest.ru/
Глава 1. Основы работы в системе компьютерной математики MAXIMA
§1. О системе Maxima
В рамках проекта создания искусственного интеллекта в 1967 году в Массачусетском технологическом институте была инициирована разработка первой системы компьютерной алгебры Macsyma. Программа в течение многих лет использовалась и развивалась в университетах Северной Америки, где появилось множество вариантов системы. Maxima является одним из таких вариантов, созданным профессором Вильямом Шелтером (William Schelter) в 1982 году. В 1998 году он получил официальное разрешение Министерства энергетики США на выпуск Maxima под лицензией GPL. А начиная с 2001 года Maxima развивается как свободный международный проект, базирующийся на Source Forge [2].
В настоящее время Maxima -- это система компьютерной математики, которая предназначена для выполнения математических расчетов (как в символьном, так и в численном виде) таких как:
- упрощение выражений;
- графическая визуализация вычислений;
- решение уравнений и их систем;
- решение обыкновенных дифференциальных уравнений и их систем;
- решение задач линейной алгебры;
- решение задач дифференциального и интегрального исчисления;
- решение задач теории чисел и комбинаторных уравнений и др.
В системе имеется большое количество встроенных команд и функций, а также возможность создавать новые функции пользователя. Система имеет свой собственный язык. Она также имеет встроенный язык программирования высокого уровня, что говорит о возможности решения новых задач и возможности создания отдельных модулей и подключения их к системе для решения определенного круга задач.
1.1 Установка Maxima на персональный компьютер
Свободно распространяемую версию дистрибутива Maxima, документацию на английском языке, типы и виды интерфейсов системы можно посмотреть и скачать с сайта программы http://maxima.sourceforge.net. На период написания пособия последняя версия дистрибутива -- Maxima 5.18.1.
Сама Maxima -- консольная программа и все математические формулы «отрисовывает» обычными текстовыми символами.
Система является многоплатформенной, имеет небольшой размер дистрибутива (~21,5 Мб), легко устанавливается, имеет несколько графических русифицированных интерфейсов: xMaxima, wxMaxima, TexMacs.
Наиболее дружественным, простым и удобным в работе графическим интерфейсом в настоящее время является интерфейс wxMaximа. Поэтому в дальнейшем буду использовать именно этот интерфейс.
Установка Maxima под управлением Windows
Полученный после скачивания файл, например maxima-5.18.1.exe (размер файла около 21,5 мегабайт), является исполняемым. Для начала установки программы достаточно нажать на него два раза левой кнопкой мыши. Сразу появится окно выбора локализации (выбираем русский язык).
В следующем окне выбираем «Далее», внимательно читаем лицензионное соглашение, выбираем «я принимаю условия соглашения» и снова выбираем «Далее» (два раза).
В появившемся окне выбираем путь установки программы (можно оставить его без изменения).
Переходим к выбору устанавливаемых компонент. Из всего перечисленного для нас «лишними» являются Пакеты поддержки языков Maxima.
При установке желательно установить и графический интерфейс xMaxima, поскольку на нем базируется интерфейс wxMaxima и при решении некоторых задач он необходим, например, при выполнении графических построений.
В следующих окнах предлагается выбрать место размещения ярлыка для запуска программы (в меню «Пуск», на рабочий стол и т.д.). Завершающим этапом будет окно с предложением начать установку. По окончании установки выбираем «Далее» и «Завершить».
Таким образом, установка программы закончена.
Установка Maxima под управлением Linux
Maxima входит в состав многих дистрибутивов Linux, например, таких как AltLinux, Mandriva, Ubuntu, Fedora и др. В некоторых случаях может понадобиться доустановка с репозитория дистрибутива с помощью систем yum или synaptic.
Для установки в других дистрибутивах Linux необходимо использовать подходящий пакет системы Maxima, который можно скачать с сайта http://maxima.sourceforge.net.
Теперь можно приступать к работе с системой.
Курсовая работа ориентирована на работу с системой Maxima, установленную под управлением Linux. Заметим, что все рассматриваемые команды активны и в системе, установленной под управлением Windows.
Для начала познакомимся с интерфейсом основного окна программы.
1.2 Интерфейс основного окна Maxima
После запуска системы Maxima 5.18.1 с графическим интерфейсом wxMaximа появляется рабочее окно программы (Рис. 1).
Рис. 1. Вид рабочего окна системы Maxima
Структура окна, как видно из рисунка, имеет стандартный вид:
- строка заголовка, в которой располагается название программы и информация о том, сохранен ли рабочий документ (если документ сохранен, то прописывается его имя);
- панель меню программы - доступ к основным функциям и настройкам программы. В ней находятся функции для решения большого количества типовых математических задач, разделенные по группам: уравнения, алгебра, анализ, упростить, графики, численные вычисления. Заметим, что ввод команд через диалоговые окна упрощает работу с программой для начинающих пользователей;
- панель инструментов -- на ней находятся кнопки для создания нового документа, быстрого сохранения документа, вызова окна справки, создания ячеек ввода, прерывания вычислений, кнопки для работы с буфером обмена и др.;
- рабочая область -- непосредственно сам документ, в котором формируются ячейки ввода и выводятся результаты выполненных команд;
- полосы прокрутки;
- панель с кнопками -- набор кнопок для быстрого вызова некоторых команд: упростить, решить уравнение или систему, построить график и др.;
- строка состояния.
В системе Maxima команда -- это любая комбинация математических выражений и встроенных функций. Каждая команда завершается символом «;», причем в случае его отсутствия система сама добавит этот символ.
§2. Основные элементы системы MAXIMA
2.1 Работа с ячейками в Maxima
После того, как система загрузилась, можно приступать к вычислениям. Для этого следует добавить так называемую ячейку ввода, в которую вводится команда системе выполнить какое-либо действие.
Систему можно использовать в качестве мощного калькулятора для нахождения значений числовых выражений. Например, для того, чтобы найти значение произведения 120 и 1243, надо:
на панели инструментов нажать кнопку Insert input cell (или нажать на клавиатуре клавишу Enter). В результате в рабочей области будет сформирована ячейка ввода (Рис.2).
Рис.2. Формирование новой ячейки ввода
далее с клавиатуры вводим команду: 120*1243 и нажимаем комбинацию клавиш Ctrl+Enter (Рис.3).
Рис.3. Выполнение вычислений в системе Maxima
Таким образом, в документе были сформированы две строки: (%i1) -- ячейка ввода и для нее (%о1) -- ячейка вывода. Каждая ячейка имеет свою метку -- заключенное в скобки имя ячейки. Ячейки, в которых размещаются входные данные (формулы, команды, выражения) называют ячейками ввода. Они обозначаются %iChislo, где Chislo -- номер ячейки ввода (i -- сокращенно от английского слова input -- ввод). Ячейки, в которых размещаются выходные данные (списки значений, выражения) называют ячейками вывода. Они обозначаются %oChislo, где Chislo -- номер ячейки вывода (о -- сокращенно от английского слова output -- вывод).
Почему же имена ячеек начинаются с символа %? Разработчики системы Maxima посчитали удобным начинать имена всех встроенных служебных имен: констант, переменных, зарезервированных слов, с этого символа. Сделано это для того, чтобы избежать возможных накладок с пользовательскими именами.
В системе Maxima предусмотрена возможность ввода сразу нескольких команд в одной строке. Для этого одна команда от другой отделяется символом «;». При этом формируется одна строка ввода и столько строк вывода, сколько команд было задано.
Для обозначения конца ввода команды можно вместо точки с запятой использовать знак $. Это бывает удобно в том случае, если вывод результата вычисления на экран не нужен; тогда его можно «заглушить». Заглушенный результат при этом все равно будет вычисляться. Например,
Как видим, были записаны три команды в одной ячейке ввода и сформирована одна ячейка вывода. Здесь же была использована команда присваивания значений переменным a и b. Она задается в виде:
имя_переменной: значение
Имена функций и переменных в системе Maxima чувствительны к регистру, то есть прописные и строчные буквы в них различаются.
Задание команды в ячейке ввода и формирование ячейки вывода при нажатии комбинации клавиш Ctrl+Enter, называют отдельной сессией работы с системой Maxima.
Рассмотрим основные приемы работы с отдельными сессиями работы в Maxima.
1. Задание команды для выполнения математических расчетов. Как уже понятно, для задания команды системе нужно в строке ввода задать само выражение и оценить его, закончив ввод нажатием комбинации клавиш Ctrl+Enter. В результате образуется ячейка ввода и соответствующая ей ячейка вывода.
2. Сворачивание и разворачивание отдельных сессий.
Если мы наведем курсор мыши на левый верхний угол квадратной скобки и нажмем левую кнопку мыши, то произойдет сворачивание части документа, относящейся к этой команде (Рис.4).
Рис.4. Вид свернутой ячейки
Повторный щелчок мыши вернет ячейку в начальное состояние.
3. Добавление ячеек в документ.
При работе с системой можно столкнуться с трудностью добавления команд в заданное место документа. Остановимся на этом подробнее. Например, у нас имеются две ячейки ввода (Рис. 5).
Рис.5. Ячейки в документе, между которыми требуется вставить дополнительно ячейку
Для добавления новой ячейки между ячейками (%i2) и (%i3) щелкнем левой кнопкой мыши между ячейками так, чтобы появилась горизонтальная черта. После чего нажимаем на клавиатуре клавишу Enter. Ячейка ввода добавлена (Рис.6).
Рис.6. Добавление новой ячейки ввода
4. Переоценить значение отдельно взятой ячейки .
Если нужно переоценить значение введенного выражения (или выражения после внесенных в него исправлений), то для этого достаточно установить курсор в ячейке ввода и нажать комбинацию клавиш Ctrl+Enter.
5. Переоценить ячейки всего документа в целом .
Особенностью графического интерфейса системы wxMaxima является то, что при открытии ранее сохраненного документа в рабочем окне выводятся только команды, все же ячейки с результатами не отображаются. Для их вывода можно воспользоваться командой Evaluate all cells пункта меню Правка.
6. Удалить ячейки ввода из документа. Для удаления ячейки необходимо ее выделить и, например, нажать на клавиатуре клавишу Delete.
В системе Maxima можно добавлять в документ текстовые комментарии (Рис.7). Для этого выбираем пункт меню Правка^Cell^New Text Cell (или клавиша F6), после чего с клавиатуры набираем текст.
Рис.7. Вид текстовой ячейки в системе Maxima
Кроме того, в документе для оформления текста можно применять различные стили (Рис.8). Для этого можно воспользоваться пунктом меню Правка^Cell^New Section Cell (или Ctrl+F6), или Правка^Cell^New Title Cell (или Ctrl+Shift+F 6).
Рис.8. Стили оформления текстовых ячеек
Сохранение документа выполняется обычным способом с использованием пункта меню Файл.
С помощью кнопки Настроить wxMaxima на панели инструментов (или пункт меню Правка^Настройка) можно изменять конфигурацию графического интерфейса системы, применяемую по умолчанию. После нажатия на кнопке появляется окно с настройками, которое имеет две вкладки: Параметры и Стиль. На вкладке Параметры можно выбрать язык, вид панели инструментов и ряд дополнительных опций: проверять баланс скобок в тексте, копировать в буфер при выделении и др. На вкладке Стиль можно выбрать применяемый по умолчанию шрифт и его размер, а также стиль оформления (цвет и начертание) различных данных, используемых в документе: переменных, констант, чисел, имен функций и др.
2.2 Работа со справочной системой Maxima
В системе Maxima встроена справочная система на английском языке. Она включает в себя документацию по организации работы в системе, а также информацию по встроенным командам системы с большим количеством примеров их использования для решения математических задач.
Работать со справочной системой можно несколькими способами.
Первый -- вызов примеров использования команды по имени. Для этого выбираем пункт меню Помощъ^-Examples. В диалоговое окно вводим имя команды, например, desolve (Рис.9).
Рис.9. Вызов команды из справки по имени
После нажатия на кнопке Ok в документе формируется ячейка ввода и ниже пример использования введенной команды для решения конкретной задачи. Заметим, что команда desolve используется для нахождения решения задачи Коши для обыкновенных дифференциальных уравнений и их систем. Подробнее эта команда рассматривается во второй главе пособия.
Второй способ -- вызов документации по Maxima (Рис.10). В этом случае требуется выбрать пункт меню Правка^ЫахШа help (или клавиша F1). Откроется окно справочной системы.
Осуществлять поиск интересующих команд можно на закладке Содержание по разделам, например, работа с выражениями, многочленами, построение графиков функций и др., можно осуществлять поиск по имени команды на закладке Указатель или Поиск. Например, найдем информацию о функции sin. Для этого перейдем на закладку Указатель, в текстовое поле введем sin и сразу же у нас появится список, в котором содержится эта функция (Рис.11). Остается только открыть в правом окне справку по функции sin.
Рис.11. Работа с указателем в окне справочной системы
2.3 Функции и команды системы Maxima
В системе Maxima имеется множество встроенных функций. Как было показано выше, для каждой встроенной функции можно получить описание в документации, содержащейся в справочной системе. Вызвать справку можно с помощью функциональной клавиши F1. Также в Maxima есть специальная функция, которая выдает информацию из документации по конкретным словам. Сокращенная версия вызова этой функции: ?? name (Рис.12). Здесь ?? -- это имя оператора, и аргумент нужно отделять от него пробелом. Оператор ?? выдает список тех разделов помощи и имен функций, которые содержат заданный текст, после чего предлагают ввести номер того раздела или описания той функции, которые требуется посмотреть:
Рис.12. Вызов справки по интересующей команде системы Maxima
Заметим, что в системе Maxima нет четкого разграничения между операторами и функциями. Более того, каждый оператор -- это на самом деле функция.
Все функции и операторы Maxima работают не только с действительными, но и комплексными числами. Сами комплексные числа записываются в алгебраической форме, с мнимой единицей, обозначенной через %i; то есть в виде a+b*%i, где а и b -- соответственно действительная и мнимая части числа.
Рассмотрим синтаксис базовых функций системы Maxima.
1. Арифметические операторы: + , -, *, /, ^. Пример:
3. Логические операторы: and, or, not. Пример:
4. Функция нахождения факториала числа: !
Факториал задан в наиболее общем виде и представляет собой, по сути, гамма-функцию (точнее, x! = gamma(x+1)), то есть определен на множестве всех комплексных чисел, кроме отрицательных целых. Факториал от натурального числа (и нуля) автоматически упрощается до натурального же числа.
Пример:
5. Функция нахождения полуфакториала чила: !! (произведение всех четных (для четного операнда) или нечетных чисел, меньших либо равных данному).
Пример:
6. Функция отрицания синтаксического равенства: # Запись a#b эквивалентна not a=b. Пример:
7. Функция нахождения модуля числа х: abs(x) Модуль определен для всех комплексных чисел. Пример:
8. Функция, возвращающая знак числа х: signum(x)
Пример:
9. Функции, возвращающие наибольшее и наименьшее значения из заданных действительных чисел: max(x1,...,xn) и min(x1,...,xn).
Пример:
10. Некоторые встроенные математические функции:
sqrt (x) |
Квадратный корень из x |
|
acos (x) |
Арккосинус аргумента х |
|
acosh (x) |
Гиперболический арккосинус аргумента х |
|
acot (x) |
Арккотангенс аргумента х |
|
acoth (x) |
Гиперболический арккотангенс аргумента х |
|
acsc (x) |
Арккосеканс аргумента х |
|
acsch (x) |
Гиперболический арккосеканс аргумента х |
|
asec (x) |
Арксеканс аргумента х |
|
asech (x) |
Гиперболический арксеканс аргумента х |
|
asin (x) |
Арксинус аргумента х |
|
asinh (x) |
Гиперболический арксинус аргумента х |
|
atan (x) |
Арктангенс аргумента х |
|
atanh (x) |
Гиперболический арктангенс аргумента х |
|
cosh (x) |
Гиперболический косинус аргумента х |
|
coth (x) |
Гиперболический котангенс аргумента х |
|
csc (x) |
Косеканс аргумента х |
|
csch (x) |
Гиперболический косеканс аргумента х |
|
sec (x) |
Секанс аргумента х |
|
sech (x) |
Гиперболический секанс аргумента х |
|
sin (x) |
Синус аргумента х |
|
sinh (x) |
Гиперболический синус аргумента х |
|
tan (x) |
Тангенс аргумента х |
|
tanh (x) |
Гиперболический тангенс аргумента х |
|
log (x) |
Натуральный логарифм х |
|
exp (x) |
Экспонента х |
В языке системы Maxima заложены основные исполнимые операторы, которые есть в любом языке программирования. Рассмотрим их.
Операторы присваивания значений (именования выражений).
1. Оператор «:» (оператор задания значения переменной).
2.Оператор «:=» (оператор задания функции пользователя).
3.Расширенные варианты операторов присваивания и задания функции, обозначаемые соответственно через :: и ::=.
Использование оператора задания функции пользователя значительно облегчает работу с ней, поскольку к ней можно обращаться по имени и легко и удобно вычислять значения функции в заданных точках.
Пример: найдем значение функции f (x,y)=cosx + siny в точке
Оператор цикла
Оператор цикла может задаваться несколькими способами. Способ задания зависит от того, известно ли заранее сколько раз необходимо выполнить тело цикла.
Пример: задание цикла для вывода значений переменной а в диапазоне от -3 до 10 с шагом 5:
Следующей важной возможностью системы Maxima является работа со списками и массивами.
Для формирования списков используется команда makelist. Например, с помощью команды
мы сформировали список с именем x, состоящий из десяти элементов, значения которых находятся по формуле .
Для формирования массивов используется команда array. Например с помощью команды,
мы сформировали двумерный массив A, состоящий из 10 строк и 5 столбцов. Для заполнения массива элементами воспользуемся циклом с параметром. Например,
Для вывода элементов массива на экран можно воспользоваться командой:
Массив можно формировать и без предварительного объявления. В следующем примере мы сформировали одномерный массив x, состоящий из 5 элементов, значения которых вычисляются по формуле x(i)=sini
Неудобство работы с массивами заключается в том, что вывод значений элементов массива осуществляется в столбец. Гораздо удобнее, если значения массива (двумерного) выводятся в виде матрицы. Для этих целей можно воспользоваться командой genmatrix. Например, для формирования двумерного массива (матрицы) следует задать команду в следующем виде:
Выведем полученный массив:
2.4 Простейшие преобразования выражений
По умолчанию в системе Maxima является активной функция автоупрощения, т.е. система старается упростить вводимое выражение сама без какой-либо команды.
Пример. Пусть требуется найти значение следующего числового выражения:
Зададим выражение по правилам языка системы Maxima.
Как видим, система в ответ вывела значение выражения, хотя мы не задали никакой команды.
Как же заставить систему вывести не результат, а само выражение? Для этого функцию упрощения надо отключить с помощью команды simp: false$. Тогда получим:
Для того чтобы активировать функцию упрощения, надо задать команду simp:true$. Функция автоупрощения может работать как с числовыми, так и с некоторыми не числовыми выражениями. Например,
При вводе мы можем обращаться к любой из предыдущих ячеек по ее имени, подставляя его в любые выражения. Кроме того, последняя ячейка вывода обозначается через %, а последняя ячейка ввода -- через _. Это позволяет обращаться к последнему результату, не отвлекаясь на то, каков его номер. Но такими обращениями к ячейкам злоупотреблять не надо, поскольку при переоценивании всего документа или его отдельных ячеек ввода может произойти разногласие между номерами ячеек.
Пример. Найти значение выражения и увеличить полученный результат в 5 раз.
Желательно вместо имен ячеек использовать переменные и присваивать их имена любым выражениям. В этом случае в виде значения переменной может выступать любое математическое выражение.
Значения имен переменных сохраняются на протяжении всей работы с документом. Напомним, что если необходимо снять определение с переменной, то это можно сделать с помощью функции kill(name), где name -- имя уничтожаемого выражения; причем это может быть как имя, назначенное вами, так и любая ячейка ввода или вывода. Точно так же можно очистить всю память и освободить все имена, введя команду kill(all) (или выбрать меню Махта->Очиститъ память (Clear Memory)). В этом случае очистятся в том числе и все ячейки ввода-вывода, и их нумерация опять начнется с единицы.
Функция автоупрощения далеко не всегда способна упростить выражение. В дополнение к ней имеется целый ряд команд, которые предназначены для работы с выражениями: рациональными и иррациональными. Рассмотрим некоторые из них.
rat (выражение) -- преобразовывает рациональное выражение к канонической форме: раскрывает все скобки, затем приводит все к общему знаменателю, суммирует и сокращает; приводит все числа в конечной десятичной записи к рациональным. Каноническая форма автоматически «отменяется» в случае любых преобразований, не являющихся рациональными
ratsimp (выражение) -- упрощает выражение за счет рациональных преобразований. Работает в том числе и «вглубь», то есть иррациональные части выражения не рассматриваются как атомарные, а упрощаются, в том числе, и все рациональные элементы внутри них
fullratsimp(выражение) -- функция упрощения рационального выражения методом последовательного применения к переданному выражению функции ratsimp(). За счет этого функция работает несколько медленнее, чем ratsimp(), зато дает более надежный результат.
expand (выражение) -- раскрывает скобки в выражении на всех уровнях вложенности. В отличии от функции ratexpand(), не приводит дроби-слагаемые к общему знаменателю.
radcan(выражение) -- функция упрощения логарифмических, экспоненциальных функций и степенных с нецелыми рациональными показателями, то есть корней (радикалов).
Часто при попытке упрощения выражения в Maxima может происходить на самом деле только его усложнение. Увеличение результата может происходить из-за того, что неизвестно, какие значения могут принимать переменные, входящие в выражение. Чтобы этого избежать, следует накладывать ограничения на значения, которые может принимать переменная. Делается это с помощью функции assume(условие). Поэтому в некоторых случаях наилучшего результата можно добиться, комбинируя radcan() с ratsimp() или fullratsimp().
2.5 Решение алгебраических уравнений и их систем
В система Maxima для решения линейных и нелинейных уравнений используется встроенная функция solve, имеющая следующий синтаксис:
solve (expr, x) - решает алгебраическое уравнение expr относительно переменной x
solve (expr) - решает алгебраическое уравнение expr относительно неизвестной переменной, входящей в уравнение.
Например, решим линейное уравнение 5x + 8 = 0 . Для этого воспользуемся кнопкой Решить на панели инструментов, при нажатии на которую появляется диалоговое окно Решить (Рис.13). Вводим исходное уравнение и нажимаем OK.
Рис. 13. Диалоговое окно для решения уравнений
В результате в рабочем документе сформируется команда для решения уравнения и выведется найденное решение:
Команду для решения уравнений можно задавать таким образом, чтобы можно было легко выполнять проверку найденных решений. Для этого целесообразно воспользоваться командой подстановки ev.
Например, решим алгебраическое уравнение x3 + 1 = 0 и выполним проверку найденных решений.
В результате получили три корня. Под именем resh у нас хранится список значений -- корней уравнения. Элементы списка заключены в квадратные скобки и отделены один от другого запятой. К каждому такому элементу списка можно обратиться по его номеру. Воспользуемся этим при проверке решений: подставим поочередно каждый из корней в исходное уравнение. (1+2х)5=13,5(1+х5)
С помощью команды allroots (expr) можно найти все приближенные решения алгебраического уравнения. Данную команду можно использовать в том случае, если команда solve не смогла найти решение уравнения или решение получается слишком громоздким, как, например, для следующего уравнения: (1+2х)5=13,5(1+х5).
(%i8) eq: (1+2*x)^3=13.5*(1+х^5) ;
0. 9 65 9 62515219 64 %i - 0. 40695 972319241 , х=-0. 9 6596251521964
С помощью команды solve можно находить решение систем линейных алгебраических уравнений. Например, система линейных уравнений
1.Сохраним каждое из уравнений системы под именами eql, eq2, eq3, eq4, eq5.
2.Находим решение системы.
3.Выполним проверку найденного решения:
Таким образом, при подстановке полученного решения в каждое из уравнений системы получены верные равенства.
Функция solve системы Maxima может решать и системы линейных уравнений в случае, если решение не единственно. Тогда она прибегает к обозначениям вида %r_number чтобы показать, что неизвестная переменная является свободной и может принимать любые значения.
Для решения систем нелинейных уравнений можно воспользоваться командой algsys. Например, найдем решение системы уравнений
Воспользуемся пунктом меню Уравнениям-Solve algebraic system.
В диалоговом окне вводим количество уравнений системы: 2.
В следующем диалоговом окне вводим сами уравнения и искомые переменные (рис.14).
Рис. 14. Ввод системы уравнений
После нажатия на кнопку OK получим решения:
§3. Графические возможности
Графические возможности в Maxima реализованы посредством внешних программ. По умолчанию, построением графиков в Maxima занимается программа Gnuplot и разрабатываемый вместе с Maxima и идущий в ее же пакете Openmath.
Рассмотрим обзорно некоторые возможности системы для графической визуализации данных.
Для построения графиков на плоскости можно использовать команду plot2d: plot2d(выражение, [символ, начало, конец]), где выражение задает функцию, график которой нужно построить, символ -- неизвестное, входящее в выражение, начало и конец задают отрезок оси Х для построения графика, участок по оси Y выбирается автоматически, исходя из минимума и максимума функции на заданном промежутке. После вызова функции plot2d открывается окно Gnuplot graph с выполненным построением. График можно только масштабировать за счет изменения размеров окна. Также можно просмотреть координаты какой-либо точки графика функции. Чтобы построить в одной плоскости одновременно два графика (или больше), в функции plot2d следует вместо отдельного выражения указать их список.
C помощью команды plot2d можно строить графики параметрически заданных функций. Для этого используется список с ключевым словом parametric:
plot2d([parametric, x-выражение, y-выражение, [переменная, начало, конец], [nticks, количество]]).
Здесь x-выражение и y-выражение задают зависимость координат от параметра, то есть это две функции вида x(t), y(t), где t -- переменная параметризации. Эта же переменная прописывается в следующем списке, параметры начало, конец задают отрезок, в пределах которого этот параметр будет изменяться. Последний аргумент-список, с ключевым словом nticks, задает количество точек, на которые будет разбит интервал изменения параметра при построении графика.
Кроме parametric, функция plot2d может выполнять построение графиков дискретных множеств (конечных наборов точек):
plot2d([discrete, x-список, y-список]) и plot2d([discrete, [x, у]-список]).
Для выполнения построений дополнительно в системе Maxima есть пакет Draw (загружается пакет с помощью команды load(draw)), в который, в частности, входит функция:
draw2d (опции, explicit(имя_функции, независимая_переменная, min, max), опции) -- функция, предназначенная для построения графиков на плоскости с применением большого количества дополнительных опций:
- xrange, yrange -- установлены по умолчанию -- определяют промежуток изменения значений переменной по осям Ox и Oy. В случае необходимости, можно изменять значений вручную. Например, xrange=[-2, 3];
- grid -- в случае, если grid=true, на координатной плоскости выводятся линии сетки;
- title -- позволяет выводить заголовок к графику функции. Например, title = "Exponential function";
- xlabel, ylabel -- позволяют выводить подписи к осям. Например, ylabel = "Population";
- xtics, ytics -- позволяют устанавливать цену деления по осям Ox и Oy, с которой будут наноситься метки на оси. Имеет значение по умолчанию, однако их действием можно управлять вручную. Например, можно задать, чтобы метки по оси Ox наносились на промежутке от -3 до 3 с шагом 0,2: xtics= [ -3, 0.2, 3]. Также можно указать, в каком виде выводить подписи к осям (см. пример 6);
- xaxis, yaxis -- в случае, если значения этих опций равны true, координатные оси выводятся на экран;
- xaxis_width, yaxis_width -- ширина координатных осей (по умолчанию ширина равна 1). Для изменения толщины оси необходимо изменить значение по умолчанию вручную, например, xaxis_width=3;
- xaxis_type, yaxis_type -- стиль линии осей Ox и Oy. Допустимые значения: solid и dots;
- xaxis_color, yaxis_color -- цвет координатных осей (по умолчанию -- черный). Для изменения цвета оси необходимо изменить значение опции вручную, например, xaxis_color = red;
- color -- позволяет изменять цвет графика. Например, color=»red» (задается до слова explicit);
- line_width - позволяет изменять толщину линии графика функции (значение по умолчанию -- 1);
- line_type -- позволяет изменять стиль линии графика функции. Допустимые значения: solid и dots и др.
В системе Maxima есть возможность выполнять построение различных графических примитивов, например:
polygon ([[x1,y1], [x2,y2],...]) -- построение замкнутой ломаной линии, соединяющей точки с координатами [x1,y1], [x2,y2], ... С помощью опции fill_color можно заливать фигуру выбранным цветом;
points ([[x1,y1], [x2,y2],...]) -- построение точек с координатами [x1,y1], [x2,y2], ... Опция point_type позволяет выбрать стиль точки, например, окружность: point_type= circle Опция point_size позволяет установить размер точки, например, point_size = 3. Опция key позволяет выполнять подписи к точкам;
rectangle ([x1,y1], [x2,y2]) -- построение прямоугольника, где [x1,y1], [x2,y2] -- координаты противолежащих углов;
bars ([x1,h1,w1], [x2,h2,w2, ...]) -- построение столбиковых диаграмм. Здесь x1, x2, ... - точки, относительно которых центрируется столбик, h1, h2, ... - высота столбиков, w1, w2, ... - ширина столбиков;
ellipse (xc, yc, a, b, ang1, ang2) -- построение эллипса с центром в точке (xc, yc).
В системе Maxima есть встроенная функция для построения графиков функций, заданных неявно. Ее синтаксис: implicit_plot (expr, x_range, y_range) implicit_plot ([expr_1, ..., expr_n], x_range, y_range)
где expr - уравнение, задающее неявную функцию, x_range и y_range - промежутки изменения переменных x и y.
Для того, чтобы можно было использовать функцию implicit_plot, необходимо подключить пакет, содержащий эту функцию, с помощью команды load(implicit_plot).
Кроме того, в системе Maxima можно воспользоваться встроенными функциями для построения графиков в различных системах координат. Например, функция
polar (radius, ang, minang, maxang)
выполняет построение графика функции radius(ang), заданной в полярной системе координат, аргумента ang, меняющего значения от minang до maxang. Приведем несколько примеров. Пример 1. Построить график функции y=x cos x .
1 способ. В ячейке ввода задаем команду: plot2d(x*cos(x),[x, -10, 10]). После нажатия клавиш Ctrl+Enter формируется ячейка ввода в документе
и открывается окно программы Gnuplot graph с графиком функции:
2 способ. В нижней панели инструментов выбираем кнопку График2d, появляется диалоговое окно, в котором предлагается ввести выражение для графика функции, пределы изменения переменной по оси X и Y, количество точек графика, выбрать формат для построения графика функции, задать, в случае необходимости, дополнительные опции. Заметим, что здесь также можно, нажав на кнопку Дополнительно, задать функцию в параметрическом виде и дискретную функцию. Например, для построения графика функции y=x cosx выберем следующие параметры:
При нажатии на кнопку Ok получим тот же график. Таким образом, можно выбирать наиболее удобный способ построения графиков функций на плоскости.
Для построения графиков поверхностей и кривых в пространстве предназначена функция plot3d. Функция plot3d имеет два варианта вызова: один для явного задания функции и один для параметрического. В обоих случаях функция принимает три аргумента.
Синтаксис для явно заданной функции: plot3d(выражение, [переменная1, начало, конец], [переменная2, начало, конец]);
аргументы аналогичны plot2d, с той разницей, что здесь независимых переменных две.
График параметрически заданной функции строится так:
plot3d([выражение1, выражение2, выражение3|, [переменная1, начало, конец], [переменная2, начало, конец]);
где выражения соответствуют, по порядку, x(u, v), y(u, v), z(u, v).
Функция plot3d имеет ряд опций. Опция grid применима к трехмерным графикам вместо опции nticks, используемой для двумерных. Она задается в виде двух целых значений, которые для поверхностей задают размер ячеек сетки, в виде которой отображается поверхность; первое число -- вдоль оси X, второе -- вдоль оси Y; либо, в случае параметрического задания, по первому и по второму параметру соответственно. Для кривых из этих параметров действует только один, но писать нужно опять же оба.
Опция, задающая формат вывода результата -- plot_format. Формат может принимать одно из четырех значений, первое из которых действует по умолчанию: gnuplot, openmath и встроенный. В умолчательном варианте (значение gnuplot) данные для отображения передаются напрямую программе gnuplot, которая сама по себе имеет достаточно гибкое управление, и параметры ей можно передавать прямо из Maxima с помощью дополнительных опций функций plot2d/3d. Gnuplot генерирует статичное изображение, mgnuplot и openmath позволяют в реальном времени масштабировать и передвигать картинку, plot3d -- еще и вращать линию или поверхность в разные стороны в пространстве.
Openmath предоставляет хорошую интерактивность: после того, как объект сгенерирован, его можно масштабировать и динамично вращать, разглядывая со всех сторон.
Опция преобразования системы координат transform_xy (по умолчанию она равна false).
Передавать ей нужно выражение, сгенерированное функцией make_transform([x, y, z], f1(x, y, z), f2(x, y, z), f3(x, y, z)). Кроме того, существует одно встроенное преобразование, известное как polar_xy и соответствующее make_transform([r, th, z], r*cos(th), r*sin(th), z), то есть переходу к полярной цилиндрической системе координат.
Для построения 3D графика функции в сферической системе координат используется функция
spherical (radius, azi, minazi, maxazi, zen, minzen, maxzen) где функция radius(azi, zen) задается в сферических координатах.
Для построения 3D графика функции в цилиндрической системе координат используется функция
cylindrical (radius,z,minz,maxz,azi,minazi,maxazi)
где функция radius(z, azi) задается в цилиндрических координатах.
Пример 1. Построить график поверхности z=6x2+7y3 .
График поверхности можно вращать, удерживая левую кнопку мыши. Можно выполнить построение поверхности в виде каркаса.
Результат выполнения будет один и тот же.
Пример 2. Построить лист Мебиуса
u(x ,y) = cos x(3+y cos),v (x,y) = sin x(3+y cos ) ,w(x, y)=y sin .
Используем синтаксис функции plot3d в случае параметрически заданной функции:
С помощью параметрической формы можно строить и пространственные кривые. Для этого просто нужно задать второй (фиктивный) параметр, чтобы Maxima не ругалась на неправильный синтаксис вызова функции.
Глава 2. Система компьютерной математики MAXIMA для решения математических задач
§1. Основные алгоритмы решения различных задач в системе Maxima
Задача 1. Вычислить х! и xy. После выполнения задания очистить значения переменных, при х=4, y=7
После ввода каждой команде присваивается порядковый номер. На приведенном ниже рисунке 1 введенные команды имеют номера 1-2 и обозначаются соответственно (%i1), (%i2). Результаты вычислений имеют соответственно порядковый номер (%o1), (%o2) и т.д. Где "i" - сокращение от англ. input (ввод), а "o" - англ. output (вывод).
Присваиваем переменным значения. Присваивание значения переменной осуществляется с использованием символа: (двоеточие), например так:
Возведение в степень можно обозначать тремя способами: ^, ^^, **. Извлечение корня степени n записывают, как степень ^^(1/n).
компьютерный математический программа maxima
Имеется еще одна встроенная в Maxima полезная операция - нахождение факториала числа. Эта операция обозначается восклицательным знаком. Например, 6!=1*2*3*4*5*6=120.
Если необходимо удалить значение переменной (очистить ее), то применяется метод kill:
kill(x) - удалить значение переменной x;
kill(all) - удалить значения всех используемых ранее переменных.
И кроме того, метод kill начинает новую нумерацию для исполняемых команд (обратите внимание, что ответом на команду (%i3), приведенную выше, оказался ответ с номером ноль (%o0) done, и далее нумерация команд продолжится с единицы).
Вывод. Ввод простейших команд в wxMaxima необходим для дальнейшего использования, чтобы облегчить использование сложных данных.
Задача 2. Вывести определенный интеграл в математическом контексте на экран и вычислить его:
При нахождении значения определенного интеграла помимо функции и переменной интегрирования указываются пределы интегрирования. В качестве пределов интегрирования могут фигурировать бесконечность (inf) и минус бесконечность (minf).
Синтаксис: integrate(функция, переменная, нижний предел, верхний предел);
Или во вкладке главного меню Анализ пункт Интегрировать. Выведется окно для ввода выражения и уточнения пределов, как показано на рисунке 14.
Рис. 14 - Окно-форма для ввода интегралов
Подынтегральное выражение не зависит от знака параметра a, но значение интеграла -- зависит, так как параметр а может быть записан или как верхний предел или как нижний предел.
На вопрос Maxima Is a positive, negative, or zero? мы ответили р (positive) и получили положительное значение. В случае отрицательного знака у параметра а значение интеграла (%о12) будет отрицательное, а численное значение интеграла по модулю будет тем же.
Задача 3. Найти общее решение дифференциального уравнения
и найти его частное решение, удовлетворяющее начальному условию y (1)=0 .
Решение. Найдем общее решение дифференциального уравнения и обозначим его rez.
Как видно, система нашла решение в неявном виде. Разрешим полученное уравнение относительно y и тем самым найдем решение в явном виде.
§2. Построение графиков в системе MAXIMA
Задача 1. Нарисовать двумерные графики): y=x, y=abs(x), y=x2 , y=x3
а) изменить граничные значения;
б) построить графики в отдельном окне с возможностью масштабирования;
в) провести оси через начало координат.
г) применить различные параметры.
Количество различных функций в Maxima разработчики постарались свести к минимуму, а широту размаха каждой конкретной функции, соответственно, к максимуму. Соблюдается эта тенденция и в функциях построения графиков: основных таких функций всего две - plot2d и plot3d (двумерный и трехмерный график).
Рассмотрим создание степенных функций.
Выберете программу wxMaxima в списке программ, загрузите её и, желая нарисовать двумерный график, щёлкнули по кнопке График 2D, во вкладке меню Plot, как показано на рисунке 15.
Рис. 15 - Расположение кнопки График 2D для рисования графиков
В появившемся окне Выражение(ния) запишем сразу 4 функции: x, abs(x), x , x , перечислив их через запятую как указано на рисунке 16 (в зависимости сколько графиков указано в задании).
Изменим граничные значения переменных х и у на относительно небольшие из: -1.5 к: 1.5 (чтобы график выглядел покрупнее), и щёлкнем на кнопку ОК или нажмем клавишу Enter.
Рис. 16 - Окна-формы интерфейса wxMaxima для рисования графиков
В верхнем графическом окне wxMaxima появились графики (рис. 17). Кроме того, в графической части окна wxMaxima появилась команда wxplot2d([x,abs(x),x^2,x^3], [x,-1.5,1.5], [y,-1.5,1.5])$. Что касается графика, то он "слишком правильный" и никак не масштабируется - таковы возможности "встроенного" формата.
Рис. 17 - Графики y=x, y=abs(x), y=x2 , y=x3 во встроенном формате интерфейса wxMaxima
Попробуем изменить формат и опции графика.
Заметим, что если просто нажать на кнопку График 2D... снова вернутся значения переменных х и у, которые были приняты по умолчанию (Переменная х из: -5 к: 5; Переменная у из: 0 к: 0). Но если скопировать в буфер обмена (даже не планируя дальнейшей вставки) названия функций (через контекстное меню или просто, нажав, например, Ctrl+C) или даже если только щелкнуть в графическом окне на текст исполненной команды, то после щелчка по кнопке График 2D... снова вернутся и названия функций и предыдущие, уже вводимые нами, настройки по х и у из: -1.5 к: 1.5.
Выберем Формат: gnuplot, частично выберем, а частично напишем сами с клавиатуры в окне Опции: set size ratio 1; set zeroaxis; set grid; (перечисляя их через точку с запятой, как указано на рисунке 9) и щёлкнем на кнопку ОК или нажмем клавишу Enter.
Рис. 18 - Окно-форма График 2D для ввода опций двумерных графиков
В формате gnuplot график Максима нарисует в отдельном окне, и мы можем масштабировать его (изменять размеры за счет изменения размеров окна), в соответствии с рисунком 19. При движении мышки внизу слева отображаются координаты положения указателя мышки -- сейчас он находится в точке пересечения всех графиков (1,1). Опция set zeroaxis; проводит оси через начало координат, опция set grid; прорисовывает сетку, опция set size ratio 1; выравнивает масштабы по осям координат, чтобы круг на мониторе выглядел круглым, а не в виде овала (это связано с тем, что разрешение монитора по горизонтали и по вертикали разное, пиксель не является "круглым").
Риc. 19 - Графики y=x, y=abs(x), y=x2 , y=x3 в формате gnuplot интерфейса wxMaxima
Чтобы нарисовать график в формате openmath, команда для Максимы будет такой, как показано на рисунке 11.
Команда для Maxima для рисования графиков в формате openmath
График будет нарисован в отдельном окне, в соответствии с рисунком 20.
Рис. 20 - Графики y=x, y=abs(x), y=x2 , y=x3 в формате openmath интерфейса wxMaxima
И может видоизменяться в интерактивном режиме, в том числе: график можно масштабировать не только за счет изменения общих размеров окна, но и с помощью кнопки меню Масштабировать: после щелчка мышью на графике (размеры увеличатся), и после щелчка мышью при нажатой клавише Shift (размеры уменьшатся); график можно сохранить (кнопка Сохранить) в виде графического файла в формате *.ps, можно изменить толщину линий (кнопка Настройка), перерисовать (кнопка Перерисовать) график после изменения его параметров.
Вывод. Отметим, что аргументами функции plot2d служат не отдельные переменные-параметры, а списки [для записи которых используются квадратные скобки]. Это связано с тем, что plot2d может принимать еще и дополнительные аргументы -- в таком случае они перечисляются следом за таким списком, что исключает всякую путаницу.
Задача 2. Решить систему уравнений: вывести рисунок и точки пересечения на экран
Решим систему из двух уравнений: пусть требуется найти точки пересечения окружности x2+y2=2 и прямой x+y=1.
Для записи команды в Maxima можно использовать следующий вариант:
solve([уравнение1, уравнение2, …], [переменная1, переменная2, …]).
Совместим графики окружности и прямой, чтобы убедиться в том, что решение существует. Из графика представленного на рисунке 21 видим, что решением исследуемой системы уравнений являются координаты 2 точек.
Рис. 21 - Пересечение окружности и прямой
В нашем случае количество уравнений и количество неизвестных равны, поэтому список неизвестных можно не писать, а использовать обращение вида: solve([уравнение1, уравнение2, …])
Не следует, конечно, забывать, что квадратные скобки используются для указания списка, иначе Maxima проинтерпретирует вызов за вариант с одним уравнением.
Получим в итоге.
Здесь в качестве решения возвратился список из двух списков, каждый из которых соответствует одному решению системы (координатам точек пересечения). В качестве подстановок можно использовать как списки целиком (например, в данном контексте, %o1[1]), так и отдельные их элементы (например, %o1[1][1]).
Задача 3. Вывести определенный интеграл в математическом контексте на экран и вычислить его:
При нахождении значения определенного интеграла помимо функции и переменной интегрирования указываются пределы интегрирования. В качестве пределов интегрирования могут фигурировать бесконечность (inf) и минус бесконечность (minf).
Синтаксис: integrate(функция, переменная, нижний предел, верхний предел);
Или во вкладке главного меню Анализ пункт Интегрировать. Выведется окно для ввода выражения и уточнения пределов, как показано на рисунке 22.
Рис. 22 - Окно-форма для ввода интегралов
Подынтегральное выражение не зависит от знака параметра a, но значение интеграла -- зависит, так как параметр а может быть записан или как верхний предел или как нижний предел.
На вопрос Maxima Is a positive, negative, or zero? мы ответили р (positive) и получили положительное значение. В случае отрицательного знака у параметра а значение интеграла (%о12) будет отрицательное, а численное значение интеграла по модулю будет тем же.
Список используемой литературы
1. Аладьев В.З. Системы компьютерной алгебры: Maple: искусство программирования / В.З. Аладьев. -- М.: Лаборатория базовых знаний, 2006. - 792 с.
2. Житников В. Компьютеры, математика и свобода // Компьютерра, 2006 г.
3. Олейник О.А. Роль теории дифференциальных уравнений в современной математике и ее приложениях // Соросовский образовательный журнал, 1996, №4, с. 114-121 .
4. С. Фарлоу. Уравнения с частными производными для научных работников и инженеров: пер. с англ./ под редакцией С.И. Похожаева. - М.: Мир, 1985. - 384 с.
5. Сливина Н.А. Профессиональные математические пакеты в образовании // Педагогические и информационные технологии в образовании. - № 2. -- http://scholar.urc.ac.ru:8002/Teachers /methodics/journal/numero2/slivina.html
6. Аладьев В.З. Системы компьютерной алгебры: Maple: искусство программирования / В.З. Аладьев. -- М.: Лаборатория базовых знаний, 2006. - 792 с.
7. Андреев В.И. Педагогика: Учебный курс для творческого саморазвития. 3-е издание /В.И. Андреев. - Казань: Центр инновационных технологий, 2003. - 608 с.
8. Лекция «Системы компьютерной алгебры» http://www.intuit.ru/department/se /pinform/8/ (Автор: Е.А. Роганов)
Подобные документы
Эффективность использования программного комплекса Maxima как инструмента для составления математического описания линейной системы, обработки частотных и алгебраических критериев оценки устойчивости, определения показателей качества ее регулирования.
дипломная работа [2,7 M], добавлен 10.07.2017Популярная система компьютерной математики, предназначенная для автоматизации решения массовых математических задач в самых различных областях науки, техники и образования. Основные возможности Mathcad, назначение и интерфейс, графика и развитие.
презентация [3,5 M], добавлен 01.04.2014Раскрытие понятия "системы компьютерной математики", история ее развития. Внутренняя архитектура и составляющие СКМ. Основные принципы работы системы Maple. Ее возможности для решения линейных и нелинейных уравнений и неравенств. Применение функции solve.
курсовая работа [189,4 K], добавлен 16.09.2017Современные системы компьютерной математики. Графический способ решения уравнений с параметрами. Возможности системы Mathcad для создания анимации графиков функций. Процесс создания анимации. Использование анимационной технологии систем математики.
контрольная работа [617,1 K], добавлен 08.01.2016Вычисление значения входного и выходного сигналов в n-равноотстоящих точках, вывод на экран таблицы. Структура программы: модули, список идентификаторов функций, интерфейс. Исходный код программы. Проверка расчетов в Maxima и построение графиков.
курсовая работа [1,4 M], добавлен 14.07.2012Построение имитационной модели и метод решения задач, при использовании которого исследуемая система заменяется более простым объектом, описывающим реальную систему. Имитационная модель компьютерной программы, её значение при решении моделируемых задач.
курсовая работа [343,1 K], добавлен 04.06.2012Обзор и сравнительный анализ современных математических пакетов. Вычислительные и графические возможности системы MATLAB, а также средства программирования в среде MATLAB. Основные возможности решения задач оптимизации в табличном процессоре MS Excel.
дипломная работа [6,6 M], добавлен 04.09.2014Создание программы для мобильного устройства, для решения геометрических задач: нахождения площади треугольника по формуле Герона, площади прямоугольного треугольника и круга. Реализация программных модулей, интерфейс программы, руководство пользователя.
курсовая работа [314,9 K], добавлен 07.12.2014Краткая характеристика пакета Mathcad, описание простейших примеров работы с ним, примеры решения основных задач элементарной математики. Компьютерные технологии решения математических задач и символьных вычислений. Образование векторов и матриц.
дипломная работа [621,1 K], добавлен 11.03.2011Разработка программы, которая создает в отдельном потоке случайный массив целых чисел в заданном диапазоне и выводит на экран эти числа. Описание общего алгоритма, интерфейс программы. Методы решения и алгоритмы задач, реализуемых каждым потоком.
курсовая работа [372,6 K], добавлен 17.04.2014