Графический пакет системы Mathematica

Министерство  образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное  учреждение

высшего профессионального образования

Курский государственный университет

 

 

 

 

Кафедра ПО и АИС

 

 

 

 

 

КУРСОВАЯ  РАБОТА

 

По дисциплине «Пакеты прикладных программ»

Графический пакет системы Mathematica

 

 

Выполнил:       студент 211 гр. ФМФ: Бяшимов М.Д.

Проверил:                        Ураева Е.Е.

 

 

 

 

 

 

Курск 2012

 

Оглавление

Введение……………………………………………………………………………………....3

Глава I. Двумерная графика 5

1.1.Двумерная графика. Графическая функция Plot. 5

1.2.Опции функции Plot 7

1.3.Директивы двумерной графики 10

1.4.Построение графика по точкам (функция List Plot) 12

1.5.Получение информации о графических объектах 13

1.6.Перестроение и комбинирование графиков 15

1.7.Примитивы двумерной графики 16

1.8.Графики функций, заданных в параметрической форме 18

Глава II. Трехмерная графика 21

2.1.Трехмерная графика. Построение контурных графиков. 21

2.2.Построение графиков поверхностей (функция Plot 3D) 24

2.3.Опции и директивы трехмерной графики 25

2.4.Графическая функция ListPlot3D 30

2.5.Параметрическая трехмерная графика. 31

2.6.Построение фигур, пересекающихся в пространстве 35

2.7.Функция Graphics3D, ее опции и примитивы 37

2.8.Вставка графических и иных объектов 39

Заключение…………………………………………………………………………………..43

 Список литературы…………………………………………………………………………..44

 

 

Введение

Компьютерная графика в своем  историческом развитии повторяет путь аналитической геометрии. Когда-то давно, когда возникла аналитическая  геометрия, т.е. во времена Пьера  Ферма и Ренэ Декарта, она мыслилась в основном как аналитическая геометрия на плоскости (а зачастую даже как аналитическая геометрия в первом квадранте). Это был способ изучения плоских образов (кривых) с помощью метода координат на плоскости. Распространение методов аналитической геометрии на пространственные образы (линии и поверхности) было сделано столетием позже французским математиком Клеро (1713-1765). Облик, близкий традиционному, придал аналитической геометрии Леонард Эйлер в 1748 году, посвятив ей второй том "Введения в анализ".

Однако еще более столетия курс аналитической геометрии делился  на два раздела: аналитическая геометрия  на плоскости и аналитическая  геометрия в пространстве. Лишь в 60-е годы XX века в мехматовских учебниках мало-помалу исчезло это деление, сохранившееся в учебных планах педагогических институтов кое-где и по сей день. Впрочем, более чем за три десятилетия до конца XX века были сделаны (в основном, Анатолием Ивановичем Мальцевым и Алексеем Васильевичем Погореловым) первые попытки преподавания многомерной аналитической геометрии, логическим завершением которых стали многочисленные (в 80-х годах XX века) объединенные курсы аналитической геометрии и линейной алгебры.

Нечто подобное наблюдается и в  компьютерной графике. Поначалу графические  редакторы (притом с весьма ограниченными  возможностями) были предназначены  для вычерчивания весьма ограниченного  набора графических примитивов (в  основном, точек и отрезков) на плоскости. Несколько позже набор графических  примитивов был значительно расширен. Затем появились графические  операции для изображения трехмерных образов, потом было добавлено еще  одно измерение – время. Так в  графические редакторы вошло  движение и появилось компьютерное немое кино, которое почти сразу  же обрело звук и тем самым превратилось в полноценное мультимедиа.

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

 

Глава I. Двумерная графика

1.1.Двумерная графика. Графическая функция Plot.

Графика, как важнейшее средство визуализации вычислений, всегда была козырной картой системы Mathematica и во многом способствовала ее высокой репутации как мирового лидера среди систем компьютерной математики. Обширные графические возможности достигаются при небольшом числе встроенных функций графики за счет их модификации с помощью опций и директив. Благодаря этому Mathematica позволяет строить практически любые виды графиков. Для просмотра и изменения опций графика можно (выделив ячейку с графиком) воспользоваться описанным ранее инспектором опций, в котором есть соответствующий раздел. Однако в этом случае инспектором опций пользоваться нет необходимость – поскольку все необходимые опции будут вводиться в соответствующие функции так, как это принято делать при программировании задач графики.

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

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

  • Plot[Sin[x],{x,0.20}] – построение графика синусоиды;
  • g: = Plot [Sin [x], {х, 0, 20} ] – задание объекта – графика синусоиды – с отложенным выводом;
  • g=Plot [Sin [x], {х, 0, 20} ] – задание объекта – графика синусоиды – с немедленным выводом.

