Задать функцию пользователя в скм maxima. Методичка работы с maxima. Обозначение команд и результатов вычислений

Cвободная математика

Александр Бикмеев разбирается, насколько свободна компьютерная математика и насколько свободное ПО является математическим.

Любая наука, от физики до филологии, использует достижения математики. В связи с этим специалистам не-математикам необходимы средства, которые позволяли бы ставить задачи в математической форме и получать решения в виде формул или набора значений, то есть нужны системы компьютерной математики, способные взять на себя труд решения математических задач различными методами.

К сожалению, в нашей стране подобные программы распространены в достаточно узкой области научной деятельности, и не в последнюю очередь это обусловлено тем, что школьников и студентов не знакомят с профессиональными математическими пакетами, стоимость только одной лицензии на которые зачастую исчисляется тысячами и десятками тысяч рублей.

Мы предлагаем вам заглянуть в мир свободных математических пакетов, которые можно бесплатно загрузить из сети Интернет, использовать для любого вида изысканий (иногда с оговорками), а также, благодаря наличию исходных текстов, изучать их внутреннее устройство и, при желании, расширять их функциональность собственными силами.

Символьные вычисления

Системы компьютерной математики (СКМ) разрабатываются давно, и Maxima () была одной из первых. Изначально это был коммерческий продукт, но, не выдержав конкуренции, система перешла в разряд свободных.

Оболочка wxMaxima и пункт меню, позволяющий вывести или убрать с экрана панели математических операций.

Основное преимущество Maxima перед другими свободными системами – это поддержка символьных вычислений. То есть, введя аналитическое выражение или уравнение, вы можете получить результат также в аналитическом виде.

Maxima позволяет решать алгебраические уравнения, системы уравнений, выполнять операции интегрирования, дифференцирования, разложения в ряд и так далее. Кроме того, она умеет решать дифференциальные уравнения, граничные задачи, задачи Коши, выполнять алгебраические вычисления с матрицами, строить графики и поверхности, заданные различными функциями в декартовой и полярной системах координат. Все возможности перечислить трудно.

Для СКМ Maxima разработано несколько оболочек, наиболее удобной из которых (для начинающего пользователя) является wxMaxima (см. рис. 1). Начиная с версии 0.8.0, она стремительно меняется в лучшую сторону. Последняя версия (0.8.3) содержит черты таких известных коммерческих пакетов, как Maple и MathCAD . Работа в данной оболочке достаточно проста и позволяет получать приемлемые результаты уже через несколько минут использования. Многие операции, названия которых присутствуют в меню и на панелях инструментов, снабжены удобными мастерами, позволяющими решать задачи, даже не зная встроенного языка и команд Maxima . Ну и еще один немаловажный факт – все оболочки для данной СКМ русифицированы. Кроме того, изучив свободный пакет Maxima , обучающиеся смогут легче освоиться в коммерческих пакетах, что обусловлено как относительной схожестью интерфейса, так и используемым синтаксисом (особенно это касается Maxima и Maple ).

Система прекрасно документирована, но справочный материал представлен только на английском языке. Наш журнал публиковал учебные материалы о работе в СКМ Maxima (LXF81–86). Будучи консольным приложением, Maxima может работать в пакетном режиме, то есть ей можно передавать на обработку текстовый файл со списком команд и получать опять же текстовый файл с результатами, а если учесть, что вывод может быть оформлен средствами системы разметки TeX , то это позволяет использовать ее в качестве базы для построения собственных приложений. Одним из примеров такой разработки является расширение TeXmacs .

На основании имеющегося опыта обучения можно сказать, что студенты младших курсов осваивают работу в Maxima достаточно быстро и начинают использовать ее при выполнении заданий по другим предметам. Но с каждым курсом у них возникает все больше проблем.

Дело в том, что наряду с большим количеством положительных моментов у Maxima присутствуют и отрицательные. Во-первых, конечный результат, особенно при решении сложных задач, во многом зависит от уровня знания математики и опыта использования данной СКМ, потому как иногда требуется выполнить предварительные преобразования самостоятельно. Во-вторых, Maxima очень хорошо работает с алгебраическими выражениями, но трансцендентные, логарифмические и подобные им вызывают у нее значительные трудности. Впрочем, если нельзя получить аналитическое решение, то всегда можно воспользоваться численным расчетом. В-третьих, возможности Maxima по построению сложных графиков или визуализации, например, векторного поля, не идут ни в какое сравнение с возможностями Maple . И, наконец, в-четвертых, для полноценной работы необходимо изучить многочисленные команды и константы Maxima , а это требует времени и терпения.

СКМ Maxima входит во многие дистрибутивы Linux или, по крайней мере, обязательно присутствует в репозиториях. Она включена в состав таких образовательных продуктов, как AltLinux Школьный, Edubuntu и EduMandriva.

Окно SMath Studio , в котором определена функция, вычислена ее производная и построен график.

Следует отметить, что инженеры все-таки привыкли работать с таким мощным приложением-калькулятором, как MathCAD . Это система инженерных расчетов, доступная для любых платформ (см. Коммерческие пакеты), но за серьезные деньги. Однако работодатели требуют, чтобы выпускники умели работать в этой системе. Как же быть образовательным учреждениям?

