THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама

В системе 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 .

Цель: продолжить знакомство с программой 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 .

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

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

Ключевые особенности и функции

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


Операции математического анализа

Суммы

Для нахождения сумм предназначена функция sum. Синтаксис функции:

Sum(выражение, переменная, нижняя граница изменения переменной, верхняя граница изменения переменной)

Например:

Если присвоить последнему аргументу значение системной переменной положительной бесконечности "inf", то это станет признаком отсутствия верхней границы и будет рассчитываться бесконечная сумма. Так же бесконечная сумма будет рассчитываться, если присвоить аргументу "нижний предел изменения переменной" значения системной переменной отрицательной бесконечности "minf". Эти же значения используется и в других функциях математического анализа.

Например:


Произведения

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

Например:


Пределы

Для нахождения пределов используется функция limit.

Синтаксис функции:

limit(выражение, переменная, точка разрыва)

Если аргументу "точка разрыва" присвоить значение "inf", то это будет признаком отсутствия границы.

Например:

Для вычисления односторонних пределов используется дополнительный аргумент, который имеет значение plus для вычисления пределов справа и minus - слева.

Например, выполним исследование непрерывности функции arctg(1/(x - 4)). Эта функция неопределенна в точке x = 4. Вычислим пределы справа и слева:

Как видим, точка x = 4 является точкой разрыва первого рода для данной функции, поскольку существуют границы слева и справа, которые равняются соответственно -PI/2 и PI/2.


Дифференциалы

Для нахождения дифференциалов используется функция diff. Синтаксис функции:

diff(выражение, переменная1, порядок производной для переменной1 [,переменная2, порядок производной для переменной2,…])

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

Например:

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

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

Если использовать параметрическую функцию, то форма записи функции изменяется: после имени функции записываются символы ":=", а обращение к функции осуществляется через ее имя с параметром:

Производная может быть вычислена в заданной точке. Это осуществляется так:

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


Интегралы

Для нахождения интегралов в системе используется функция integrate. Для нахождения неопределенного интеграла в функции используются два аргумента: имя функции и переменная, по которой происходит интегрирование. Например:

В случае неоднозначного ответа Maxima может задать дополнительный вопрос:

Ответ должен содержать текст из вопроса. В данном случае, если значение переменной y больше "0", это будет "positive" (положительное), а иначе - "negative" отрицательное). При этом допускается ввод только первой буквы слова.

Для нахождения определенного интеграла в функции следует указать дополнительные аргументы: пределы интеграла:

Maxima допускает задания и бесконечных пределов интегрирования. Для этого для третьего и четвертого аргументов функции используются значения "-inf" и "inf":

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

Способна система вычислять и кратные интегралы. Для этого функции integrate вкладываются одна в другую. Ниже приводятся примеры вычисления двойного неопределенного интеграла и двойного определенного интеграла :


Решения дифференциальных уравнений

По своим возможностями в части решения дифференциальных уравнений Maxima ощутимо уступает, например, Maple. Но Maxima все же позволяет решать обычные дифференциальные уравнения первого и второго порядков, а также их системы. Для этого - в зависимости от цели - используют две функции. Для общего решения обычных дифференциальных уравнений используется функция ode2, а для нахождения решений уравнений или систем уравнений по начальным условиям - функция desolve.

Функция ode2 имеет такой синтаксис:

ode2(уравнение, зависимая переменная, независимая переменная);

Для обозначения производных в дифференциальных уравнениях используется функция diff. Но в этом случае с целью отображения зависимости функции от ее аргумента она записывается в виде "diff(f(x), x), а сама функция - f(x).

Пример. Найти общее решение обычного дифференциального уравнения первого порядка y" - ax = 0.

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

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

Осуществить решение обычного дифференциального уравнения можно и другим, более простым для пользователя, способом. Для этого следует выполнить команду Уравнения > Solve ODE (Решить обычное дифференциальное уравнение) и в окне "Решить ОДУ" ввести аргументы функции ode2.

