В системе 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) Экспонента х

11. Функции для работы с матрицами:

determinant – нахождение определителя матрицы:

eigenvalues – нахождение собственных значений матрицы:

invert – получение обратной матрицы:

minor – определяет минор матрицы. Первый аргумент – матрица, второй и

третий – индексы строки и столбца соответственно:

rank – ранг матрицы:

submatrix – возвращает матрицу, полученную из исходной удалением

соответствующих строк и (или) столбцов. В качестве параметров следуют

номера удаляемых строк, исходная матрица, номера удаляемых столбцов.

transpose – транспонирование матрицы:

В языке системы 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. Например, для формирования двумерного массива (матрицы) следует задать команду в следующем виде:

Выведем полученный массив:

6. Простейшие преобразования выражений.

По умолчанию в системе 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().


Система компьютерной математики Maxima -- настоящий ветеран среди программ этого класса. Она старше многих своих известных коммерческих собратьев по крайней мере на два десятка лет. Первоначально носившая имя Macsyma, она была создана в конце 1960-х годов в знаменитом Массачусетском технологическом институте и почти 20 лет (с 1982 по 2001) поддерживалась Биллом Шелтером (William Schelter), благодаря которому и приобрела свои замечательные качества и известность в научном мире. Подробности по истории системы, инсталляционный модуль (размером всего в 10 MB), документацию, исходный код и другую сопутствующую информацию можно найти на Web-узле пакета . Текущая версия (5.9.0) работает под управлением Windows и Linux.

Несмотря на скромные размеры, Maxima -- высокоинтеллектуальный продукт, способный решать сложные аналитические задачи. Как и большинство систем компьютерной математики, она является командным интерпретатором, взаимодействующим с пользователем по принципу "вопрос -- ответ". Поэтому рабочая область системы представляет собой последовательность ячеек ввода/вывода (рис. 1), маркированных меткой (С -- для ввода пользователя, D -- для результата) и номером. Такой способ обозначения обеспечивает удобный механизм ссылок, позволяющий для обращения к одному из предыдущих результатов ввести только имя нужной ячейки.

Численные операции

Рис. 1
С какими бы выражениями ни работала Maxima, она всегда стремится к представлению результатов в точной аналитической форме. Это в полной мере относится и к численным расчетам. Например, если ввести в командной строке выражение 1/2+1/3 , то результатом будет 5/6 . Для того чтобы получить значение в виде числа с плавающей точкой, необходимо указать это явно. Простейший способ состоит в задании специального дескриптора numer через запятую после введенного выражения.

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

Отметим, что Maxima взвешенно подходит к регистру вводимых выражений. Если их вид близок к имени встроенной функции, программа использует эту функцию. Согласно данному правилу Sin , sin и SIN обозначают одно и то же. Вместе с тем пользовательские переменные и функции чувствительны к регистру -- X и x могут обозначать разные объекты.

Система также поддерживает комплексную арифметику и ряд известных математических констант.


Аналитические операции

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

В случае если для введенного выражения нельзя получить однозначный результат, программа практически на естественном (английском) языке задаст наводящие вопросы. К примеру, при попытке найти интеграл от функции x n Maxima уточнит, не равно ли n+1 нулю (как известно, от этого существенно зависит результат). Впрочем, таких вопросов можно избежать, если заранее с помощью специальных операторов указать область изменения используемых параметров и переменных.

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


Операции линейной алгебры

В Maxima реализован весьма совершенный механизм векторно-матричных операций, позволяющий проводить сложные алгебраические вычисления. Матрицы вводятся универсальным оператором matrix , затем к ним применимы обычные линейные операции -- сложение, вычитание, умножение на скаляр (для их записи используют естественную математическую нотацию вроде A+B ), а также транспонирование, обращение, вычисление определителей, спектральных характеристик и пр.


Графические возможности

