Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Введение в пакет Maxima1

.pdf
Скачиваний:
30
Добавлен:
13.02.2015
Размер:
357.08 Кб
Скачать

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

Несколько примеров:

10

Все действия вполне очевидны, прокомментируем только некоторые из них. Каждая строка ввода в Maxima должна завершаться либо символом «;», либо символом «$». В первом случае операция будет выполнена и результат ее отображен на экране в строке вывода. Во втором, вывод будет подавлен, но результат операции все равно будет храниться в соответствующей области памяти, и может быть вызван обращением к метке соответствующей (неото- браженной) строки вывода. Символы операций могут, как разделяться про- белами, так и не разделяться. Дроби (если иное не оговорено специально) не вычисляются, а остаются в рациональном виде.

К логическим операторам относятся and – логическое «и», or – логиче- ское «или» и not – логическое «не».

Для операций отношений используются =, <, <=, >=, >, #. В пояснении из них нуждается только последний: символом «#» в Maxima обозначается «не равно».

В качестве оператора присваивания используется двоеточие «:», а опера- тор «:=» является оператором задания функции.

Полный список операторов Maxima может быть найден в файле справки, приведем здесь еще три из наиболее употребительных:

«!» – оператор факториала;

«.» – матричное некоммутативное умножение (в руководстве пользовате- ля рекомендуется отделять пробелами от операндов, на практике работает и без пробелов);

11

«^^» – некоммутативный матричный оператор возведения в степень, со- ответствующий умножению «.».

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

abs(x) − x

signum (x) – сигнум sqrt (x) – x

exp(x) – e x log (x) – ln( x)

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

Тригонометрические функции:

12

sin (x), cos (x), tan (x), cot (x), sec (x), csc (x)

Обратные тригонометрические функции:

asin (x), acos (x), atan (x), acot (x), asec (x), acsc (x)

Гиперболические функции:

sinh (x), cosh (x), tanh (x), coth (x), sech (x), csch (x)

Обратные гиперболические функции:

asinh (x), acosh (x), atanh (x), acoth (x), asech (x), acsch (x)

 

Некоторые специальные функции:

bessel_j (index, expr)

Функция Бесселя первого рода

bessel_y (index, expr)

Функция Бесселя второго рода

bessel_i (index, expr)

Модифицированная функция Бесселя первого рода

bessel_k (index, expr)

Модифицированная функция Бесселя второго рода

%p[u,v] (z)

Функция Лежандра первого рода

%q[u,v] (z)

Функция Лежандра второго рода

%f[p,q] ([], [], expr)

Обобщенная гипергеометрическая функция

gamma(z)

Гамма функция

gammagreek(a,z)

Неполная гамма функция.

Системные переменные (флаги)

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

13

Таблица 2

Краткий список системных переменных

 

Флаг

Возможные

Значение

 

 

Описание

 

 

 

 

значения

по умолчанию

 

 

 

 

 

 

 

 

 

true

 

 

Определяет способ отображения на

 

derivabbrev

false

 

экране производной (краткая/полная

 

false

 

 

 

 

 

форма записи)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

true

 

 

Автоматическое

использование

 

halfangles

false

 

формул половинного аргумента в три-

 

false

 

 

 

 

 

гонометрических выражениях

 

 

 

 

 

 

 

 

 

 

 

true

 

 

Запрет преобразования чисел с пла-

 

keepfloat

false

 

вающей точкой к рациональной форме

 

false

 

 

 

 

 

записи

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

true

 

 

Преобразование

дробей, содержа-

 

ratdenomdivide

true

 

щих в числителе сумму к сумме дро-

 

false

 

 

 

 

 

бей

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2*10-8

 

Точность

при преобразовании

от

 

ratepsilon

любое

 

формы записи с плавающей точкой к

 

 

 

 

 

рациональной.

 

 

 

 

 

 

true

 

 

Автоматическое

раскрытие

скобок

 

ratexpand

false

 

в выражениях,

приведенных к кано-

 

false

 

 

 

 

 

нической форме

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ratfac

true

false

 

Автоматическое вынесение за скоб-

 

false

 

ки всех возможных множителей

 

 

 

 

 

 

 

ratsimpexpons

true

false

 

Автоматическое упрощение показа-

 

false

 

телей степени

 

 

 

 

 

 

 

 

 

 

 

 

 

simp

true

true

 

Автоматическое

упрощение

выра-

 

false

 

жений

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

sumsplitfact

true

true

 

Запрещает

автоматическое

сокра-

 

false

 

щение факториалов

 

 

 

 

 

 

 

 

 

 

 

trigexpand

true

false

 

Автоматическое

раскрытие

скобок

 

false

 

в тригонометрических выражениях

 

 

 

 

 

 

 

 

true

 

 

Автоматическое

использование

 

trigexpandplus

true

 

формул сумм аргументов в тригоно-

 

false

 

 

 

 

 

метрических выражениях

 

 

 

 

 

 

 

 

 

 

 

true

 

 

Автоматическое

использование

 

trigexpandtimes

true

 

формул кратного аргумента в триго-

 

false

 

 

 

 

 

нометрических выражениях

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Определяет

правила вычисления

 

 

true

 

 

выражений

вида

sin(asin(x))

и

 

 

 

 

 