В нашей стране родился спасительный проект: SMath Studio (http://ru.smath.info/forum/). Это бесплатный, но, к сожалению, пока не свободный продукт, разработчик которого, Андрей Ивашов, пытается создать альтернативу монстру MathCAD , и у него это получается (см. рис. 2). Приложение разработано для среды .NET , а затем адаптировано для Mono .

SMath Studio позволяет выполнять аналитические вычисления, операции с матрицами, строить графики и вычислять производные, и даже поддерживает функции программирования. К сожалению, аналитическое интегрирование пока не поддерживается, но продукт успешно развивается, и осенью 2009 г. автор заканчивает разработку инфраструктуры, которая позволит использовать сторонние подключаемые модули. Возможно, тогда развитие приложения выйдет на новый уровень, и мы получим полноценную альтернативу MathCAD .

Следует также отметить, что весной 2009 года, по соглашению с автором, продукт был включен в состав образовательного дистрибутива EduMandriva. Несмотря на ограниченную функциональность, данное приложение позволяет выполнять повседневные вычисления на уровне школьников и студентов младших курсов, а также простые инженерные расчеты. А если учесть, что SMath Studio прекрасно чувствует себя на карманных компьютерах и смартфонах, управляемых Windows Mobile, то знакомство с ним для школьников и студентов просто обязательно.

На официальном сайте всегда присутствует документация в форматах DOC и ODT, а на официальном форуме можно задать вопросы разработчику или сообществу и обсудить использованные при разработке приложения алгоритмы.

Окно wxMaxima с результатами символьных вычислений и графиком функции

В завершение данного раздела хочется заострить внимание на том, что пакеты символьной математики в качестве результата выдают выражение, а не число. Рассмотрим пример, показанный на рис. 3, в котором определена пользовательская функция и для нее найдена вторая производная; затем функция проинтегрирована. Заодно построен график. Таким образом, школьники и студенты могут наглядно выполнить полный анализ функции. И это далеко не все: Maxima умеет упрощать выражения путем раскрытия скобок, приведения подобных слагаемых, выполнения подстановок и задания некоторых условий и допущений, накладываемых на выражение. Добавьте сюда возможность символьного решения уравнений и систем уравнений, а также дифференциальных уравнений, и поймете, что современному студенту без этих инструментов не обойтись, а преподаватели естественных дисциплин могут оживить уроки и практические занятия за счет ввода интерактивных заданий или демонстрационного материала.

Численные расчеты

Как известно, не каждую задачу можно решить аналитически, то есть получить решение в виде некой формулы. Тогда на помощь приходят различные численные методы, для получения решения с некоторой точностью. Наиболее известным представителем приложений для численных расчетов является система компьютерной алгебры (СКА) Matlab .

Matlab широко распространен по всему миру (см. Сравнение в LXF109), но стоимость даже образовательных лицензий не по карману не только школам, но и многим российским вузам. За рубежом также предпочитают считать деньги – и вкладывают человеческие ресурсы в разработку свободных аналогов Matlab . Рассмотрим некоторые из них.

Прежде всего, на мой взгляд, стоит остановится на проекте GNU Oсtave (http://www.gnu.org/software/octave/). Разработчики позиционируют эту систему как «высокоуровневый язык программирования для численных расчетов». Как и многие свободные *nix-проекты с давней традицией, она предоставляет интерфейс командной строки. Введите в терминале octave – и (если, конечно GNU Octave установлена на компьютере) перед вами появится приглашение данной системы. Начните вводить команды, и в терминале будут выводится результаты вычислений.

Интерфейс командной строки имеет свои преимущества, так как он практически не отнимает вычислительных ресурсов компьютера, оставляя всю мощь процессора на сами вычисления, а не на красивое отображение текста команд и результата расчетов. И все же современный пользователь редко готов мириться с этим.

. Оболочка qtOctave с выполненными вычислениями.

Долгое время GNU Octave не имела графического интерфейса, пока, наконец, не появился qtOctave (см. рис. 4). Эта оболочка весьма напоминает интерфейс Matlab и позволяет автоматизировать выполнение некоторых рутинных операций (например, построения графиков) при помощи мастеров.

Язык системы сделан максимально схожим с языком Matlab ; следовательно, человек, освоивший GNU Octave , сможет практически без переобучения работать и в Matlab , а именно это и необходимо работодателям. Кроме того, энтузиастами движения свободного ПО для системы создано достаточное количество пакетов расширений. За счет этого функционал самой СКА постоянно растет. Ну, а наличие исчерпывающей документации (пусть и на английском языке) как для системы, так и для пакетов расширений делает данный продукт не только выгодным, но и доступным для изучения.

К минусам относится не совсем удобный интерфейс оболочки qtOctave , тем более, что версия не обновлялась с осени 2008 года (создается впечатление, что проект заброшен). Пакеты расширений не богаты функциями и не блещут графическими возможностями; кроме того, они не равнозначны, поскольку ситуация такова, что один проект разработан студентом-первокурсником, а второй, например, командой преподавателей вуза. Зато это полностью свободный проект, с которым можно не беспокоиться о лицензионной чистоте получаемых решений.

Следующий пакет, который хотелось бы рассмотреть, называется Scilab (http://www.scilab.org), само имя которого указывает на схожесть с Matlab . Изначально это был также коммерческий продукт, и назывался он Blaise , а затем Basile . Его создателей вдохновили первые версии Matlab , и некоторое время они конкурировали. Однако в начале 90‑х фирма Simulog прекратила его продажу, и тогда шесть разработчиков французского национального исследовательского института (INRIA) основали проект Scilab .

Scilab выгодно отличается от своих собратьев по цеху проработанным интерфейсом, наличием достаточно большого числа специализированных пакетов расширений, а также тем, что он поддерживается Консорциумом Scilab , в состав которого входят крупные образовательные и научные учреждения со всего мира.

Интерфейс Scilab 5

Scilab – единственная свободная система, аналогичная Matlab , имеющая свой собственный инструмент для блочного моделирования под названием Scicos . В дистрибутиве продукта имеется встроенный редактор скриптов и функций с возможностью отладки. Scilab обладает развитыми графическими возможностями для создания высокотехнологичных приложений. С функциональностью системы можно ознакомиться, рассмотрев демонстрационные примеры – некоторые из них весьма впечатляют (выберите пункты меню ? > Демонстрация возможностей ).

Scilab имеет в своем составе функции не только для выполнения всевозможных операций над матрицами, но и для построения графиков и трехмерных поверхностей в различных системах координат, функции для работы с генетическими алгоритмами, решения задач на графах, статистические функции, средства имитационного моделирования и многое другое. Ежегодно проходит несколько конференций, посвященных использованию СКА Scilab в науке, образовании и на производстве.

Во всем мире вышло несколько книг, посвященных описанию работы в Scilab , а также решению ряда специализированных задач. К сожалению, ни одна из них не была переведена на русский язык. В России вышло всего две книги, одна – в рамках национального проекта, а во второй Scilab описывается наряду с несвободными пакетами. Наш журнал также неоднократно печатал учебники о работе в Scilab (LXF106–109 и ), и все же документации пока не хватает, а справочные материалы не всегда позволяют понять, как работает та или иная функция.

Freemat - впечатляющий результат того, на что способна команда из трех единомышленников.

Выход пятой версии Scilab ознаменовал собой начало нового этапа в развитии системы. Изменился интерфейс приложения (разработчики отказались от GTK -интерфейса), начал меняться инструмент блочного моделирования Scicos , который в октябре 2009 года должен поменять свое имя на Xcos .

Еще одной вариацией на тему Matlab является Freemat (); этот пакет имеет другую немаловажную общую черту с Matlab , а именно поддержку объектно-ориентированного программирования. Интерфейс программы достаточно приятен. В основном окне реализовано автодополнение команд. На официальном сайте присутствует полное руководство по работе с системой (на английском языке). Дистрибутив программы имеет небольшой, по нынешним меркам, объем – 18 МБ.

Система позволяет выполнять численное решение уравнений и систем уравнений, как линейных, так и нелинейных, и числовую обработку сигналов (см. рис. 6); способна работать с многомерными матрицами. Основными положительными моментами Freemat , по сравнению со Scilab и Octave , являются большая совместимость внутреннего языка системы с языком Matlab и использование OpenGL для построения графиков и поверхностей, в результате чего они выглядят более качественно.

Минусами же Freemat являются низкое быстродействие (некоторые задачи решаются в разы медленнее, чем в других пакетах) и отсутствие пакетов расширений. Данная система развивается только усилиями команды из трех человек. Большого сообщества у проекта не наблюдается.

Дистанционная математика

Упомянутые выше системы представляют собой локальные проекты, то есть работа с ними ведется на одной машине. Но это бывает неудобно – например, при дистанционном обучении; кроме того, не все студенты согласятся (а иногда и смогут) поставить данные приложения на своих домашних компьютерах. В этом случае необходимы средства для удаленной работы с математическими пакетами.

SMath Studio Live : считайте, не выходя из браузера (пусть и не очень быстро).

Среди рассмотренного нами такую возможность предоставляет SMath Studio . В разделе Live официального сайта (http://smath.info/live) располагается виртуальный рабочий лист, на котором любой желающий может выполнить свои вычисления. Система очень удобна, хотя и не блещет быстродействием.

И все же более профессиональна в этом плане система SAGE (http://www.sagemath.org/). Данная система состоит из web-сервера, обеспечивающего графический интерфейс для взаимодействия с кодом Python , на котором написано ее ядро. Любой пользователь при помощи своего любимого web-браузера может подключиться к серверу, зарегистрироваться и получить в свое владение личное пространство. Оно может быть и открытым, и закрытым, то есть доступным только администратору сервера и самому владельцу. В личном пространстве могут создаваться рабочие листы, на них и выполняются все вычисления.

В рамках рабочего листа можно использовать любой доступный язык, а таких немало. По умолчанию система SAGE объединяет следующие продукты: GAP, Maxima, Python, R, LaTeX . Кроме этого, могут быть подключены Octave, Axiom, Magma, Mathematica, Matlab, Maple, Mupad и другие. В результате мы получаем единый сервер удаленной работы, позволяющий обучать любым математическим пакетам и выполнять вычисления с помощью как свободных, так и коммерческих систем компьютерной математики.

. По непонятным причинам, Sage отказывается работать в Firefox , но в остальном это удачное решение для удаленной работы.

Система прав доступа к личным пространствам и возможность совместной работы с рабочим листом сразу нескольких пользователей позволяет организовать дистанционное обучение с листом объяснения учебного материала, содержащим примеры решения задач, и листами личных заданий для каждого студента.

В настоящее время в сети существует несколько публичных SAGE -серверов – к ним можно подключиться, посмотреть листы, выложенные в общий доступ, завести свое личное пространство и, в случае трудностей, попросить помощь у сообщества. Для этого просто сделайте рабочий лист публичным. Уверяю вас: желающих помочь достаточно много, единственная проблема в том, что рабочий язык – английский.

На официальном сайте присутствуют ссылки на тестовый публичный сервер (http://www.sagenb.org), а также на учебные материалы и книги, созданные с помощью данной системы. Зарегистрируйтесь и опробуйте SAGE – может быть, это то, что вы ищете? Стоит также отметить, что у нас не получилось войти на сервер в Firefox , но в других браузерах проблем не возникло.

Итак, мы рассмотрели наиболее популярные свободные системы компьютерной математики. Можно ли их использовать в обучении и для работы – решать вам. Мы свой выбор уже сделали, и не жалеем об этом.

Коммерческие системы

Среди коммерческих систем наиболее популярны три: Matlab (численные вычисления), Maple (основной упор сделан на символьные вычисления) и Mathematica (удачно сочетает устремления первых двух). Особняком стоит мощный инженерный пакет MathCAD , поскольку это скорее большой инженерный калькулятор, и он не предназначен для решения сложных задач математической физики или теории шифрования, обработки сигналов и так далее.

Все эти пакеты имеют версии под наиболее распространенные платформы: Windows, Linux и Mac OS X. Приведем стоимость одной лицензии данных пакетов для академических учреждений, согласно прайс-листу Softline:

  • Matlab – 30 765 руб;
  • Mathematica – 9002 руб;
  • Maple – 36 286 руб;
  • MathCAD – 5290 руб.

Выводы вы можете сделать сами.

Тема : Система команд, вычисления в Maxima .

Цель: продолжить знакомство с программой Maxima , познакомить с системой команд Maxima ; развивать память, внимание; воспитывать информационную культуру.

Ход урока:

    Организационное начало:

    Приветствие.

    Работа с дежурными.

    Повторительно-обучающее начало.

    Индивидуальная работа по карточкам.

Карточка №1.

    1. Понятие системы математический вычислений.

      Особенности системы математических вычислений.

Карточка №2.

    1. Понятие компьютерной алгебры.

      Особенности компьютерной алгебры.

    Устный индивидуальный опрос.

Понятие Maxima . Особенности. Запуск программы.

Интерфейс программы Maxima .

    Работа по осмыслению и усвоению нового материала.

    Объявление темы и цели урока.

    Изучение нового материала.

Ввод простейших команд в wxMaxima

После запуска wxMaxima появляется окно программы.

верхней графической части окна интерфейса Maxima рассказывает, что загружена версия 5.14.0, что она распространяется по лицензии GNU, с какого сайта доступна и кто её родитель. В нижнем окне в поле ВВОД: Maxima приготовилась воспринимать команды. Разделителем команд является символ; (точка с запятой). После ввода команды необходимо нажать клавишу Enter для ее обработки и вывода результата.

В ранних версиях Maxima и некоторых ее оболочках (например, xMaxima), и в консольной версии наличие точки с запятой после каждой команды строго обязательно. Поэтому настоятельно рекомендуем при использовании Максимы

не забывать добавлять точку с запятой; после каждой команды. В случае, когда выражение надо отобразить, а не вычислить, перед ним необходимо поставить знак (") (одинарная кавычка). Но этот метод не работает, когда выражение имеет явное значение,

например, выражение sin(π) Максима рассматривает как нуль и при наличии апострофа. Трудно предусмотреть многообразие возможных вариантов использования Максимы для расчета или преобразования выражений. В сложных случаях, можно попытаться получить справку на английском языке. Для вызова справки достаточно в поле ВВОД написать? и нажать Enter.

Обозначение команд и результатов вычислений

После ввода каждой команде присваивается порядковый номер. На приведенном ниже рисунке введенные команды имеют номера 1–3 и обозначаются соответственно (%i1), (%i2), (%i3). Результаты вычислений имеют соответственно порядковый номер (%o1), (%o2) и т.д. Где "i" – сокращение от англ. Input (ввод), а "o" – англ. Output (вывод)

Этот механизм позволяет при дальнейшей записи команд сослаться на ранее записанные, например (%i1)+(%i2) будет означать добавление к выражению первой команды выражения второй с последующим вычислением результата. Также можно использовать и номера результатов вычислений, например, таким образом (%o1)*(%o2).

Для последней выполненной команды в Maxima есть специальное обозначение – %.

Пример: Вычислить значение производной функции

в точке х=1.

Команда (%i9) была выполнена, и был получен результат (%о9). Поэтому следующая команда (%i10) сослалась на уже полученный результат, но уточнила значение переменной х, поэтому команда получала вид (%i10) (%о9), х=1.

Ввод числовой информации

Правила ввода чисел в Maxima точно такие, как и для многих других подобных программ. Целая и дробная часть десятичных дробей разделяются символом точка. Перед отрицательными числами ставится знак минус.

Числитель и знаменатель обыкновенных дробей разделяется при помощи символа / (прямой слэш).

Обратите внимание, что если в результате выполнения операции получается некоторое символьное выражение, а необходимо получить конкретное числовое значение в виде десятичной дроби, то решить эту задачу позволит применение оператора numer . В частности он позволяет перейти от обыкновенных дробей к десятичным

Здесь Maxima прежде всего действовала по умолчанию. Она сложила дроби 3/7 и 5/3 по правилам арифметики точно: нашла общий знаменатель, привела дроби к общему знаменателю и сложила числители. В итоге она получила

44/21. Лишь после того, как мы попросили её получить численный ответ, она вывела приближенный, с точностью 16 знаков численный ответ 2,095238095238095.

Константы

В Maxima для удобства вычислений есть ряд встроенных констант, самые распространенные из них показаны в следующей таблице (табл.1):

Арифметические операции

Обозначения арифметических операций в Maxima ничем не отличаются от классического представления, используются математические знаки: + – * /.

Возведение в степень можно обозначать тремя способами: ^ , ^^ , **. Извлечение корня степени n записывают, как степень ^^(1/n ). Напомним еще одну встроенную в Maxima полезную операцию –нахождение факториала числа. Эта операция обозначается восклицательным

Например, 6!=1⋅ 2⋅ 3⋅ 4⋅ 5⋅ 6=120.

Для увеличения приоритета операции, как и в математике, при записи команд для Maxima используют круглые () скобки.

Переменные

Для хранения результатов промежуточных расчетов применяются переменные. Заметим, что при вводе названий переменных, функций и констант важен регистр букв, так переменные x и X – это две разные переменные.

Присваивание значения переменной осуществляется с использованием символа: (двоеточие), например x : 5;.

Если необходимо удалить значение переменной (очистить ее), то применяется метод kill :

kill (x ) – удалить значение переменной x ;

kill (all ) – удалить значения всех используемых ранее переменных.

И кроме того, метод kill начинает новую нумерацию для исполняемых команд (обратите внимание, что ответом на команду (%i 3), приведенную выше, оказался ответ с номером ноль (%o 0) done , и далее нумерация команд продолжилась с единицы).

Математические функции

В Maxima имеется достаточно большой набор встроенных математических функций. Вот некоторые из них (табл.2). Следует иметь ввиду, что некоторые названия функций отличаются от названий, используемых в отечественной литературе: Вместо tg – tan , вместо ctg – cot , вместо arcsin – asin , вместо arcos – acos , вместо arctg – atan , вместо arcctg – acot , вместо ln – log , вместо cosec – csc .

Правило записи функций

Для записи функции необходимо указать ее название, а затем, в круглых скобках записать через запятую значения аргументов. Если значением аргумента является список, то он заключается в квадратные скобки, а элементы списка также разделяются запятыми.

integrate(sin(x),x,-5,5); plot2d(,,);

Пользовательские функции

Пользователь может задать собственные функции. Для этого сначала указывается название функции, в скобках перечисляются названия аргументов, после знаков:= (двоеточие и равно) следует описание функции. После задания пользовательская функция вызывается точно так, как и встроенные функции Maxima.

Перевод сложных выражений в линейную форму записи

Одним из самых сложных занятий для начинающих пользователей системы Maxima является запись сложных выражений, содержащих степени, дроби и другие конструкции, в линейной форме (в текстовой форме записи, при помощи ASCII символов, в одну строку).

Для облегчения данного процесса нелишне дать несколько рекомендаций:

1. Не забывайте ставить знак умножения! В графическом окне Maxima по правилам математики удвоенное значение переменной х записывает в виде 2x , но в окне ВВОД: команда для Maxima должна выглядеть как 2*x .

2. В случае сомнения всегда лучше поставить «лишние», дополнительные скобки (). Числитель и знаменатель выражения всегда необходимо заключать в скобки.

А также при возведении в степень основание и степень лучше всегда брать в скобки.

3. Функция не существует отдельно от своих аргументов (если таковые имеются). Поэтому, например, при возведении в степень можно взять всю функцию с аргументами в скобки, а потом уже возводить полученную конструкцию в нужную степень: (sin (x ))**2.

Также помните, что несколько аргументов функции записываются в скобках, через запятую, например, min(x1,x2,x3,xN);

5. Недопустима запись функции sin(2*x) в виде sin*2*x или sin2x.

6. В случае записи сложного выражения разбейте его на несколько простых составляющих, введите их по отдельности, а затем объедините, используя рассмотренные ранее обозначения введенных команд.

Пример: необходимо ввести следующее выражение:

Разделим это выражение на три составные части: числитель, выражение в скобках и степень. Запишем каждую составную часть и объединим их в выражение.

Maxima упростит выражение

rat(выражение). преобразовывает рациональное выражение к канонической форме. То

есть раскрывает все скобки, затем приводит все к общему знаменателю, суммирует и сокращает; кроме того, приводит все числа в конечной десятичной записи к рациональным.

    Задание на дом:

Стахин Н.А, с 10-18, опорный конспект.

    Итог урока.

Для чего предназначена программа Maxima ?

Перечислите основные элементы интерфейса программы Maxima .

Перечислите основные команды Maxima .

Maxima - еще одна программа для выполнения математических вычислений, символьных преобразований, а также построения разнообразных графиков. Сложные вычисления оформляются в виде отдельных процедур, которые затем могут быть использованы при решении других задач. Система Maxima распространяется под лицензией GPL и доступна как пользователям ОС Linux, так и пользователям MS Windows.

Для работы с данной системой в ОС Linux следует в окне shell набрать команду maxima или xmaxima для запуска ее графической оболочки. Другим удобным инструментом для работы с системой Maxima является программа texmacs . На панели инструментов этой программы располагается кнопка с изображением монитора, нажатиe на которую открывает меню выбора интерактивной сессии. Выбор пункта maxima позволит начать сеанс работы с этой программой.

При отображении результатов вычислений эта оболочка использует стандартные математические обозначения, в то время как xmaxima или maxima - только символы из таблицы ASCII-кодов.

При старте выводится некоторая информация о системе и "метка" (C1). Каждый ввод и вывод помечаются системой и затем могут быть использованы снова. Символ C (от command) используется для обозначения команд, введенных пользователем, а D (от display) - при выводе результатов вычислений.

Для инициализации процесса вычислений следует ввести команду, затем символ; (точка с запятой) и нажать клавишу Enter. Если не требуется вывод полученной информации на экран, то вместо точки с запятой используется символ $. Обратиться к результату последней команды можно с помощью символа %. Для повтора ранее введенной команды, скажем (C2), достаточно ввести два апострофа и затем метку требуемой команды, например, ""C2.

Система Maxima не обращает внимание на регистр введенных символов в именах встроенных констант и фунций. Запись sin(x) эквивалентна записи SIN(x), но при выводе результатов в текстовом режиме используются заглавные буквы. Регистр букв, однако, важен при использовании переменных, например, Maxima считает x и Xразными переменными.

Для стандартных математических констант используются следующие обозначения: %e (или %E) для основания натуральных логарифмов, %i (%I) для мнимой единицы (квадратный корень из числа -1) и %pi (%PI) для числа
.

Присваивание значения какой-либо переменной осуществляется с помощью знака : (двоеточие), а символ = (равно) используется при задании уравнений или подстановок.

(C1) x:2; (D1) 2 (C2) y:3; (D2) 3 (C3) x + y; (D3) 5

Функция kill аннулирует присвоенные ранее значения переменных. Параметр all этой функции приводит к удалению значения всех переменных, включая метки Ci и Di.

(C8) kill(x); (D8) DONE (C9) x + y; (D9) x + 3 (C10) kill(all); (D0) DONE (C1) x + y; (D1) y + x

Для завершения работы с системой применяется функция quit(); , а прерывание процесса вычислений осуществляется путем нажатия комбинации клавиш Ctrl+c (после чего следует ввести:q для возврата в обычный режим работы).

Справка о той или иной функции выводится по команде describe (имя функции). При работе в графической оболочке XMaxima, можно воспользоваться пунктом меню help. Процедура example (имя функции) демонстрирует примеры использования функции.

При вводе каждой команде и результату, как уже отмечалось выше, присваивается порядковый номер.

Используемый стиль обозначений позволяет при дальнейшей записи команд сослаться на ранее полученные результаты, например, таким образом (% o 1)*(% o 2) – результаты требуется перемножить.

Для последнего ответа в Maxima есть специальное обозначение%. А для последней команды _ (знак подчёркивания).

Пример : Вычислить значение функции в точках x = a , и вычислить .

Команда (%i1) была выполнена (появился результат %о1) и была определена функция . Поэтому следующие две команды (%i2) и (%i3) вызывали (хотя и по-разному) эту функцию, чтобы рассчитать значения в заданных точках. Из (%i4) видно, что ссылку на строку результата (%о2) можно писать и без скобок ().

Основные математические операции в Maxima обозначаются обычным образом: +, –, *, /. Возведение в степень для удобства предусмотрено записывать тремя разными способами ^, ^^, **. Знак присвоения – это двоеточие «: », команду для Maxima «а:2;» следует читать следующим образом: «переменной а присвоить число 2». В конце команды кроме точки с запятой «; » допустимо ставить знак доллара $. При наличии точки с запятой результат выводится на экран, при наличии доллара результат не выводится на экран, исключение составляют команды для вывода графиков, заканчивающиеся долларом, но выводящие на экран график.

3.1. Переменные в Максима

Переменные в Maxima могут хранить символы, аналитические выражения, определения функций, логические значения «true», «false», списки, уравнения, строки текста, заключенного в двойные кавычки, в составе которого имеются кириллические символы, и, конечно же, числа: целые, рациональные дроби, вещественные фиксированной точности и вещественные с плавающей точкой неограниченной точности типа %pi.

Из следующего примера видно, что Maxima вполне законченный математик, для неё переменная х и нечто – никому непонятный объект ″Петя″ – ничем не отличаются. Maxima

В этом примере Maxima разделила (″Петя″2–4)/(″Петя″–2) и получила ″Петя″+2. Затем из ″Петя″+2 Maxima отняла ″Петя″ и в итоге получила целое число 2.

3.2. Возможные ошибки вычислений

Из следующего примера следует, что в операциях с числами Maxima «ручается» только за 16 значащих цифр и «ничто компьютерное ей не чуждо», у неё тоже имеются чисто вычислительные проблемы (см. %о3) с округлением при вычислениях.

Дело в том, что в приведённых примерах Maxima производит вычисления не целыми числами, а с приближенными. Расчеты производятся не в десятичной системе и не путем формальной замены деления введением множителя 10 –5 . Деление производится реально в двоичной системе. Приближенные числа имеют стандартную длину, плавающую запятую. Результаты округляются так, чтобы оставались 16 значащих цифр.

В данном примере появившаяся неожиданная ″ добавка ″ незначительна и составляет всего 0,3*10 –21 .

В следующем примере она значительно больше. Но, как и в предыдущем случае, также является следствием технических возможностей компьютера при осуществлении арифметических операциях с плавающей запятой

За счет реального выполнения арифметических вычислений, результаты оказываются неточными: ответы %о3 и %о4 отличаются от нуля.

3.3. Записьуравнений

Если записанная команда содержит знак равенства, Maxima рассматривает её как уравнение, от левой и правой части которого можно отнять одну и ту же величину, и можно обе части уравнения умножить на одну и ту же величину, при умножении двух уравнений отдельно перемножаются их левые и правые части.

3.4. Неопределённая форма выражений

Выражения в Maxima могут иметь две формы: действующую и неопределённую . В тех случаях, когда выражение надо лишь отобразить, а не вычислить (неопределённая форма ) , перед ним следует поставить знак (одинарная кавычка). Например, мы пожелали отобразить то самое задание, которое мы увидели первым в окне XMaxima , поэтому скопируем текст задания, добавим кавычку, и вызовем интерпретатор. Получим

откуда видим, что первый пример в окне XMaxima посвящен вычислению представленного здесь интеграла.

Однако, указанный метод не сработает, если выражение имеет явное значение, например, выражение sin(π ) Maxima рассматривает как нуль и при наличии апострофа. Соответственно co s(2 π ) для Maxima в точности равен единице.

С другой стороны, чтобы принудительно заставить выражение вычислить, то есть перевести его в действующую форму, следует поставить одиночную кавычку два раза (применить оператор действующей формы – ′′ ).

3.5. Вызов справки

Трудно предусмотреть многообразие возможных вариантов записи команд с целью использования Maxima для расчета или преобразования выражений. В сложных случаях можно попытаться получить справку на английском языке.

Для вызова справки следует написать? topic и вызвать интерпретатор нажатием Shift +Enter , где topic – эта ключевое слов (тема) справки.

Команда?? topic вызывает поиск по всем темам справки, содержащим ключевое слово topic .

В следующем примере мы хотели спросить про знак факториала, но не поставили пробел после знака вопроса (ошиблись). Maxima ответила, что не существует точно такой, как в запросе, (exact match ) темы.

И посоветовала попытаться (Try ) вторично (??) спросить с целью получения не вполне точного ответа. О том, что ответ был неудовлетворителен, Maxima сообщила в виде false в строке ответа (%о1).

В следующем вопросе мы также ошиблись (опять не поставили пробел), но хотели спросить про функцию cos (x ), получилось непонятно для программы и поэтому вообще никакого ответа не получили.

В случае с факториалом (!) при вторичном запросе Maxima дала исчерпывающий ответ (который мы немного сократили)

В ответе Maxima сначала создала нумерованный список ответов (в данном случае у неё два номера 0 и 1), затем предложила ввести разделённые пробелом (space - separated ) номера разделов или указать все (all ) или никакие (none ) из них. После уточнения (а ), которое она поняла как (all ), Maxima напечатала справку по запрашиваемое теме "факториал".

3.6. Ввод числовой информации

Правила ввода чисел в Maxima точно такие, как и для многих других подобных программах. Целая и дробная часть десятичных дробей разделяются символом точка . Перед отрицательными числами ставится знак минус . Числитель и знаменатель обыкновенных дробей разделяются при помощи символа / (прямой слэш ).

Обратите внимание, что если в результате выполнения операции получается некоторое символьное выражение, а необходимо получить конкретное числовое значение в виде десятичной дроби, то решить эту задачу позволит применение опции numer . В частности, опция numer позволяет перейти от обыкновенных дробей к десятичным:

Здесь Maxima прежде всего действовала по умолчанию. Она сложила дроби 3/7 и 5/3 по правилам арифметики точно: нашла и привела дроби к общему знаменателю и сложила числители. В итоге она получила 44/21. Лишь после того, как мы попросили её получить численный ответ, она вывела приближенный, с точностью 16 знаков, численный ответ 2,095238095238095.

3.7. Возведение в степень и старшинство операций

Как уже отмечалось выше, обозначения арифметических операций в Maxima не отличаются от классического представления, используются те же математические знаки: + – * /. Но возведение в степень предусмотрено обозначать тремя способами: ^ , ^^ , **.

Извлечение квадратного корня производит функция sqrt(),извлечение корня степени n записывают как степень ^^(1/n ).

В Maxima определены стандартные операции – нахождение факториала числа, (например, 6! = 1 · 2 · 3 · 4 · 5 · 6 = 120) и нахождение двойного факториала (например, 6!! =2 · 4 · 6 = 48; 7! = 1 · 3 · 5 ·7 = 105).

Для увеличения приоритета операции при записи команд для Maxima используют круглые () скобки.

Как видно из приведённых результатов вычислений (%о13)–(%iо5), Maxima правильно понимает старшинство операций: сначалавыполнила возведение в степень и только потом операцию деления. Выполняя команду (%i13), она возвела в степень 1 и разделила результат на 3, но при выполнении команды (%i14) вычислила корень третьей степени, результат (%о15) равен произведению (%о13) и (%о14).

3.8. Константы

В Maxima для удобства вычислений есть ряд встроенных констант, самые распространенные из них показаны в следующей таблице (табл. 1):

Таблица 1

Названия констант и их обозначение в Maxima

Название

Обозначение

π (число Пифагора)

e (Эйлерово число)

Мнимая единица ()

+∞ (плюс бесконечность)

– ∞ (минус бесконечность)

minf

Истина

true

Ложь

false

Комплексная бесконечность

infinity

слева (в отношении пределов)

minus

справа (в отношении пределов)

plus

Золотое сечение ()

%phi

3.9. Переменные и выражения

Для хранения результатов промежуточных расчетов используются переменные. Заметим, что при вводе названий переменных, функций и констант важен регистр букв. Так, переменные x и X – это две разные переменные.

Присваивание значения переменной осуществляется с использованием символа : (двоеточие), например x: 5.

Если необходимо удалить значение переменной (очистить ее), то применяется метод kill : kill (x ) – удаляет значение переменной x, а команда kill(all) – удаляет значения всех используемых ранее переменных. И, кроме того, метод kill начинает новую нумерацию для исполняемых команд (обратите внимание, что ответом на команду (%i3), приведенную ниже, оказался ответ с номером ноль (%o0) done , и далее нумерация команд снова началась с единицы).

Напомним также, что в одной строке (см. % i 1), можно записать несколько команд, разделяя последние символом ; (точка с запятой) или знаком $ (доллар), если нам не требуется вывод результата на монитор.

Математические операции в Maxima используются для записи выражений. Всё в Maxima является выражениями, в том числе математические выражения как таковые, а также объекты и программные блоки. Простейшее выражение представляет собой атом, либо оператор с аргументами.

Атом - символ (имя), строка в двойных кавычках, либо число (целое или с плавающей точкой). Все выражения не-атомы представляются в виде oper (a1 ,.., aN ), где oper - имя оператора, a1,..., aN - его аргументы. Выражения могут отображаться по-разному, но внутреннее представление всегда одинаково. Аргументы выражения могут быть атомами, либо выражениями не-атомами.

Команда op возвращает оператор, args возвращает аргументы, atom определяет, является ли выражение атомом.

Например :

Функция symbolp возвращает «true», если её аргумент является символом.

Функция двух аргументов freeof(,) возвращает «true», если второй её аргумент свободен (не содержит) первого аргумента.

Функция zeroequiv(,) проверяет, является ли её аргумент –функция одного аргумента – нулём. Zeroequiv возвращает «true», если её аргумент равен нулю и «false» в противном случае.

Функция zeroequiv может быть полезной в тех случаях, когда в результате ряда преобразований нет уверенности в том, что полученная функция тождественна исходной.

3.10. Математические функции

В Maxima имеется большой набор встроенных математических функций. Наиболее часто используемые приведены в табл. 2.

Таблица 2

Встроенные математические функции Maxima

Функции

Обозначение

Тригонометрические

sin (синус),

cos (косинус),

tan (тангенс),

cot (котангенс)

Обратные

тригонометрические

asin (арксинус),

acos (арккосинус),

atan (арктангенс),

acot (арккотангенс)

Секонс, косеконс

sec (x) = 1/cos (x), (секонс ),

csc (x) = 1/sin (x), (косеконс )

Натуральный логарифм

log()

квадратный корень

sqrt()

модуль

abs()

остаток от деления

mod(,)

Минимальный из списка

min(x1, ... ,xN)

Максимальный из списка

max(x1, ... ,xN)

Знак аргумента

Pos (x>0),

Zero (x=0),

sign(x); = neg (x<0),

Pnz – (не определен)

Случайное число

random (N ) – целое, из промежутка

если N –целое

random (float (P )) – число с плавающей точкой

Следует иметь в виду, что некоторые названия функций отличаются от названий, используемых в отечественной литературе. В Maxima используется вместо tg – tan, вместо ctg – cot, вместо arcsin – asin, вместо arccos – acos, вместо arctg – atan, вместо arcctg – acot, вместо ln – log, вместо cosec – csc.

Примеры использования функций:

3.11. Правило записи функций

Для записи функции необходимо указать ее название, а затем, в круглых скобках записать через запятую значения аргументов. Если значением аргумента является список, то он заключается в квадратные скобки, а элементы списка также разделяются запятыми.

3.12. Пользовательские функции

Пользователь может задать собственные функции. Для этого сначала указывается название функции, в скобках перечисляются названия аргументов, после знаков := (двоеточие и равно) следует описание функции, которое может быть нематематическим. После задания пользовательская функция вызывается точно так, как и встроенные функции Maxima .

Нужно помнить, что не следует использовать для функций названия, зарезервированные для встроенных функций Maxima (записанные выше в табл. 2).

3.13. Перевод сложных выражений в линейную форму записи

Одним из самых сложных занятий для начинающих пользователей системы Maxima является запись сложных выражений, содержащих степени, дроби и другие конструкции, в линейной форме (в текстовой форме записи, при помощи ASCII символов, в одну строку).

Для облегчения данного процесса нелишне дать несколько рекомендаций:

1. Не забывайте ставить знак умножения! В графическом окне Maxima по правилам математики удвоенное значение переменной х записывает в виде 2x , но при записи команда для Maxima должна выглядеть как 2*x.

2. Но между именем функции и скобкой с аргументом знак умножения не пишется; sin *(x ) – здесь знак умножения лишний.

3. В случае сомнения всегда лучше перестараться и поставить «лишние», дополнительные скобки (). Числитель и знаменатель выражения всегда необходимо заключать в скобки. При записи возведения в степень основание и степень лучше всегда брать в скобки.

4. Функция не существует отдельно от своих аргументов (если таковые имеются). Поэтому, например, при возведении в степень функции некоторого аргумента следует взять всю функцию с аргументами в скобки, а потом уже возводить полученную конструкцию в нужную степень: (sin (x ))**2. Очень часто начинающие пользователи пытаются возвести в степень только название функции, забывая про аргументы: sin **2(x ) – это неправильно!

5. Также необходимо помнить, что несколько аргументов функции записываются в скобках, через запятую,например min (x 1, x 2, x 3, xN ).

6. Недопустима запись функции sin (2* x ) в виде sin *2* x или sin 2 x . Запомните, как действует Maxima при записи скобок: как только вы пытаетесь написать открывающую скобку, она тут же пишет вторую – парную ей – закрывающую скобку. Поэтому при записи функций напишите название функции, затем поставьте после нее пустые скобки и только потом в этих скобках напишите все ее аргументы, разделяя их запятыми. Никаких конструкций между названием функции и открывающейся скобкой быть не должно!

7. В случае записи сложного выражения разбейте его на несколько простых составляющих, введите их по отдельности, а затем объедините, используя рассмотренные ранее обозначения.

Примеры простых команд для Maxima :

Математическая запись

Команда для Maxima

(x+2)/(y–7)

(x+3)**(2*y)

sin((x–2)/(a+3))

((x–2)/(a+3)+2)/(4–(y–7)/(b+4))+12*x

Упражнение: Н еобходимо ввести следующее выражение:

Указания к выполнению: Разделим это выражение на три составные части: будем отдельной частью считать числитель, выражение, стоящее в знаменателе в скобках, и степень. Введем каждую названную составную часть, и объединим их в выражение.

При вводе команд строку с ошибочной записью команды для Maxima можно выделить и удалить с графического экрана (с клавиатуры), а вместо неё написать и выполнить (с клавиатуры нажатием Shift + Enter ) правильную команду, следует ожидать, что номер ответа при этом изменится.

Если щёлкнуть мышкой в незакрашенный треугольник, то треугольник закрасится, а строка с результатом будет скрыта, при этом появится запись (1 lines hidden). Чтобы удалить с экрана и ответ, и команду (блок, отмеченный слева квадратной скобкой), следует щелчком мыши выделить квадратную скобку у пары ввод–ответ, вызвать щелчком правой кнопки мыши контекстное меню и выбрать опцию Delete Selection. Так в предыдущих примерах строки с командой (%i4) и с ответом (%o4) нет – они удалены.

Заметим также, что при записи команды для Maxima (%o1)/(%o2)**(%o3) в строке (%i5) вполне допустимо перестраховаться и написать иначе, используя дополнительные скобки для знаменателя: (%o1)/((%o2)**(%o3)). Но Maxima правильно нас поняла и без этих «лишних скобок» и вычислила вводимое выражение математически правильно, поскольку понимает принятое в математике старшинство операций : прежде всего вычисляются аргументы (так как находятся в скобках) и функции, потом выполняется возведение в степень, затем операции деление и умножение и только потом – сложение и вычитание.

by 0):
а) y :2/ x ; x :0; б) u :0; v :2/ u ; в) z :0; t :2/ Z ; и почему?

3. Что является оператором в выражениях а) x^y; б) – t; в) x + y;?