Maxima позволяет решать дифференциальные уравнения второго порядка. Для этого также применяют функцию ode2. Для обозначения производных в дифференциальных уравнениях используется функция diff, в которой добавляют еще один аргумент - порядок уравнения: "diff(f(x), x, 2). Например решение обычного дифференциального уравнения второго порядка a·y"" + b·y" = 0 будет иметь вид:

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

  1. ic1(результат работы функции ode2, начальное значение независимой переменной в виде x = x 0 , значение функции в точке x 0 в виде y = y 0). Предназначена для решения дифференциального уравнения первого порядка с начальными условиями.
  2. ic2(результат работы функции ode2, начальное значение независимой переменной в виде x = x 0 , значение функции в точке x 0 в виде y = y 0 , начальное значение для первой производной зависимой переменной относительно независимой переменной в виде (y,x) = dy 0). Предназначена для решения дифференциального уравнения второго порядка с начальными условиями
  3. bc2(результат работы функции ode2, начальное значение независимой переменной в виде x = x 0 , значение функции в точке x 0 в виде y = y 0 , конечное значение независимой переменной в виде x = x n , значение функции в точке x n в виде y = y n). Предназначена для решения краевой задачи для дифференциального уравнения второго порядка.

Подробно с синтаксисом этих функций можно ознакомиться в документации к системе.

Выполним решение задачи Коши для уравнения первого порядка y" - ax = 0 с начальным условием y(п) = 1.

Приведем пример решения краевой задачи для дифференциального уравнения второго порядка y""+y=x с начальными условиями y(o) = 0; y(4)=1.

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

В таких случаях Maxima или выдает сообщение об ошибке (как в данном примере) или просто возвращает значение "false".

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

Синтаксис функции:

desolve(дифференциальное уравнение, переменная);

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

desolve([список уравнений], [переменная1, переменная2,...]);

Так же как и для предыдущего варианта, для обозначения производных в дифференциальных уравнениях используется функция diff, которая имеет вид "diff(f(x), x).

Начальные значения для переменной предоставляются функцией atvalue. Эта функция имеет такой синтаксис:

atvalue(функция, переменная = точка, значение в точке);

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

atvalue(функция, переменная = 0, значение в точке "0");

Пример. Найти решение дифференциального уравнения первого порядка y"=sin(x) с начальным условием.

Заметим, что и при отсутствии начального условия функция также сработает и выдаст результат:

Это позволяет осуществить проверку решения для конкретного начального значения. Действительно, подставляя в полученный результат значение y(0) = 4, как раз и получаем y(x) = 5 - cos(x).

Функция desolve дает возможность решать системы дифференциальных уравнений с начальными условиями.

Приведем пример решения системы дифференциальных уравнений с начальными условиями y(0) = 0; z(0) = 1.


Обработка данных

Статистический анализ

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

Самым простым способом расчета статистических описательных статистик является использование палитры "Statistics" (Статистика).

Панель содержит ряд инструментов, сгруппированных в четыре группы.

  1. Статистические показатели (описательные статистики):
    • mean (средняя арифметическая);
    • median (медиана);
    • variance (дисперсия);
    • deviation (среднее квадратичное отклонение).
  2. Тесты.
  3. Построение пяти типов графиков:
    • гистограмма (Histogram). Используется в первую очередь в статистике для изображения интервальных рядов распределения. Во время ее построения по оси ординат откладывают части или частоты, а на оси абсцисс - значения признака;
    • диаграмма рассеяния (диаграмма корреляции, поле корреляции, Scatter Plot) - график по точкам, когда точки не соединяются. Используется для отображения данных для двух переменных, одна из которых является факторной, а другая - результативной. С ее помощью осуществляется графическое представление пар данных в виде множества точек ("тучи") на координатной плоскости;
    • ленточная диаграмма (Bar Chart) - график в виде вертикальных столбцов;
    • секторная, или круговая, диаграмма (Pie Chart). Такая диаграмма разделена на несколько сегментов-секторов, площадь каждого из которых пропорциональна их части;
    • коробочная диаграмма (коробка с усами, шкатулка с усами, Box Plot, box-and-whisker diagram). Именно она чаще всего используется для изображения статистических данных. Информация такого графика является очень содержательной и полезной. Он одновременно отображает несколько величин, которые характеризуют вариационный ряд: минимальное и максимальное значение, среднюю и медиану, первый и третий квартиль.
  4. Инструменты для считывания или создания матрицы. Для использования инструментов палитры необходимо иметь начальные данные в виде матрицы - одномерного массива. Его можно создать в документе с текущей сессией и в дальнейшем подставлять его название как входные данные в окнах инструментов палитры аналогично решению уравнений с помощью панели общих математических действий (General Math). Можно и непосредственно задавать в данные в окнах ввода входных данных. В этом случае они вводятся в принятом в системе виде, то есть в квадратных скобках и через запятую. Понятно, что первый вариант является значительно лучшим, поскольку он требует только одноразового введения данных.

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

