Графика

 

Версия для печати

Создание 2D- (x – y) графиков

Простейший график – это 2D-, или x – y график. Синтаксис команд Maple-овской графики зависит от того, что именно рисуется – функция или выражение.

Вот график рационального выражения от х = –5 до х = 0.

Присваиваем это выражение переменной g и затем рисуем ее. Учтите, что g – это выражение, а не функция, поэтому, чтобы ее нарисовать, нельзя использовать обозначение g(x).

  • restart;
  • g:=(x+1)/(x-1);
  • plot(g,x=-5..0);

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

  • f:=(x,y)->(x+y)/(x-y);

Чтобы сделать график с осью х, задавайте значения y в списке аргументов (y=1 воспроизводит предыдущий график):

  • plot(f(x,1),x=-5..0);

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

  • plot((x+1)/(x-1),x=-5..5);

Это не единственный график. Проблема в том, что функция сингулярна при х=1, поэтому Maple пытается показать большой диапазон по оси y. Ограничим его.

  • plot((x+1)/(x-1),x=-5..5,-5..5);

Теперь это выглядит лучше, но странно или даже неправильно смотрится вертикальная линия при х=1. При рисовании Maple включает в график скачок от –∞ до +∞, соединяя соседние точки. Эта линия мешает восприятию, и ее можно вычистить специальной опцией, которую найдем по запросу:

  • ?plot[options]

Нужно написать discont=true, указав, чтобы Maple искал разрыв (discontinuity) на графике и отключал рисование от точки к точке.

  • plot((x+1)/(x-1),x=-5..5,-5..5,discont=true);

Поищем что-то более экзотическое. Построим две кривых на одном графике, выделив их разными цветами. Запрос справки для цвета:

  • ?plot[color]

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

  • plot([(x+1)/(x-1),cos(x)],x=-5..5,-5..5,discont=true,
    color=[navy,tan],thickness=2);

В этой команде plot функций помещается в квадратные скобки [ ], а внутри них функции перечисляются через запятую. Применяемые к отдельным кривым опции тоже помещаются в квадратные скобки [ ], а внутри них перечисляются через запятую (см. опцию color).

Предупреждение: Maple не всегда следует вашему порядку цветов.

Пример.
Нарисуем график движения гармонического осциллятора с затуханием, которое описывается выражением для диапазона от t = 0 до t = 600.

Пишем:

  • plot(exp(-t/100)*cos(t),t=0..600);

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

Примените опцию numpoints, чтобы увеличить разрешение графика:

  • plot(exp(-t/100)*cos(t),t=0..600,numpoints=400);

Еще важный пример:
Знак присваивания (:=) часто применяется при задании собственного выражения для графика:

  • F:=cos(omega*t)^3;

Поскольку оно явно зависит от t, можно построить график:

  • plot(F,t=0..20);

Но это не срабатывает.

Maple сообщает об ошибке, выдавая пустой график. Причина в том, что его нельзя построить, пока не имеет значений. Исправим ситуацию, задавая значения t и вычисляя соответствующие F.

  • t:=7.;F;

Но и здесь не имеет значения, хотя присутствует. Тогда присвоим ему значение:

  • omega:=1.;plot(F,t=0..20);

Опять не срабатывает. Ну а в чем же дело теперь?

Проблема тоньше и при таком способе построения графика повторится неоднократно.

Дело в том, что ранее t было присвоено числовое значение = 7. Maple помнит это и не позволяет применять на графике t в качестве текущей переменной. Чтобы исправить ситуацию, нужно отменить присваивание командой unassign с аргументом 't', а затем запустить снова:

  • unassign('t');omega:=1;plot(F,t=0..20);

или применить сокращенную версию команды unassign:

  • t:='t';omega:=1;plot(F,t=0..20);

Читается это так: «присвоить t ей самой (вернуть t собственное имя), стерев любые предыдущие присваивания».

Более «чистый» способ – никогда не делать присваивания с помощью знака :=, а применять команду замены subs, как ниже:

  • restart;
  • F:=cos(omega*t)^3;
  • plot(F,t=0..20);
  • subs(t=7.,F);
  • plot(subs(omega=1,F),t=0..20);

Команды t=7 и omega=1 применяются только внутри команды subs. После этого переменные t и omega остаются неприсвоенными:

  • t;omega;

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

  • для подписей к осям применяется опция labels=["x","y"];
  • для маленького заголовка – опция title="Thisisthetitle".

Справку по вводу текста в график см.: textplot в Maple help.

Вот несколько примеров.

  • plot(sin(x^2),x=0..2*Pi,labels=["x","y(x)"],
    title="sin(x^2) function");

Небольшие примечания
Заметьте, что sin(x^2) в Maple не отображается так, как принято в математике.

Для доступа к греческому алфавиту (он доступен не весь) надо заменить шрифт: labelfont или titlefont на SYMBOL, как ниже:

  • plot(exp(x/6),x=0..2*Pi,
    labels=["abcdefghijklmnopqrstuvwxyz","y(x)"],
    title="ABCDEFGHIJKLMNOPQRSTUVWXYZ",
    labelfont=[SYMBOL],titlefont=[SYMBOL]);

К сожалению, неизвестен способ комбинирования латинского и греческого алфавитов в знаках и текстах, что возможно в LaTex или MatLab.