Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы математического моделирования в системе Maxima. Учебное пособие для студентов агроинженерного факультета по направлению 35.03.06 - «Агроинженер.pdf
Скачиваний:
0
Добавлен:
12.08.2026
Размер:
805 Кб
Скачать

20 2. Система компьютерной математики Maxima

списка и выборочного удаления определённых пользователем переменных «Maxima|Show Variables», «Maxima|Delete Variable...» и функций «Maxima|Show Functions», «Maxima|Delete Function...»

2.2.Основные возможности системы Maxima

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

2.2.1. Скалярные выражения

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

Функции округления: «round()», «floor()», «fix()», «ceiling()». Функции квадратного корня и модуля: «sqrt()», «abs()». Показательные и логарифмические функции: «exp()», «log()». Тригонометрические и обратные к ним функции: «sin()», «cos()»,

«tan()», «cot()», «asin()», «acos()», «atan()», «acot()». Гиперболические и обратные к ним функции: «sinh()», «cosh()»,

«tanh()», «coth()», «asinh()», «acosh()», «atanh()», «acoth()». Для завершения строки в командном поле или для разделения

нескольких выражений в одной строке могут использоваться символы «;» или «$». При использовании символа «;» результат выполнения выражения будет отображаться в поле ответа, а использовании символа «$»–– нет. Если возникает необходимость в группировке нескольких простых выражений в одно составное, то для этого следует использовать круглые скобки «(cmd1,cmd2)», а для разделения простых выражений между собой –– запятые «,». Результатом, который возвращает составной оператор, будет результат последнего вычисленного выражения.

Для обозначения положительных и отрицательных неограниченных, а также неопределённых выражений в Maxima используются служебные слова «inf», «minf» и «und», например 2.1 : (%i5)–(%o5)1. Имена системных констант начинаются со знака процента: обозначение «%pi» соответствует константе = 3,14159 . . ., «%e» –– константе= 2,71828 . . ., а «%i»–– мнимой единице = √−1.

1 Обозначение вида 2 1 : (%i5)–(%o5) здесь и далее расшифровывается как ссылка на листинг 2.1, строки с (%i5) по (%o5).

2.2. Основные возможности системы Maxima

21

При присваивании переменным результатов вычислений и/или других выражений используется оператор «:». Система Maxima может по-разному трактовать любые выражения в зависимости от текущего контекста. Если входящие в выражение имена переменных ранее были определены, то для вычисления используются их значения, в противном случае имена трактуются как обозначения новых переменных, например 2.1 : (%i1)–(%o3). Если требуется отменить подстановку выражения вместо имени переменной, то перед этим именем следует поставить символ «’», например 2.1 : (%i4)–(%o4).

Листинг 2.1. Примеры некоторых скалярных выражений

(%i1) a*b;

(%o1)

(%i2) a:1/3$

(%i3) a*b;

(%o3)

3

(%i4) (%o4) (%i5)

(%o5)

(%o6)

’a*b;

z:1/minf; limit(z); tan(%pi/2);

1

−∞

0

isn’t in the domain of tan – an error.

2

To debug this try: debugmode(true);

Ниже строк 2.1 : (%i5)–(%o6) выводится сообщение об ошибке,

возникающее при попытке вычисления функции tg за пределами

области её определения.

2

 

2.2.2. Векторные и матричные выражения

Упорядоченные множества значений и/или переменных в Maxima называют списками. Простейшим способом формирования списка является обрамляемое квадратными скобками перечисление его элементов через запятую как показано в 2.2 : (%i1)–(%o3). Для ссылки на конкретный элемент его указывают рядом с именем списка в квадратных скобках, например как в 2.2 : (%i4)–(%o4).

22 2. Система компьютерной математики Maxima

Для генерирования элементов списка по определённой формуле используются функции «create_list()» как показано в 2.2 : (%i5)– (%o5). Элементами списка вполне могут быть другие списки, а генерирующая формула может иметь множественную индексацию как, например, в 2.2 : (%i6)–(%o8). Заметим, что для обращения к непоименованным спискам (как и к другим непоименованным объектам) в Maxima используются номера строк как это сделано в 2.2 : (%i7)– (%o8).

Несколько списков одного размера можно объединить в матрицу с помощью функции «matrix()» как показано в 2.2 : (%i9)–(%o9). Обратите внимание на разницу в обращении к элементам матрицы и вложенного списка в 2.2 : (%i10)–(%o11) и 2.2 : (%i7)–(%o8). Для создания нулевой и диагональной матриц используются функции «zeromatrix()» и «diagmatrix()», а для генерирования элементов матрицы по формуле –– «genmatrix()» как это показано в 2.2 : (%i12)–(%o14).

Листинг 2.2. Примеры использования списков и матриц

(%i1) x:1/5$ y:1/3$

(%i3) s:[x,y,z-x+2*y];

(%o3) [ 15 , 13 , + 157 ] (%i4) s[1]*s[2]-s[3];

(%o4)

− − 52

 

 

 

 

(%i5)

create_list(z^(2*i+1),i,0,4);

(%o5)

[ , 3, 5, 7, 9]

 

 

(%i6)

create_list([i,j],i,[1,2,3],j,1,i);

(%o6)

[[1, 1], [2, 1], [2, 2], [3, 1], [3, 2], [3, 3]]

(%i7)

%o6[2]; %o6[2][2];

(%o7)

[2, 1]

 

 

 

 

 

(%o8)

1

 

 

 

 

 

 

 

(%i9)

matrix(s-1/5,s-1/3);

 

 

0

 

2

+

4

 

(%o9)

[

15

152 ]

2

 

 

 

 

 

 

0

+

 

 

(%i10)

 

15

15

 

%o9[2,1]; %o9[2,3];

 

2.2. Основные возможности системы Maxima

23

(%o10)

2

 

 

 

15

 

(%o11)

+

2

 

 

 

 

 

15

 

 

(%i12)

zeromatrix(2,2); diagmatrix(2,z);

 

(%o12)

[00

00]

 

(%o13)

[0

0]

 

(%i14)

genmatrix(lambda([i,j],12/(i+j)),2,2);

 

(%o14)

[46

34]

 

2.2.3. Функции и управляющие структуры

Система Maxima включает в себя реализации нескольких тысяч базовых функций. Для расширения возможностей системы можно воспользоваться дополнительными библиотеками или написать собственные функции. Определение новой функции вида «f(x,y):=cmd» включает: имя функции с её аргументами «f(x,y)», оператор присваивания «:=» и определяющее функцию выражение «cmd». Пример определения и использования пользовательской функции двух аргументов показан в 2.3 : (%i1)–(%o5).

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

Оператор «if cnd then cm1 else cm2» используется для выбора между альтернативными группами команд «cm1» и «cm2» в зависимости от значения условия «cnd». Заметим, что операторы «cm1» и «cm2» могут быть составными. Для построения условия «cnd» могут использоваться комбинации вычисляемых выражений и операторов: «=», «#», «<», «<=», «>», «>=», «not», «or», «and». Пример использования условного оператора для определения итеративной функции, генерирующей последовательность чисел Фиббоначи показан в

2.3 : (%i6)–(%o6).

Для повторения группы команд «cmd» некоторое число раз используются операторы: а) «for v:a step s thru b do cmd», б) «for

v:a step s while cnd do cmd», в) «for v:a step s unless cnd do cmd». Форма (а) используется в том случае, если число повторений

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]