Файл: М.А. Тынкевич Система Matlab Справочное пособие к курсу Численные методы анализа.pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 01.06.2024

Просмотров: 105

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

39

 

1

40

0.8

30

0.6

20

0.4

 

10

0.2

 

 

0

0

2

1

 

 

1

 

2

0.5

 

 

 

 

 

1

 

1

0

 

0.5

0

 

-0.5

0

 

-1

0

 

 

-1

 

-0.5

 

 

 

 

 

 

-2 -2

 

 

-1 -1

 

 

 

 

Рис.9.6

 

 

Рис.9.7

mesh(x,y,z,c), mesh(z,c), mesh(z) определяют задание сетчатой по-

верхности (массив с определяет цвета узлов поверхности; если x,y не ука-

заны, то x=1:n, y=1:m, где [m,n]=size(z).

»[x,y]=meshgrid(-8:0.5:8); Аналогичная функция meshс в до-

»t=sqrt(x.^2+y.^2)+0.001; полнение к поверхности строит про-

» z=sin(t)./t;

екции линий уровня, а meshz дела-

» mesh(x,y,z) %Рис.9.8

ет срез поверхности

до нулевого

 

уровня (своеобразный

пьедестал).

Рис.9.8



40

» meshc(x,y,z) %Рис.9.9

» meshz(x,y,z) %Рис.9.10

Рис.9.9

Рис.9.10

surf(x,y,z,c), surf(z,c), surf(z) определяют задание сплошной поверх-

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

Реализация трехмерной графики может сопровождаться множеством вспомогательных команд, например:

hidden on/off включает или выключает режим удаления невидимых линий (по умолчанию on);

shading faceted / flat / interp устанавливает затенение поверхностей (по умолчанию faceted дает равномерную окраску ячеек с черными гранями, flat – цветами узлов сетки, interp – интерполяцией цветов.

9.3. Задание осей координат

Создание графического объекта исходит автоматически при обращении к командам, порождающим объекты Line и Surface, но может выполняться и командой axec(‘<имя свойства>’,<значение>, ...). Есть и команды более высокого уровня:

axis([xmin xmax ymin ymax]), axis([xmin xmax ymin ymax zmin zmax]) устанавливает масштаб по осям;

axes off / on выключает (включает) вывод на координатные оси обозначений и маркеров;

grid on/off , grid включает (выключает) или переключает режим нанесения координатной сетки на осях;

box on/off, box включает (выключает) или переключает режим рисования контура параллелепипеда, трехмерный объект;

zoom on/off включает (выключает) режим интерактивного масштабирования графиков (левая мышь около точки увеличивает масштаб вдвое, правая – уменьшает; удержанием левой мыши можно выделить прямоугольную область для детального просмотра; zoom out восстанавливает исходный график.

41

9.4.Линии уровня

Вотличие от meshс (...) и surfс(...) функция contour рисует только линии уровня соответствующих поверхностей и выступает в многообразии

синтаксических форм: contour(X,Y,Z) - для массива Z =Z(X,Y), contour(X,Y,Z,n) – то же с указанием числа линий уровня (по умолчанию 10), contour(X,Y,Z,v) – то же для массива указанных значений ; contour(Z), contour(Z,n), contour(Z,v) – аналогичные функции без указа-

ния диапазонов для аргументов и contour(...,LineSpec) - аналогичные функции c указанием типа и цвета линий (см. plot); [C,h]=contour (...) возвращает массив С и вектор дескрипторов, позволяя тем самым продолжить работу с рисунком (давать оцифровку линий, заголовки и др.).

Функция contourf(...) закрашивает области между линиями уровня, аналогична contourf(...) с разницей в формате[C,h, cf]=contour (...), где cf

определяет матрицу раскраски.

 

» [x,y]=meshgrid(-8:0.5:8);

» [x,y]=meshgrid(-2:0.25:2);

» t=sqrt(x.^2+y.^2)+0.001;

» t=sqrt(x.^2+y.^2)+0.001;

» z=sin(t).^3./t;

» z=sin(t).^3./t;

» [c,h]=contour(x,y,z,20);

» [c,h,cf]=contourf(x,y,z,4);

8

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

4

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-2

 

 

 

 

 

 

 

 

-4

 

 

 

 

 

 

 

 

-6

 

 

 

 

 

 

 

 

-8

-6

-4

-2

0

2

4

6

8

-8

 

 

 

Рис.9.11

 

 

 

 

0.8

 

 

 

 

 

 

 

 

0.6

 

 

 

 

 

 

 

 

0.4

 

 

 

 

 

 

 

 

0.2

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-0.2

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

5

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

-5

 

 

 

 

 

 

 

 

-5

 

 

 

 

 

 

 

 

 

 

Рис.9.13

 

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

 

1.5

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-0.5

 

 

 

 

 

 

 

 

-1

 

 

 

 

 

 

 

 

-1.5

 

 

 

 

 

 

 

 

-2

-1.5

-1

-0.5

0

0.5

1

1.5

2

-2

 

 

Рис.9.12

 

 

 

 

 

Функция contour3(...) по синтаксису полностью аналогична contour(...), но изображает не проекции линий уровня, а рисует их в пространственной интерпретации; так команда

[c,h]=contour3(x,y,z,20); дает фигуру (рис.9.13).


42

9.5. Дополнительные возможности

Создание нового графического окна figure; командой figure(n) можно выбирать некоторое из созданных окон в качестве текущего.

Включение (выключение) режима сохранения текущего графика : hold on/off, hold .

Вывод заголовков для графиков (в текущем окне):

 

title(‘текст’), title(<имя функции-строки>’), title(..., ‘Property-

Name’,’PropertyValue’,...), h=title(...).

 

 

 

 

 

 

 

 

Вывод графиков

в нескольких

4

 

4

y=4-0.3*(x-1)

 

 

 

 

 

 

 

 

 

окнах

рисунка:

subplot(m,n,k),

3.5

 

 

3.5

 

 

 

 

 

 

 

 

subplot(mnk) – m – число окон по го-

 

 

 

 

 

 

 

 

 

 

 

 

ризонтали, n – по вертикали, k – номер

3

 

 

3

 

 

 

 

 

 

 

 

 

 

 

окна:

 

 

2.5

 

 

2.5

 

 

 

 

 

 

 

 

 

 

 

 

» subplot(121)

 

2

 

 

2

 

 

 

 

» plot([1:0.3:4])

 

1.5

 

 

1.5

 

 

 

 

» subplot(122)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

» plot([4:-0.3:1])

 

0

5 10 15 0 5 10 15

 

 

» title ('y=4-0.3(x-1)')

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.9.14

 

 

 

 

 

Вывод текста для обозначения координатной оси : xlabel(...), ylabel(...), zlabel(...) – синтаксис аналогичен title(...).

Вывод текста в указанной позиции графика: text(x,y,’текст’), text(x,y,z,’текст’), text(...‘PropertyName’,’PropertyValue’,...), h=text(...).)

- x,y,z –координаты начала текста.

Вывод текста под управлением мыши: gtext(’текст’), h= gtext(’текст’) – выведенный текст можно перемещать мышью.

Вывод легенды legend(‘текст1’,‘текст2’,...), legend(M), legend(h,M), legend off, legend(...,pos), h= legend(...) – здесь М – строковый массив

(длина строк одинакова), off удаляет пояснения к графику, pos определяет позицию легенды ( -1 - справа от графика, 0 – в одном из 4 углов с минимумом потерь точек графика, 1-4 – в указанном углу, [x y] – в указанном месте); можно перетаскивать легенду мышью.

»subplot(111)

»t=[0:pi/30:2*pi];

»a=sin(t); b=cos(t);

»x=0:60;

»plot(x,a+b),hold on

»hp=plot(x,a', 'g', x,b','r'); set(hp,'LineWidth',2)

»legend('a+b','a=sin(t)','b=cos(t)')

»title('y=sin(t)+cos(t)','FontSize',12,'FontWeight','bold')


 

 

 

43

 

 

 

1.5

 

 

y=sin(t)+cos(t)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

a+b

 

 

 

 

 

 

a=sin(t)

1

 

 

 

 

 

b=cos(t)

 

 

 

 

 

 

0.5

 

 

 

 

 

 

0

 

 

 

 

 

 

-0.5

 

 

 

 

 

 

-1

 

 

 

 

 

 

-1.5

10

20

30

40

50

60

0

 

 

 

Рис.9.15

 

 

Маркировка линий уровня, создаваемых функциями contour, contour3, contourf : clabel(C,h), clabel(C,h,v), clabel(C,h,’manual’), clabel(C), clabel(C,v), clabel(C,’manual’) – при наличии h маркировка на линиях, при наличии ’manual’ - принудительная маркировка нажатием левой мыши или пробела (правая мышь или Return завершает маркировку).

9.6. Специальная графика

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

Столбцовые диаграммы реализуются функциями bar и barh: bar(y), bar(x,y) , h=bar(...) – здесь y –массив (одноили двумерный),

x – одномерный, упорядоченный по возрастанию массив (число смежных по горизонтали столбцов диаграммы равно числу столбцов массива у); можно указать параметры относительной ширины столбцов (1 – касание, >1 – перекрытие, <1 – c промежутками), или стиля (‘group’,’stack’) :

» x=0:0.1:6;

» x=0:0.1:6;

» y1=sin(x); y2=cos(x); y3=exp(-x./2);

» y1=sin(x); y2=cos(x); y3=exp(-x./2);

» y=[y1;y2;y3];

» y=[y1;y2;y3];

1

 

 

 

2.5

 

 

 

0.8

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.6

 

 

 

1.5

 

 

 

 

 

 

 

 

 

0.4

 

 

 

 

 

 

 

 

 

1

 

 

 

0.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-0.2

 

 

 

0

 

 

 

 

 

 

 

 

 

-0.4

 

 

 

 

 

 

 

 

 

-0.5

 

 

 

-0.6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-1

 

 

 

-0.8

 

 

 

 

 

 

 

 

 

 

 

 

-1

 

 

 

-1.5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-1 0 1 2 3 4 5 6 7

-1 0 1 2 3 4 5 6 7

Рис.9.16

Рис.9.17