Введение в пакет Maxima2
.pdfФункция zeromatrix (m, n) генерирует матрицу размера m на n, все элементы которой являются нулями.
Построение графиков
Визуализация результатов – немаловажная часть любого исследования. Идеологически не имея встроенных средств построения графиков, Maxima мо- жет использовать два внешних графических приложения: gnuplot и openmath. По умолчанию используется gnuplot, довольно простая программа с постоянно расширяющимся набором возможностей: недавно, например, была добавлена интерактивность в работе с трехмерными графиками. Актуальная на сегодняш- ний день версия, поставляемая вместе с Maxima, имеет номер 4.2.
Итак, рассмотрим ассортимент графических функций Maxima.
Начнем с двумерной графики. Основная функция двумерной графики, имею- щая множество различных вариантов вызова называется plot2d. Самый простой вариант ее вызова выглядит как plot2d (expr, x_range). Здесь expr – выражение, зависящее от одной переменной, а x_range – список, состоящий из имени пере- менной и ее максимального и минимального значений. При таком варианте вызо- ва диапазон по оси ординат определяется автоматически.
20
|
1 |
|
|
|
|
|
0.8 |
|
|
|
|
|
0.6 |
|
|
|
|
|
0.4 |
|
|
|
|
sin(x)*cos(2*x) |
0.2 |
|
|
|
|
0 |
|
|
|
|
|
-0.2 |
|
|
|
|
|
|
|
|
|
|
|
|
-0.4 |
|
|
|
|
|
-0.6 |
|
|
|
|
|
-0.8 |
|
|
|
|
|
-1 |
|
|
|
|
|
-4 |
-2 |
0 |
2 |
4 |
|
|
|
x |
|
|
Иногда, например при наличии на интервале построения графика точек беско- нечного разрыва, автоматическое задание интервала по оси ординат не совсем удобно. Для устранения этой проблемы используется необязательный параметр функции plot2d – список вида [y, min, max]. Здесь y не имя переменной, а символ, используемый для обозначения оси ординат.
sin(x)/cos(2*x)
200000
150000
100000
50000
0
-50000
-100000
-150000
-200000
-4 |
-2 |
0 |
2 |
4 |
x
21
|
4 |
|
|
|
|
|
2 |
|
|
|
|
sin(x)/cos(2*x) |
0 |
|
|
|
|
|
|
|
|
|
|
|
-2 |
|
|
|
|
|
-4 |
|
|
|
|
|
-4 |
-2 |
0 |
2 |
4 |
|
|
|
x |
|
|
Для одновременного построения нескольких графиков используется вызов функции plot2d с первым аргументом в виде списка выражений:
|
|
|
|
sin(2*x) |
4 |
|
|
|
2*sin(2*x) |
|
|
|
4*sin(2*x) |
|
|
|
|
|
|
2 |
|
|
|
|
0 |
|
|
|
|
-2 |
|
|
|
|
-4 |
|
|
|
|
-4 |
-2 |
0 |
2 |
4 |
|
|
x |
|
|
Для построения графика параметрически заданной функции в качестве аргу- мента функции plot2d передается список, начинающийся с ключа parametric: plot2d ([parametric, expr_x, expr_y, [t, t_min, t_max],[ntiсks, n]]). Здесь expr_x и expr_y – выражения, задающие зависимость координат от параметра t; t_min и t_max – интервал изменения этого параметра, а ntiсks – еще один ключ, задающий
22
количество точек, по умолчанию равно 10, строенного графика.
которым строится график. Поскольку значение ntiсks по то его увеличение всегда существенно улучшает вид по-
|
3 |
|
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
cos(3*t)+2*sin(2*t) |
1 |
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
-1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-2 |
|
|
|
|
|
|
|
|
-3 |
|
|
|
|
|
|
|
|
-2 |
-1 |
0 |
1 |
2 |
3 |
4 |
5 |
|
|
|
|
3*sin(3*t)^2+2*cos(2*t) |
|
|
|
Для построения дискретного набора точек функция plot2d вызывается с клю- чом discrete, причем возможны два варианта вызова: в первом функции передают- ся два списка координат – plot2d ([discrete, x_list, y_list]), а во втором – список,
состоящий из пар [xi, yi] – plot2d ([discrete, xy_list]).
Воспользуемся для создания списков функцией makelist:
23
|
1 |
|
|
|
|
|
|
0.9 |
|
|
|
|
|
|
0.8 |
|
|
|
|
|
|
0.7 |
|
|
|
|
|
data |
0.6 |
|
|
|
|
|
|
|
|
|
|
|
|
discrete |
0.5 |
|
|
|
|
|
0.4 |
|
|
|
|
|
|
|
0.3 |
|
|
|
|
|
|
0.2 |
|
|
|
|
|
|
0.1 |
|
|
|
|
|
|
0 |
|
|
|
|
|
|
0 |
2 |
4 |
6 |
8 |
10 |
По умолчанию дискретные наборы строятся в виде ломаной линии, но задавая дополнительные параметры функции plot2d возможно получить и другие вариан- ты вывода.
discrete data
50
40
30
20
10
0 |
|
|
|
|
|
0 |
2 |
4 |
6 |
8 |
10 |
Кроме графиков явно заданных функций Maxima позволяет строить двумер- ные графики функций неявных. Для этого служит функция implicit_plot, содер- жащаяся в одноименном пакете. Синтаксис ее близок к синтаксису функции
24
plot2d, а именно: implicit_plot (expr, x_range, y_range), либо implicit_plot
([expr_1,…, expr_n ], x_range, y_range) и в пояснениях не нуждается
3 x^6 = 4*(x^4-y^4)
y^2/9+x^2/4 = 1
2
1
0
-1
-2
-3
-4 |
-3 |
-2 |
-1 |
0 |
1 |
2 |
3 |
4 |
И, наконец, последняя функция двумерной графики, которую мы рассмотрим, это функция plotdf. Данная функция позволяет строить поле направлений обык- новенного дифференциального уравнения первого порядка, либо системы таких уравнений. Перед использованием функции необходимо подключить содержащий ее одноименный пакет.
Для построения поля направлений одного уравнения это уравнение должно быть приведено к виду
dy/dx=F(x,y)
и функция F(x,y) передана в качестве аргумента plotdf. Независимая переменная здесь всегда должна обозначаться через x, а зависимая через y.
Для случая системы двух уравнений первого порядка каждое из них должно быть приведено к аналогичному виду
dx/dt=G(x,y), dy/dt=F(x,y).
25
Аргументом plotdf в этом случае будет список из двух элементов: F(x,y) и G(x,y), в произвольном порядке.
Кроме этого функция plotdf может принимать различные опциональные клю- чи, влияющие на процесс построения и отображения поля, список которых при- водится ниже.
|
|
|
Ключи функции plotdf |
|||
|
|
|
|
|
|
|
|
Ключ |
Значение |
|
|
|
Описание |
|
|
по умолча- |
|
|
|
|
|
|
нию |
|
|
|
|
|
tstep |
0.1 |
|
|
Задает шаг изменения переменной t, используемой |
|
|
|
|
для вычисления интегральной кривой |
|||
|
|
|
|
|
||
|
nstep |
100 |
|
|
Определяет количество шагов длины tstep, за кото- |
|
|
|
|
рые будет вычисляться интегральная кривая |
|||
|
|
|
|
|
||
|
|
|
|
|
Определяет направление изменения независимой |
|
|
direction |
both |
|
|
переменной в процессе вычисления интегральной кри- |
|
|
|
|
|
|
вой. Возможные значения forward, backward и both. |
|
|
tinitial |
0 |
|
|
Задает начальное значение переменной t, исполь- |
|
|
|
|
зуемой для вычисления интегральной кривой |
|||
|
|
|
|
|
||
|
|
|
|
|
Используется для |
отображения дополнительного |
|
versus_t |
0 |
|
|
окна изображения, где интегральная кривая отобража- |
|
|
|
|
|
|
ется, как две функции х и у независимой переменной t |
|
|
trajectory_at |
– |
|
|
Задает координаты |
х и у начальной точки инте- |
|
|
|
гральной кривой |
|
||
|
|
|
|
|
|
|
|
|
|
|
|
Определяет список параметров и их числовые зна- |
|
|
parameters |
– |
|
|
чения. Имена и значения должны задаваться в строке, |
|
|
|
|
состоящей из разделяемых запятыми элементов вида |
|||
|
|
|
|
|
||
|
|
|
|
|
<имя>=<значение> |
|
|
|
|
|
|
Определяет список интерактивно изменяемых пара- |
|
|
slider |
– |
|
|
метров и диапазон их изменения. Имена и диапазоны |
|
|
|
|
должны задаваться в строке, состоящей из разделяе- |
|||
|
|
|
|
|
||
|
|
|
|
|
мых запятыми элементов вида <имя>=<min>:<max> |
|
|
|
|
|
|
Позволяет построить поверх поля направлений на- |
|
|
xfun |
– |
|
|
бор графиков функций, зависящих от х. Функции пе- |
|
|
|
|
редаются в строке, разделяемые символом «точка с за- |
|||
|
|
|
|
|
||
|
|
|
|
|
пятой». |
|
|
xradius |
10 |
|
|
Радиус отображаемого интервала по горизонтали |
|
|
yradius |
10 |
|
|
Радиус отображаемого интервала по вертикали |
|
|
xcenter |
0 |
|
|
Координата x центра окна изображения |
|
|
ycenter |
0 |
|
|
Координата y центра окна изображения |
|
|
width |
500 |
|
|
Ширина окна изображения в пикселях |
|
|
height |
500 |
|
|
Высота окна изображения в пикселях |
26
Приведем несколько примеров использования функции с различными ключа-
ми.
Построим поле направлений уравнения y`=x/2 и его интегральную кривую, проходящую через точку (0,2)
Теперь построим поле направлений уравнения y`=x – у2 и его интегральную кривую, проходящую через точку (–1,3) и выведем на этот же график уравнение функции y=sqrt(x).
27
Далее построим поле направлений уравнения y`=mx2 + у2 и рассмотрим его изменения в зависимости от параметра m.
Здесь, в нижней части поля вывода появляется шкала, на которой в интерак- тивном режиме можно выбрать значение параметра m.
28
Перейдем теперь к графике трехмерной. Функция, отвечающая за построение трехмерных графиков в Maxima, называется вполне предсказуемо: plot3d. и по- зволяет строить графики явно и параметрически заданных функций.
Простейший вариант вызова функции plot3d выглядит, как plot3d (expr, x_range, y_range, <дополнительные параметры>)
|
|
|
|
|
|
|
|
Function |
|
600 |
|
|
|
|
|
|
|
|
600 |
500 |
|
|
|
|
|
|
|
|
|
400 |
|
|
|
|
|
|
|
|
500 |
300 |
|
|
|
|
|
|
|
|
400 |
200 |
|
|
|
|
|
|
|
|
300 |
100 |
|
|
|
|
|
|
|
|
200 |
0 |
|
|
|
|
|
|
|
|
100 |
-100 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
-200 |
|
|
|
|
|
|
|
|
|
-300 |
|
|
|
|
|
|
|
|
-100 |
-400 |
|
|
|
|
|
|
|
|
-200 |
|
|
|
|
|
|
|
|
|
-300 |
|
|
|
|
|
|
|
|
|
-400 |
-6 |
|
|
|
|
|
|
|
|
|
-4 |
|
|
|
|
|
|
|
|
|
-2 |
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
2 |
3 |
4 |
2 |
|
|
|
|
0 |
1 |
|
||
|
|
|
-1 |
|
|
||||
4 |
|
-3 |
-2 |
|
|
|
|
||
|
|
|
|
|
|
||||
6 |
-4 |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
Существует ограничение не позволяющее строить два трехмерных графика на одном рисунке, поэтому ключ parametric перед списком параметрически задан- ных функций не требуется. Таким образом, для построения параметрических
29