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

книги / Mathematica 5. ╨б╨░╨╝╨╛╤Г╤З╨╕╤В╨╡╨╗╤М

.pdf
Скачиваний:
1
Добавлен:
19.11.2023
Размер:
33.75 Mб
Скачать

3

2

1

О

-1

-2

-3

 

 

 

 

 

 

- 3

-2

-1

О

1

2

3

Список стилей контурных линий м ож но задать в опции C o n t o u r $ t y le . Например, если установить C o n t o u r S t y le - > { {RGBColor [ 1 , 0 , 0 ] }, {RGBColor [0 , 0 , 1 ] } } , то бу­ дет чередоваться красный и синий цвета контурных линий.

По умолчанию значение опции P lo t P o in t s равно 25. При увеличении этого зн а­ чения на графике могут появиться дополнительны е детали. Вот как изменится преды ­ дущий график, если его установить равным 50.

C ontourP lot[ S i n [ x / y ] , { х , - P i , P i ) , { у , - P i , P i } , P lo t P o in t s - > 5 0 ,

C o n t o u r s - > T a b l e [ x A0 . 4 / 3 0 A0 . 3 , { x , 0 , 3 0 } ] , C o n t o u r S h a d i n g - > F a l s e ] ;

Мультимедиа: геометрия, графика, кино, звук

281

3

2

1

О

-1

-2

-3

Кроме перечисленных, функция ContourPlot имеет также опции AxesOrigin, Compiled и ContourSmoothing.

При установке ContourSmoothing->True происходит сглаживание линий уровня.

Ф у н к ц и я U s tC o n to u r P lo t

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

Фактически в таблицу заносятся значения функции cos(sin(;c2 + у2)), к которым до-| бавляется случайное возмущение с помощью функции Random [Real,]

{ - 0 . 2 , 0 . 2 } ] .

ListContourPlot [Table [Cos/'Siл [x*2+ y'K2] ] + R a n d o m [ R e a l , { - 0 . 2 , 0 . 2 } ] , {x/-2/2,0.1},{y,-2/2/0.1}]]/

282

Глава 9,

Графики плотности

Для построения графиков плотности в системе Mathematica имеются функции

DensityPlot И ListDensityPlot.

Функция D e n s ity P lo t

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

DensityPlot[Sin[1/(х*у)],{х,-2,2},{у,-2,2},PlotPoints->25] ;

! Мультимедиа: геометрия, графика, кино, звук

283

При увеличении значения опции PlotPoints количество деталей, естественно, возрастает.

DensityPlot [ S i n [ l / (х*у) ], {х, -2,2 }, {у, -2,2 },PlotPoints->5 0];

284

Гпава 9

Если хотите убрать разграфку на ячейки (сетку), установите Mesh->False.