Математический пакет Maxima - одна из лучших бесплатных замен маткаду.

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

  • Предисловие
  • Глава 1. Основы работы в системе компьютерной математики Maxima
    • 1.1. О системе Maxima
    • 1.2. Установка Maxima на персональный компьютер
    • 1.3. Интерфейс основного окна Maxima
    • 1.4. Работа с ячейками в Maxima
    • 1.5. Работа со справочной системой Maxima
    • 1.6. Функции и команды системы Maxima
    • 1.7. Управление процессом вычислений в Maxima
    • 1.8. Простейшие преобразования выражений
    • 1.9. Решение алгебраических уравнений и их систем
    • 1.10. Графические возможности
  • Глава 2. Численные методы решения дифференциальных уравнений
    • 2.1. Общие сведения о дифференциальных уравнениях
    • 2.2. Численные методы решения задачи Коши для обыкновенного дифференциального уравнения первого порядка
      • 2.2.1. Метод Эйлера
      • 2.2.2. Метод Эйлера-Коши
      • 2.2.3. Метод Рунге-Кутта 4 порядка точности
    • 2.3. Решение краевых задач для обыкновенных дифференциальных уравнений методом конечных разностей
    • 2.4. Метод сеток для решения дифференциальных уравнений в частных производных
  • Глава 3. Нахождение решений дифференциальных уравнений в системе Maxima
    • 3.1. Встроенные функции для нахождения решений дифференциальных уравнений
    • 3.2. Решение дифференциальных уравнений и их систем в символьном виде
    • 3.3. Построение траекторий и поля направлений дифференциальных уравнений.
    • 3.4. Реализация численных методов решения задачи Коши для обыкновенных дифференциальных уравнений
      • 3.4.1. Метод Эйлера
      • 3.4.2. Метод Эйлера-Коши
      • 3.4.3. Метод Рунге-Кутта
    • 3.5. Реализация конечно-разностного метода решения краевой задачи для обыкновенных дифференциальных уравнений
    • 3.6. Реализация метода сеток для дифференциальных уравнений в частныхпроизводных
  • Задания для самостоятельного решения
  • Литература

Предисловие

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

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

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

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

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

Современные системы компьютерной математики представляют собой программы с многооконным графическим интерфейсом, развитой системой помощи, что облегчает их освоение и использование. Основными тенденциями развития СКМ являются рост математических возможностей, особенно в сфере аналитических и символьных вычислений, существенное расширение средств визуализации всех этапов вычислений, широкое применение 2D- и 3D-графики, интеграция различных систем друг с другом и другими программными средствами, широкий доступ в Internet, организация совместной работы над образовательными и научными проектами в Internet, использование средств анимации и обработки изображений, средств мультимедиа и др.

Существенным обстоятельством, которое до недавнего времени препятствовало широкому использованию СКМ в образовании, является дороговизна профессионального научного математического обеспечения. Однако в последнее время многие фирмы, разрабатывающие и распространяющие такие программы, представляют (через Internet - http://www.softline.ru) для свободного использования предыдущие версии своих программ, широко используют систему скидок для учебных заведений, бесплатно распространяют демонстрационные или пробные версии программ .

Кроме того, появляются бесплатные аналоги систем компьютерной математики, например, Maxima, Scilab, Octave и др.

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

Почему именно Maxima?

Во-первых, система Maxima - это некоммерческий проект с открытым кодом. Maxima относится к классу программных продуктов, которые распространяются на основе лицензии GNU GPL (General Public License).

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

В-третьих, в настоящее время у системы Maxima есть мощный, эффективный и «дружественный» кроссплатформенный графический интерфейс, который называется WxMaxima (http://wxmaxima.sourceforge.net).

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

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

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

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

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

Т.Н. Губина, Е.В. Андропова
Елец, июль 2009

P.S. Быстрый старт: для выполнения команд и функций в mwMaxima нужно непосредственно сначала ввести саму команду и затем нажать crtl+Enter.

THE BELL

Есть те, кто прочитали эту новость раньше вас.
Подпишитесь, чтобы получать статьи свежими.
Email
Имя
Фамилия
Как вы хотите читать The Bell
Без спама