4. Что ответитMaxima, если исполнить команду: u – v; op(%);?

5. Чему равнывыражения: а) 4 * – 2; б) 4 * + 2; в) 4 ** – 2;?

6. Что является аргументами в выражении fas (p , q ) := p – q ?

7. Является ли атомом выражение abc?

8. Почему в следующих примерахMaxima сумела численно рассчитать tg(π /2) и, но отказалась делать численные вычисления для ctg(0)?

9. Какой ответ даст Maxima, если команда для неё будет такой:

10. Что больше e π или π e ?

11. На сколько процентов большее из сравниваемых чисел превышает меньшее?

12. Что ответит Maxima, если команда для неё будет такой:

После запуска Maxima появляется окно программы, в верхней графической части окна интерфейса указано, какая загружена версия. Попробуем набрать несколько команд. Разделителем команд является символ “ ; ” (в ранних версиях Maxima и некоторых ее оболочках наличие точки с запятой после каждой команды строго обязательно, поэтому рекомендуется добавлять; после каждой команды).

После ввода команды необходимо нажать клавиши Shift и Enter для ее обработки и вывода результата. После ввода каждой команде присваивается порядковый номер (%i1), (%i2), (%i3) и т.д. Результаты вычислений имеют соответственно порядковый номер (%o1), (%o2) и т. д. Где "i" -сокращение от англ. input (ввод), а "o" - англ. output (вывод). Это позволяет при дальнейшей записи команд сослаться на ранее записанные, например (%i1)+(%i2) будет означать добавление к выражению первой команды выражения второй с последующим вычислением результата. Также можно использовать и номера результатов вычислений, например, таким образом (%o1)*(%o2). maxima математика график функция