D ensityP lot [Cos [(x*2*y)b {x,-2Pi,2Pi}, {y,-2Pi,2Pi},

Mesh->False ,PlotPoints->50];

6

4

2

О

-2

-4

-6

-6 -4 -2 0 2 4 6

Стиль ячейки определяет опция MeshStyle. В этой опции можно использовать

Dashing, Thickness, GrayLevel, Hue и RGBColor.

Дополнительно у функции DensityPlot есть опции ColorFunction и Compiled.

Функция L is tD e n s ity P lo t

С помощью этой функции строится график плотности таблично заданной функции. I приведенном ниже примере сначала генерируется таблица, а затем применяется >ункция ListDensityPlot для построения графика плотности по табличным данным.

data=Table [Sin [х] /Cos [хЛ3+уА2] ,{х,-2,2,0.1},{у,-2,2,0.1}]; ListDensityPlot [ d a t a , Mesh -> False];

Мультимедиа: геометрия, графика, кино, звук

285

Конечно, по умолчанию отображается сетка.

data=Table[Sin[(хА2+уЛ2)/10]/(0.1+Sin[х]+Cos[ул2]), [х,-2,2,0.1),[у,-2,2,0.1}];

ListDensityPlot[data];

286

Глава 9

Специальные виды графиков

К специальным видам графиков относятся диаграммы, графики с текстовыми дан­ ными и огромное множество других видов.

Диаграммы и гистограммы

Этот вид графиков в системе Mathematica весьма многочисленный. Ни численно­ стью, ни возможностями оформления этого вида графиков система Mathematica не уступает самым лучшим специализированным пакетам. Рассказывать обо всем этом богатстве с помощью черно-белых рисунков — значит отвергать пословицу: лучше один раз увидеть, чем сто раз услышать. Поэтому я не стану утомительно перечислять всевозможные опции и приводить серенькие рисунки. Если есть потребность, вызовите справочную систему и найдите описание функций BarChart, GeneralizedBarChart, StackedBarChart, PercentileBarChart, PieChart, Histogram и их многочислен­ ных опций, призванных удовлетворить самые изысканные вкусы. Впрочем, мне ка­ жется, что все диаграммы наиболее эффектно смотрятся лишь в цвете.

Графики с текстом

Что бы вы сказали о картине, на которой художник с помощью текста подписал бы все детали. Ну, например, чтобы вы сказали о Джоконде, если бы она пестрела надписями вроде “левая рука”, “правая рука”, “левый мизинец”, “правый мизинец”, “портьера”, “штора”, “левый глаз”, “правый глаз”, “улыбка” и т.д. Думаю, Джоконда потеряла бы свой шарм. Но бывают случаи, когда надписи просто необходимы. На географических картах, например. Вы знаете, как их сделать. Но, оказывается, есть специальные функции, которые для изображения точки используют не малень­ кий кружочек, а цифры или даже любое выражение системы Mathematica! При этом вы можете отображать точку или только надпись.

Функции T e x tL is tP lo t и L a b e le d L is tP lo t

Функции TextListPlot и LabeledListPlot можно вызвать тремя способами.

1-й способ. TextListPlot [ у, , у2, ...] и LabeledListPlot [ у, , у2, ...]. При этом

способе точка с координатами (/, у,) помечается с помощью числа /. Если используе­

те TextListPlot, то даже точки не увидите — только число. Вот первые 25 десятич­ ных знаков основания натуральных логарифмов.

data=First [RealDigits [N [Е, 25] ]]

(2, 7, 1, 8 , 2 , 8 , 1 , 8 / 2 , 8 , 4 , 5 , 9, 0 , 4 , 5 , 2 , 3 , 5 , 3 , 6 , 0 , 2 , 8 , 7 )

А вот как полученные данные можно отобразить на графике.

TextListPlot [datа];

Мультимедиа: геометрия, графика, кино, звук

287

8

 

13

 

 

 

4

б 8 10

 

 

 

24

6

2

 

 

 

 

25

 

 

 

 

 

 

 

 

12

16

19

 

4 •

 

11

18

20

 

2 ■1

 

 

 

5

9

17

 

 

23

 

3

7

-1*4-*—

 

 

 

 

5

10

 

20

25

 

15

 

Точки графика просто изображаются их номерами. А вот функция LabeledListPlot

отображает точки и перенумеровывает их.

j

L a b e le d L is t P lo t [ d a t a ] ;

 

2-

й способ. T e x tL istP lo t [ { xl ,

у, } , { х2 ,

у2 } , ...] И L a b e le d L istP lo t [ { х, , у,},

{л*,

у , },

~ ] . При этом способе точка с координатами ( xt ,

yt ) помечается с

помо­

щью числа

1.

 

 

 

 

 

3-й способ. T e x tL is tP lo t [{ х^, у ,,

выражение! },

{ х2,

у2 , выражение2},

...] и

L a b e le d L is tP lo t [ { х1, у ,, выражениеi }, {х2,

у2 ,

выражение2}, ...]. При

этом

способе точка с координатами ( xs, у ,) помечается с помощью выражение!.

Пусть, например, имеем следующее.

S tr=

'•Колебаться, к ол ебаться, к олебаться завещал нам Великий С и н у с . . .

n * S tr in g L e n g th [S t г ] ;

d a t a - T a b l e [ { i , S i n [ 2 P i * i / 3 5 ] , C h a r a c t e r s [ S t r ] [ [ M o d [ i , n ] + l ] ] } , { 1 , 0 , 7 0 } ] ;

Топка получим вот что.

L a b e le d L is tP lo t [d a ta ] ;

288

Глава S

А вам написать Спираль по спирали слабо?

функция M u lt lp le U s t P lo t

Честно говоря, строку "Колебаться, колебаться, колебаться завещал нам Великий Синус... " записывать по синусоиде с помощью функции LabeledListPlot

несколько хлопотно, так как нужно написать выражение, выбирающее нужный символ из списка. В пакете «Graphics 'MultipleListPlot' функция MultipleListPlot делает это автоматически. Вообще-то, эта функция предназначена

для создания графиков нескольких табличных функций и потому вызывается так: MultipleListPlot [список^, список2, ...). Вот синус и косинус, заданные таблично,

на одном графике.

(Iistl=Table [{х, S i n [2 Pi х] }, {х,0,1,0.1} ]; Iist2=Table [{x, Cos [2 Pi x] }, {x,0,1,0.1} ]);

M u ltip le L istP lo t [listl,list2,

PlotJoined->True, P lo tL e g e n d - > { " С и н у с " , "К о си н ус" }];

Количество опций этой функции просто поражает. Опция SymbolLabel позволяет

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

Пусть имеем следующее.

list3=Table [{x*Sin [2 Pi x],-x*Cos[2 Pi x] }, {x, 0,1,0.05} ];

Тогда получим вот это.

Hu ltip leL istP lo t [list3,SymbolShape-*>{Label}, SymbolLabel->{Characters[ " С п и р а л ь ."]}, Frame->True,PlotRange->All];

Мультимедиа: геометрия, графика, кино, звук

289

0

. 4

 

а

Р

I

п

 

Л

 

 

 

 

ь

 

 

С

0

. 2

 

 

 

 

 

 

ь

 

0

 

 

 

t

 

 

 

 

h и

р а

- 0

. 2

 

 

 

С

 

 

 

 

- 0 .4

п

 

 

 

 

- 0 . 6

 

 

 

 

 

и

 

 

 

- 0

. 8

 

 

 

 

 

 

 

 

 

 

-1

 

 

р

1

. . ■

 

 

 

 

 

 

- 0 . 6

- 0 . 4

- 0 . 2

0

0 . 2

Построение графиков неявно заданных функций — функция ImplicitPlot пакета Graphics'ImplicitPlot'

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

Graphics'ImplicitPlot', который загружается обычным образом: «Graphics' ImplicitPlot'. В нем для построения графиков неявно заданных функций имеется функция ImplicitPlot. Ее первым параметром всегда является уравнение, опре­ деляющее неявно заданную функцию. Функция одной переменной задается неявно с

помощью уравнения. Вид этого уравнения может быть любым допустимым в системе Mathematica; совсем не обязательно его приводить к виду Дх, у ) = 0. Уравнение в сис­ теме Mathematica имеет вид левая часМь == правая часть. Обратите внимание на двой­ ной знак равенства, соединяющий левую и правую части. Уравнение нельзя записать с одним знаком равенства, т.е. в виде левая часть = правая часть, поскольку это при­ сваивание. Функция ImplicitPlot пакета Graphics'ImplicitPlot' используется

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

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

При построении графика неявно заданной функции одной переменной применя­ ются два метода:

решение уравнения; нужно задать интервал изменения переменной;

нахождение линии уровня; задаются интервалы изменения обеих переменных.

Построение граф ика неявно зад анн ой функции одной п е рем енно й пр и изм енении пере­

м енной на за д ан н о м интервале методом реш ения уравнения

При построении графика неявно заданной функции одной переменной различают­ ся два случая:

построение графика неявно заданной функции одной переменной при измене­ нии переменной на заданном интервале;

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

Чтобы построить график решения уравнения, найденный функцией Solve на интер­

вале изменения переменной (xmin, xmax), нужно вызвать функцию Im plicitPlot

[уравнение, {переменная, xm in, x ma x ) ] .

\

290

Глава 9 1