asin(sin(x)). Значение all позволяетвы-

 

triginverses

false

all

 

числять их в обоих направлениях, зна-

 

 

 

 

 

чение true –

только в прямом,

значе-

 

 

all

 

 

ние false блокирует такие вычисления

 

 

 

 

 

полностью

 

 

 

 

 

 

trigsign

true

true

 

Вынос знака

за

тригонометриче-

 

false

 

скую функцию

 

 

 

 

 

 

 

 

 

 

 

 

14

Существительные и глаголы

Нет, это не попавший сюда по ошибке кусок пособия по филологии, а до- словный перевод терминов Maxima «nouns» и «verbs». Дело в том, что выра- жения Maxima могут находиться в двух состояниях: вычисляемом – «verb» и невычисляемом – «noun». В состоянии «verb», например, по умолчанию, на- ходятся все функции. В состоянии «noun» выражение будет храниться в сим- вольной форме и может быть использовано для конструирования других вы- ражений. Каждое выражение может быть переведено из одной формы в дру- гую. Так, добавление апострофа «’» перед вычисляемым выражением пре- вращает его в невычисляемое и наоборот, два апострофа «’’» позволяют при- нудительно вычислить выражение в состоянии «noun». Например:

здесь была использована функция diff(f, x) – производная от функции f по пе- ременной x.

Способы вычисления

Мы уже знаем, что с помощью изменения глобальных переменных среды можно регулировать параметры вычисления выражений. А еще мы умеем за- прещать или разрешать вычислять какое-то одно выражение. Может возник- нуть вопрос (нет, он, конечно, может и не возникнуть, но все-таки…), « а нельзя ли управлять вычислением не глобально, а для какого-то отдельно взятого выражения?» – и ответом будет – « можно». Для этого предназначена функция ev (<выражение>, <арг_1>, ..., <арг_n>), набор возможных аргу- ментов которой очень велик. Перечислим их:

15

 

 

 

 

 

Таблица 3

 

 

Аргументы функции ev

 

 

 

 

 

 

 

 

Аргумент

Возможные

 

 

Описание

 

 

 

значения

 

 

 

 

 

simp

true

 

Действие аналогично глобальному ключу упроще-

 

 

false

 

ние выражений

 

 

 

 

 

 

 

true

 

Подавляет вычисления, применяется при необходи-

 

 

noeval

 

мости воспользоваться дополнительными возможно-

 

 

false

 

 

 

 

 

стями функции без вычисления выражений.

 

 

 

 

 

 

 

nouns

true

 

Вычисляет находящиеся в состоянии «noun» выра-

 

 

false

 

жения

 

 

 

 

 

 

 

 

expand

true

 

Раскрывает скобки в выражении

 

 

false

 

 

 

 

 

 

 

 

 

 

true

 

Позволяет,

при вычисление обратной матрицы не

 

 

detout

 

делить почленно ее элементы на определитель, а дер-

 

 

false

 

 

 

 

 

жать его в множителе за пределами матрицы.

 

 

 

 

 

 

 

diff

true

 

Вычисляет все входящие в выражение производные,

 

 

false

 

находящиеся в состоянии «noun»

 

 

 

 

 

 

derivlist

––

 

Вычисляются только производные по x, y, z.

 

 

(x, y, z, ...)

 

 

 

 

 

 

 

 

 

float

true

 

Переводит дробные выражения в форму с плаваю-

 

 

false

 

щей точкой

 

 

 

 

 

 

 

 

numer

true

 

Вычисляет

численные значения математических

 

 

false

 

функций, аргументы которых заданы в численном виде.

 

 

 

 

 

 

pred

true

 

Вычисляет выражения логического типа

 

 

false

 

 

 

 

 

 

 

 

 

eval

true

 

Проводит дополнительный цикл вычислений

 

 

false

 

 

 

 

 

 

 

 

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

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

16

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

Что характерно, переменная а все еще не определена.

Очистка памяти

Любой идентификатор может быть очищен от присвоенного ему ранее значения командой kill(<идентификатор>). Для очистки всей памяти и сброса значений меток ввода и вывода используется команда kill(all). Этого же эф- фекта можно добиться при помощи wxMaxima: Главное меню – Maxima – Очистить память.

Итак, теперь вы знакомы с алфавитом Maxima. Пора учиться писать.

Преобразования рациональных выражений

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

17

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

tepsilon.

Рассмотрим еще несколько функций для работы с рациональными выра- жениями.

coeff (expr, x, n) – возвращает коэффициент стоящий при xn в выражении expr:

combine (expr) – упрощает выражение expr, путем объединения слагае- мых с общим знаменателем в одно слагаемое:

18

denom (expr) – возвращает знаменатель выражения expr.

divide (p_1, p_2, x_1, ..., x_n) – возвращает частное и остаток от деления многочлена p_1 на многочлен p_2, считая главной переменную x_n.

factcomb (expr) – пытается включить коэффициенты при факториалах в выражении expr в сами факториалы.

factor (expr) – раскладывает выражение expr на простейшие множители. Если expr – целое число, то оно будет разложено на простые числа, если дробь, то будут разложены ее числитель и знаменатель.

factorsum (expr) – пытается разложить выражение expr на сумму произ- ведений простейших множителей.

19