Современная система компьютерной математики универсального типа обязана обладать развитыми возможностями визуализации данных. Имеются они и в Maxima. Графики в системе строятся с помощью двух функций -- PLOT2D (двумерные, рис. 2) и PLOT3D (трехмерные, рис. 3). Несмотря на этот относительно небогатый выбор, названные инструменты позволяют выводить графики разных типов на плоскости и в пространстве с достаточно тонкими настройками -- посредством специальных операторов или аргументов функций задаются количество узлов сетки, на которой строится требуемый график, диапазоны данных, цветовые и другие характеристики. Кроме того, можно воспользоваться интерактивными настройками для быстрого изменения толщины линий, поворота трехмерной поверхности и т. д. Выбор форматов экспорта Maxima весьма узок: рисунки в программе сохраняются, по сути, только в PostScript. В целом же визуальные инструменты системы относительно скромны, хотя и дают возможность получить качественные графики некоторых типов.


Средства программирования

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

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

MyFunc(x,y):=x^2+y^2;

Затем MyFunc можно применять наряду со встроенными. Конечно же, система поддерживает и более сложные конструкции. В теле функции допускаются операторы ветвления, циклов, ввода/вывода и т. д. Язык программирования в Maxima имеет некоторые особенности, важнейшей из которых является то, что число аргументов функции не обязано быть фиксированным. Другая состоит в чрезвычайно гибких средствах для работы с массивами, которые редко встретишь не только в традиционных языках, но и специализированных системах, в том числе СКМ. Вот несколько примеров, заимствованных из одного руководства (двоеточие в Maxima означает присваивание):
a:4*u;
a:%PI;
a[x]:mystery;

Все операторы корректны и задают в совокупности массив, индексами которого служат числа 4 , 22/7 и строка "x" , а значениями элементов -- выражение 4*u , число π (в Maxima оно записывается как %PI) и строка символов "mystery" . Таким образом, как элементом массива, так и его индексом может выступать практически любое выражение. Оригинальные свойства Maxima вовсе не ограничиваются этими особенностями (например, поддерживаются даже массивы функций), но мы не будем останавливаться на деталях.

Вообще, Maxima написана на языке Lisp и непосредственно поддерживает многие его команды. Можно сказать, что Lisp является ядром системы, и к нему допускается обращаться при "низкоуровневом" программировании. Впрочем, в большинстве случаев этого не требуется. Maxima предоставляет достаточное количество уже готовых средств, использовать которые значительно проще, чем Lisp-операторы.

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

Забота о пользователе

Кроме документации, доступной на Web-узле продукта, в комплект поставки входят введение в Maxima и учебник по системе (оба в формате HTML) -- детальное описание, достаточное для углубленного ознакомления со всеми ее возможностями. Однако во время сеанса работы с системой нередко необходимо получить оперативную справку. Для этого Maxima предоставляет функцию DESCRIBE() , которая выводит подробные сведения об интересующем пользователя операторе (который передается ей в качестве аргумента). Не беда, если вы не помните его полный синтаксис, введите несколько первых букв названия -- и Maxima выдаст все доступные имена, начинающиеся с данной комбинации символов. Если же этих сведений окажется недостаточно, то можно воспользоваться функцией EXAMPLE() , которая предложит характерные примеры. К функциям этого же ряда принадлежит DEMO() , выполняющая программы из демонстрационных файлов, поставляемых с системой. Хотелось бы отметить такую особенность системы, как возможность представления результатов вычислений в формате TeX с помощью функции, которая так и называется -- TEX() .


Выводы

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

0

Тема : Система команд, вычисления в 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 .

Оператор цикла

Оператор цикла может задаваться несколькими способами. Способ задания зависит от того, известно ли заранее сколько раз необходимо выполнить тело цикла.

Пример: задание цикла для вывода значений переменной а в диапазоне от -3 до 10 с шагом 5:

Пример: цикл для нахождения суммы всех натуральных чисел до числа 50 включительно:

Следующей важной возможностью системы Maxima является работа со списками и массивами .

Для формирования списков используется команда makelist. Например, с помощью команды

мы сформировали список с именем x, состоящий из десяти элементов, значе-

Для формирования массивов используется команда array. Например с помощью команды,