Используемые обозначения для ввода команд. Ввод числовой информации

Правила ввода чисел в Maxima точно такие, как и для многих других подобных программ:

  • * Целая и дробная часть десятичных дробей разделяются символом точка.
  • * Перед отрицательными числами ставится знак минус.
  • * Числитель и знаменатель обыкновенных дробей разделяется при помощи символа / (прямой слеш).

Обратите внимание, что если в результате выполнения операции получается некоторое символьное выражение, а необходимо получить конкретное числовое значение в виде десятичной дроби, то решить эту задачу позволит применение оператора numer. В частности он позволяет перейти от обыкновенных дробей к десятичным.

Константы

В Maxima для удобства вычислений есть ряд встроенных констант:

Арифметические операции

Для обозначения арифметических операций в Maxima используются математические знаки: «+» - сложение, «-» - вычитание, «*» - умножение, «/»- деление.

Возведение в степень можно обозначать тремя способами: ^ , ^^ , **.

Извлечение корня степени n записывают, как степень ^^(1/n ).

Напомним еще одну встроенную в Maxima полезную операцию - нахождение факториала числа. Эта операция обозначается восклицательным знаком.

Например, 6!=1. 2. 3. 4. 5. 6=120.

Для увеличения приоритета операции, как и в математике, при записи команд для Maxima используют круглые () скобки.

