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

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

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

Функция 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