мы сформировали двумерный массив A, состоящий из 10 строк и 5 столбцов. Для заполнения массива элементами воспользуемся циклом с параметром. Например,

Т.Н. Губина, Е.В. Андропова

Для вывода элементов массива на экран можно воспользоваться командой:

Массив можно формировать и без предварительного объявления. В следующем примере мы сформировали одномерный массив x, состоящий из 5 элементов, значения которых вычисляются по формуле x i = sin i .

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

Выведем полученный массив:

1.7. Управление процессом вычислений в Maxima

Система компьютерной математики Maxima относится к системам символьной математики. Поэтому (по умолчанию) система выдает результат в символьном виде. То есть, если не задавать специальную команду, система

Глава 1 Основы работы в системе компьютерной математики Maxima

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

Если же возникает необходимость представить полученный в ходе расчетов результат в виде вещественного числа, то в этом случае требуется дать специальную команду системе. Например, можно поступить так: если требуется получить приближенное значение 2 , то выбираем пункт менюЧисленные расчеты→To float (в число с одинарной точностью) (илиTo BigFloat

(в число с двойной точностью)). Результат будет выглядеть так:

Знак «%» в Maxima используется для обращения к результату, полученному в последней сессии работы. Это бывает удобно, если нет необходимости вводить переменные пользователя и в дальнейшем использовать полученные значения.

Для управления процессом вычислений предусмотрена возможность так называемой «блокировки вычислений» . Выполняется блокировка с помощью одинарного знака апострофа. Ее суть:

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

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

Например, зададим функцию f x и сравним результаты, полученные при попытке вычисления значения функции в точкеx = 0 .

Как видим, знак апострофа заблокировал попытку вычисления значения функции в первом случае.

Другой пример:

Т.Н. Губина, Е.В. Андропова

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

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

Обратим внимание на то, что в системе Maxima по умолчанию все углы измеряются в радианах. Поэтому если требуется работать с углами в градусах, для этого потребуется вспомнить формулу перевода из радиан в градусы.

В терминологии Maxima невычисленная форма выражения называется «noun form », вычисленная - «verb form ».

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

Например, требуется в выражение cos x 4sin x − x вместо переменнойх подставить конкретное значение, например, .

Глава 1 Основы работы в системе компьютерной математики Maxima

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

1.8. Простейшие преобразования выражений

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

Пример. Пусть требуется найти значение следующего числового выра-

1 1− 4

жения: 2 1 4 4 5 7 .

Зададим выражение по правилам языка системы Maxima.

Как видим, система в ответ вывела значение выражения, хотя мы не задали никакой команды.

Как же заставить систему вывести не результат, а само выражение? Для этого функцию упрощения надо отключить с помощью команды simp: false$. Тогда получим:

Для того чтобы активировать функцию упрощения, надо задать команду simp:true$. Функция автоупрощения может работать как с числовыми, так и с некоторыми не числовыми выражениями. Например,

Т.Н. Губина, Е.В. Андропова

При вводе мы можем обращаться к любой из предыдущих ячеек по ее имени, подставляя его в любые выражения. Кроме того, последняя ячейка вывода обозначается через %, а последняя ячейка ввода - через _. Это позволяет обращаться к последнему результату, не отвлекаясь на то, каков его номер. Но такими обращениями к ячейкам злоупотреблять не надо, поскольку при переоценивании всего документа или его отдельных ячеек ввода может произойти разногласие между номерами ячеек.

ченный результат в 5 раз.

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

Значения имен переменных сохраняются на протяжении всей работы с документом. Напомним, что если необходимо снять определение с переменной, то это можно сделать с помощью функции kill(name), где name - имя уничтожаемого выражения; причем это может быть как имя, назначенное вами, так и любая ячейка ввода или вывода. Точно так же можно очистить всю память и освободить все имена, введя команду kill(all) (или выбрать меню Maxima->Очистить память (Clear Memory) ). В этом случае очистятся в том числе и все ячейки ввода-вывода, и их нумерация опять начнется с единицы.

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