Переменные

Для хранения результатов промежуточных расчетов применяются переменные. Заметим, что при вводе названий переменных, функций и констант важен регистр букв, так переменные x и X - это две разные переменные. Присваивание значения переменной осуществляется с использованием символа

: (двоеточие), Например, x : 5- «переменной х присвоено значение 5» или b: a^2+3 - «переменная b будет иметь значение равное а2+3 ». -

Если необходимо удалить значение переменной (очистить ее), то применяется метод kill:

kill(x ) - удалить значение переменной x ;

kill(all) - удалить значения всех используемых ранее переменных.

Кроме того, kill начинает новую нумерацию для исполняемых команд.

Математические функции

В Maxima имеется достаточно большой набор встроенных атематических функций. Для записи функции необходимо указать ее название, а затем, в круглых скобках записать через запятую значения аргументов.

Например, sin(x );

Следует иметь в виду, что некоторые названия функций отличаются от названий, используемых в отечественной литературе:

Обозначение

Тригонометрические

sin(x) (синус),

cos(x) (косинус),

tan(x) (тангенс),

cot(x) (котангенс),

sec(x) (секанс,),

csc(x) (косеканс,).

Обратные тригонометрические

asin(x) (арксинус),

acos(x) (арккосинус),

atan(x) (арктангенс),

acot(x) (арккотангенс).

Гиперболические

sinh(x) (гиперболический синус),

cosh(x) (гиперболический косинус),

tanh(x) (гиперболический тангенс),

coth(x) (гиперболический котангенс),

sech(x) (гиперболический секанс),

csch(x) (гиперболический косеканс).

Натуральный логарифм,

Остаток от деления

Квадратный корень

Минимальный элемент из списка

Максимальный элемент из списка

Пользовательские функции

Пользователь может задать собственные функции. Для этого сначала указывается название функции, в скобках перечисляются названия аргументов, после знаков:= (двоеточие и равно) следует описание функции. После задания пользовательская функция вызывается точно так, как и встроенные функции Maxima .