Начнем рассмотрение графических  возможностей системы с построения простейших графиков функций одной  переменной вида у =f(x) или просто f(x). График таких функций строится на плоскости, то есть в двумерном пространстве. При этом используется прямоугольная (декартова) система координат. График представляет собой геометрическое положение точек (х, у) при изменении  независимой переменной (абсциссы) в заданных пределах, например от минимального значения x(min) до максимального х(тах) с шагом dx. По умолчанию строятся и линии координатной системы.

Для построения двумерных графиков функций вида f(x) используется встроенная в ядро функция Plot:

  • Plot [f, {x, x(min), x(max)}] – возвращает объект, представляющий собой график функции f аргумента х в интервале от x(min) до x(max);
  • Plot[{f1, f2,…}, {x, xmin, xmax}] – возвращает объект в виде графиков ряда функций f(i).

Функция Plot используется для построения одной или нескольких линий, дающих графическое представление для указанных функций f, f1, f2 и т. д. На рис. 1.1 показано построение графика функции sin(x)/x без использования каких-либо опций (точнее, с набором опций по умолчанию).

 
Рис. 1.1. Построение двумерного графика

       Тут виден как раз тот случай, когда масштаб графика по вертикали выбран системой неудачно – часть графика сверху просто отсекается. В большинстве же случаев применение функции Plot позволяет получить вполне "удобоваримый" график.

1.2.Опции функции Plot

       По мере усложнения задач, решаемых пользователем, его рано или поздно перестанут устраивать графики, получаемые при автоматическом выборе их стиля и иных параметров. Для точной настройки графиков Mathematica использует специальные опции графических функций Для вывода их списка надо использовать команду Options [Plot]. Полный список опций дан в приложении.

Опции внутри графических функций задаются своим именем name и значением value в виде:

name → value

Наиболее распространенные символьные значения опций:

  • Automatic – используется автоматический выбор;
  • None – опция не используется;
  • All – используется в любом случае;
  • True – используется;
  • False – не используется.

Многие опции могут иметь  числовые значения. В сомнительных случаях рекомендуется уточнять форму записи опций и их значений по оперативной справочной системе. Рассмотрим примеры применения опций  двумерной графики.

Мы уже отметили неудачный выбор  масштаба в случае, представленном на рис. 1.1. Очевидно, этот недостаток графика легко исправить, введя коррекцию масштаба по оси у. Это и сделано в примере, показанном на рис. 1.2. Для изменения масштаба использована опция PlotRange → { -0.25 1.2}. Нетрудно догадаться, что эта опция задает пределы отображения графика по вертикали от -0.25 до 1.2.

 
Рис. 1.2. График функции sin(x)/x

По умолчанию  система строит графики, не указывая надписей ни по осям координат (кроме  букв х и y), ни в верхней части  графика. Такая надпись на графике  по центру сверху называется титульной. Рисунок 1.3 показывает построение графика с надписями у координатных осей. Для создания таких надписей используется опция Axes Label. После нее указывается список, содержащий две надписи – одну для оси х, вторую – для оси у. Надписи указываются в кавычках. Таким образом, задание опции выглядит следующим образом:

AxesLabel → {"X value","f(x)}.

 
Рис. 1.3. График с надписями по координатным осям

       С помощью опции Axes со значением None можно убрать с графика отображение осей. Вид получающегося при этом графика показан на рис. 1.4. При его построении, кроме удаления осей, использована опция PlotLabel для вывода указанной в качестве ее значения титульной надписи.

 
Рис. 1.4. График без координатных осей, но с титульной надписью

Часто возникает необходимость  построения на одном рисунке нескольких графиков одной и той же функции, но при разных значениях какого-либо параметра – например, порядка  специальных математических функций. В этом случае они могут быть заданы в табличной форме. Рисунок 1.5 дает пример построения пяти графиков функций Бесселя.

Рисунок 1.5 иллюстрирует недостаток одновременного представления нескольких графиков, создаваемого по умолчанию, – все графики построены одинаковыми линиями, и не сразу ясно, какой график к какой функции относится. Рисунок 1.6 показывает возможности управления стилем линий (густотой черного цвета) графиков с помощью опции PlotStyle. Если желательно выделение линий разными цветами, удобно использовать в качестве значения опции PlotStyle список вида {Hue [cl], Hue [с2],…}, где параметры c1, с2,… выбираются от 0 до 1 и задают цвет соответствующей кривой.

 
Рис. 1.5. Семейство функций Бесселя на одном графике

 
Рис. 1.6. Построение графиков линиями разного стиля

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

1.3.Директивы двумерной графики

      Еще одним важным средством настройки графиков являются графические директивы. Синтаксис их подобен синтаксису функций. Однако директивы не возвращают объектов, а лишь влияют на их характеристики. Используются следующие основные директивы двумерной графики:

  • AbsoluteDashing [ {dl, d2,…}] – задает построение последующих линией пунктиром со смежными (последовательными) сегментами, имеющими абсолютные длины d1, d2,… (повторяемые циклически). Значения длины d(i) задаются в пикселях;
  • AbsolutePointSize [d] – задает построение последующих точек графика в виде кружков с диаметром d (в пикселях);
  • AbsoluteThickness [d] – задает абсолютное значение толщины (в пикселях) для последующих рисуемых линий;
  • Dashing [{rl, r2,…}] – задает построение последующих линий пунктиром с последовательными сегментами длиной r1, г2,…, повторяемыми циклически, причем ri задается как доля полной ширины графика;
  • PointSize [d] – задает вывод последующих точек графика в виде кружков с относительным диаметром d, заданным как доля общей ширины графика;
  • Thickness [r] – устанавливает для всех последующих линий толщину г, заданную как доля полной ширины графика.

Рисунок 1.7 показывает построение графика функции Бесселя в виде пунктирной линии. Она задается с помощью графической директивы Dashing.

 
Рис. 1.7. Построение графика функции Бесселя с применением графической директивы Dashing

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

1.4.Построение графика по точкам (функция List Plot)

 

Часто возникает  необходимость построения графика  по точкам. Это обеспечивает встроенная в ядро графическая функция ListPlot:

  • ListPlot [ {yl, у2,…}] – выводит график списка величин. Координаты х принимают значения 1, 2,…;
  • ListPlot [{{x1, y1}, {х2, у2 },…}] – выводит график списка величин с указанными х- и y-координатами.

В простейшем случае (рис. 1.8) эта функция сама задает значения координаты х= 0, 1, 2, 3,… и строит на графике точки с координатами (х, у), выбирая у последовательно из списка координат.

 
Рис. 1.8. Построение графика по точкам

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

1.5.Получение информации о графических объектах 

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

  • FullAxes [g] – возвращает список опций координатных осей;
  • Options [g] – возвращает упрощенный список опций;
  • FullOptions [g] – возвращает полный список опций;
  • InputForm[g] – возвращает информацию о графике (включая таблицу точек).

Пусть задан графический объект g:

g: = Plot[Sin[x],{х,-10.10}]

Ниже представлено получение упрощенного  списка опций этого графического объекта:

Options[g]

{PlotRange → Automatic, AspectRatio → 1/GoldenRatio,

DisplayFunction: > $DisplayFunction,

ColorOutput → Automatic, Axes → Automatic, AxesOrigin → Automatic,

PlotLabel → None, AxesLabel → None, Ticks → Automatic,

GridLines → None,

Prolog → {}, Epilog → {}, AxesStyle → Automatic,

Background →  Automatic,

DefaultColor → Automatic, DefaultFont: > $DefaultFont,

RotateLabel → True, Frame → False, FrameStyle → Automatic,

FrameTicks → Automatic!, FrameLabel → None,

PlotRegion → Automatic, ImageSize → Automatic,

TextStyle: > $TextStyle, FormatType: > $FormatType}

Для получения  полного списка опций вместе с  их значениями можно использовать функцию FullOptions. Аналогично можно получить и иные данные – они не приводятся ввиду громоздкости выводимой информации. Анализ графиков с применением этих функций может оказаться весьма полезным при построении и редактировании сложных графиков.

Функции FullOptions и Options можно также использовать в следующем виде:

  • Options [g, option] – возвращает значение указанной опции option;
  • FullOptions [g, option] – возвращает значение указанной опции option.

В этом случае можно получить информацию по отдельной опции.

1.6.Перестроение  и комбинирование графиков

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

  • Show [plot] – построение графика;
  • Show [plot, option → value] – построение графика с заданной опцией;
  • Show [plot1, plot2,…] – построение нескольких графиков с наложением их друг на друга.

Директива Show полезна также и в том случае, когда желательно, не трогая исходные графики, просмотреть их при иных параметрах. Соответствующие опции, меняющие параметры графиков, можно включить в состав директивы Show. Другое полезное применение директивы – объединение на одном графике нескольких графиков различных функций или объединение экспериментальных точек и графика теоретической зависимости. Для этого также удобна функция Display-Together, которая будет описана при описании пакета расширения Graphics . В отличие от функции Show, она позволяет объединять графики без предварительного построения каждого из них.

Рисунок 1.9 показывает создание двух графических объектов g1 и g2 с отложенным выводом, а затем построение графиков функций и применение директивы Show для создания объединенного графика. В этом случае директива Show вначале строит исходные графики отдельно, а затем создает объединенный график. В приведенных ниже примерах оставлен только объединенный график, другие удалены командой меню Edit → Clear.

 

 
Рис. 1.9. Построение двух графических объектов и их объединение

Разумеется, при использовании  директивы Show надо побеспокоиться о выра

внивании масштабов графиков, налагаемых друг на друга. Полезно особо обратить внимание на возможность присваивания графиков функций переменным (в нашем примере – g1 и g2) в качестве значений. Такие переменные становятся графическими объектами, используемыми директивой Show для вывода на экран дисплея.

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

1.7.Примитивы  двумерной графики

 

     Примитивами двумерной графики называют дополнительные указания, вводимые в функцию Graphics [primitives, options], которая позволяет выводить различные примитивные фигуры без задания математических выражений, описывающих эти фигуры. Примитивы могут выполнять и иные действия. Они заметно увеличивают число типов графиков, которые способна строить система Mathematica. Имеются примитивы для построения окружностей, эллипсов, кругов, овалов, линий и полигонов, прямоугольников и текстов. Полное описание примитивов дано в разделе приложения, посвященном данному уроку. Примитивы задаются подобно графическим функциям, например, Circle[{x, у}, r] строит окружность с радиусом г и центром в точке {х, у}.

Рисунок 1.10 показывает применение функции Graphics для построения одновременно трех графических объектов: отрезка прямой, заданного координатами его концевых точек, окружности с центром (0, 0) и радиусом 0.8 и текстовой надписи "Привет!". Каждый объект задан своим примитивом. Из-за искажения масштаба дисплеем компьютера окружность выглядит как эллипс.

 
Рис. 1.10. Построение трех графических объектов с помощью примитивов двумерной графики

На  рисунке  1.11 представлено построение пятиугольника, заданного координатами его вершин.

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

 
Рис. 1.11. Построение пятиугольника

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

 

       Построение графиков в полярной системе координат возможно двумя способами. Первый способ основан на использовании обычной декартовой системы координат. Координаты каждой точки при этом задаются в параметрическом виде: x = f (t) и у(t), где независимая переменная t меняется от минимального значения £ min до максимального t mах с шагом dt. Особенно удобно применение таких функций для построения замкнутых линий, таких как окружности, эллипсы, циклоиды и т. д. Например, окружность радиусом R может быть задана в следующей параметрической форме: х = R cos(t) и у = R sin(t), если t меняется от 0 до 2п. В общем случае радиус также может быть функцией параметра t.

Для построения параметрический заданных функций используются следующие графические средства:

  • ParametricPlot [ {fx, fy}, {t, tmin, tmax} ] – строит параметрический график с координатами f х и f у (соответствующими х и у), получаемыми как функции от t;
  • ParametricPlot [{{fx, fy}, {gx, gy},…}, {t, tmin, tmax}] – строит графики нескольких параметрических кривых.

Функции f x, f у и т. д. могут быть как непосредственно вписаны в список параметров, так и определены как функции пользователя.

Рисунок 1.12 показывает построение параметрически заданной фигуры Лиссажу. Она задается функциями синуса и косинуса с постоянным параметром R и аргументами, кратными t. Эти фигуры наблюдаются на экране электронного осциллографа, когда на его входы X и Y подаются синусоидальные сигналы с кратными частотами.

 
Рис. 1.12. Построение фигуры Лиссажу

       На одном графике можно строить две и более фигур с заданными параметрический уравнениями. На рис. 1.13 показан пример такого построения – строятся две фигуры Лиссажу, причем одна из них является окружностью. Больше двух фигур строить нерационально, так как на черно-белом графике их трудно различить.

 
Рис. 1.13. Построение на одном графике двух фигур Лиссажу

Теперь рассмотрим второй способ построения графиков в полярной системе координат (рис. 1.14). Здесь каждая точка является концом радиус-вектора R(t), причем угол t меняется от 0 до 2π. На рис. 1.14 функция R(t) задана как функция пользователя R[t_] с использованием образца t_ для  задания локальной переменной t в  теле функции.

Изменение параметра R позволяет заметно  увеличить число отображаемых функций  – фактически, их бесконечно много. Помимо описанной фигуры на рис. 1.14 дополнительно построена линия  окружности единичного радиуса. Чтобы  она имела правильные пропорции  на экране, задана опция AspectRatio → 1.

 
Рис. 1.14. Построение графика функции в полярной системе координат

Глава II. Трехмерная графика

2.1.Трехмерная графика. Построение контурных графиков.

Трехмерная графика, называемая также  ЗD-графикой, представляет в аксонометрической проекции объемное изображение поверхностей или фигур, которые описываются либо функциями двух переменных, либо параметрический заданными координатами объектов. В данном разделе описаны многие способы построения трехмерных графиков, начиная от простых контурных графиков и кончая графиками поверхностей и фигур с функциональной окраской.

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

Основными функциями и директивами  для построения контурных графиков являются следующие:

  • ContourPlot[f,{x, xmin, xmax}, {у, ymin, ymax}] – порождает контурный график f как функции от х и у;
  • ContourGraphics [array] – представляет контурный график массива array;
  • ListContourPlot[array] – формирует контурный график из массива величин высот.

Этих функций достаточно для  построения практически любых монохромных  графиков такого типа.

Для управления возможностямиграфической функции ContourPlot используются опции, полный список которых выводит команда Options [ContourGraphics]. Помимо уже рассмотренных ранее опций используются следующие:

  • ColorFunction – задает окраску областей между линиями;
  • Contours – задает число контурных линий;
  • ContourLines – задает прорисовку явных (explicit) контурных линий;
  • ContourShading – задает затенение областей между контурными линиями;
  • ContourSmoothing – задает сглаживание контурных линий;
  • ContourStyle – задает стиль рисуемых линий для контурных графиков;
  • MeshRange – задает области изменения х- и y-координат.

Рисунок 2.1. показывает построение контурного графика с окраской промежуточных областей между линиями. Окраска обеспечивается опцией ColorFunction → Hue. Опция ContourSmoothing → True задает сглаживание контурных линий.

 
Рис. 2.1. Контурный график поверхности sin(x у) с закраской областей между линиями равного уровня оттенками серого цвета

Следующий пример (рис 2.2.) иллюстрирует эффективность применения опции ContourShading. Если задать ее значение равным False, то заполнение пространства между линиями будет отсутствовать. Таким образом, в данном случае строятся только линии равного уровня.

 
Рис. 2.2. Контурный график, представленный только линиями равного уровня

Иногда  график оказывается более наглядным, если убрать построение контурных линий, но оставить закраску областей между  линиями. Такой вариант графика  более предпочтителен, если нужно  наблюдать качественную картину. Для  построения такого графика надо использовать опцию ContourLine → False(рис. 2.3.).

 
Рис. 2.3. Контурный график без пиний равного уровня

В данном случае используется вариант монохромной  окраски областей между линиями (PostScript). Он может оказаться предпочтителен, например, если предполагается печать графика монохромным принтером.

Графический пакет системы Mathematica