rat(выражение) - преобразовывает рациональное выражение к канонической форме: раскрывает все скобки, затем приводит все к общему знаменателю, суммирует и сокращает; приводит все числа в конечной десятичной записи к рациональным. Каноническая форма автоматически «отменяется» в случае любых преобразований, не являющихся рациональными

ratsimp(выражение) - упрощает выражение за счет рациональных преобразований. Работает в том числе и «вглубь», то есть иррациональные

Глава 1 Основы работы в системе компьютерной математики Maxima

части выражения не рассматриваются как атомарные, а упрощаются, в том числе, и все рациональные элементы внутри них

fullratsimp(выражение) - функция упрощения рационального выражения методом последовательного применения к переданному выражению функции ratsimp(). За счет этого функция работает несколько медленнее, чем ratsimp(), зато дает более надежный результат.

expand(выражение) - раскрывает скобки в выражении на всех уровнях вложенности. В отличии от функции ratexpand(), не приводит дроби-сла- гаемые к общему знаменателю.

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

Часто при попытке упрощения выражения в Maxima может происходить на самом деле только его усложнение. Увеличение результата может происходить из-за того, что неизвестно, какие значения могут принимать переменные, входящие в выражение. Чтобы этого избежать, следует накладывать ограничения на значения, которые может принимать переменная. Делается это с помощью функции assume(условие). Поэтому в некоторых случаях наилучшего результата можно добиться, комбинируя radcan() с ratsimp() или fullratsimp().

− a 2 b 2

aba1 / 4

Пример. Упростить выражение

b a b a 2 1 / 4

a 2− b 2.

Если применить к нашему выражению команду упростить рационально, то получим:

Применим функцию assume(условие) и наложим с ее помощью на некоторые переменные, входящие в выражение, ограничения на их значения:

Т.Н. Губина, Е.В. Андропова

Как видим, получили компактный результат.

1.9. Решение алгебраических уравнений и их систем

В система Maxima для решения линейных и нелинейных уравнений используется встроенная функция solve, имеющая следующий синтаксис:

solve (expr, x) – решает алгебраическое уравнение expr относительно переменнойx

solve (expr) – решает алгебраическое уравнение expr относительно неизвестной переменной, входящей в уравнение.

Например, решим линейное уравнение 5 x + 8 = 0 . Для этого воспользуемся кнопкойРешить на панели инструментов, при нажатии на которую появляется диалоговое окноРешить (Рис.13). Вводим исходное уравнение и нажимаемOK .

Рис. 13. Диалоговое окно для решения уравнений

В результате в рабочем документе сформируется команда для решения уравнения и выведется найденное решение:

Глава 1 Основы работы в системе компьютерной математики Maxima

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

Например, решим алгебраическое уравнение x 3 + 1 = 0 и выполним проверку найденных решений.

В результате получили три корня. Под именем resh у нас хранится список значений - корней уравнения. Элементы списка заключены в квадратные скобки и отделены один от другого запятой. К каждому такому элементу списка можно обратиться по его номеру. Воспользуемся этим при проверке решений: подставим поочередно каждый из корней в исходное уравнение.

С помощью команды allroots (expr) можно найти все приближенные решения алгебраического уравнения. Данную команду можно использовать в том случае, если команда solve не смогла найти решение уравнения или решение получается слишком громоздким, как, например, для следующего уравнения: (1 + 2 x )3 = 13.5(1 + x 5 ) .

Т.Н. Губина, Е.В. Андропова

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

ì x +2 y +3 z +4 k +5 m =13

2 x+ y+ 2 z+ 3 k+ 4 m= 10

2 x + 2 y + z + 2 k + 3 m = 11 может быть решена следующим образом:

2 x+ 2 y+ 2 z+ k+ 2 m= 6

ï 2 x +2 y +2 z +2 k +m =3

1. Сохраним каждое из уравнений системы под именами eq1, eq2, eq3, eq4, eq5.

2. Находим решение системы.

3. Выполним проверку найденного решения:

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

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

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

После запуска 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 .