Основы графической визуализации вычислений (47953)

Посмотреть архив целиком

32
















Основы графической визуализации вычислений



Особенности графики системы MATLAB


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

  • Построение графиков точками и отрезками прямых

  • Графики в логарифмическом и полулогарифмическом масштабе

  • Гистограммы и диаграммы

  • Графики специальных типов

  • Создание массивов данных для трехмерной графики

  • Построение графиков трехмерных поверхностей, сечений и контуров

  • Средства управления подсветкой и обзором фигур

  • Средства оформления графиков

  • Одновременный вывод нескольких графиков

  • Управление цветовой палитрой

  • Окраска трехмерных поверхностей

  • Двумерные и трехмерные графические объекты


Основные отличительные черты графики MATLAB


  • существенно улучшенный интерфейс графических окон;

  • введение новой панели инструментов Camera для интерактивного изменения условий видимости объекта;

  • расширенные возможности форматирования графики;

  • возможность создания графики в отдельных окнах;

  • возможность вывода нескольких графических окон;

  • возможность перемещения окон по экрану и изменения их размеров;

  • возможность перемещения области графики внутри графического окна;

  • задание различных координатных систем и осей;

  • высокое качество графики;

  • широкие возможности использования цвета;

  • легкость установки графических признаков - атрибутов;

  • снятие ограничений на число цветов;

  • обилие параметров команд графики;

  • возможность получения естественно выглядящих трехмерных фигур и их сочетаний;

  • простота построения трехмерных графиков с их проекцией на плоскость;

  • возможность построения сечений трехмерных фигур и поверхностей плоскостями;

  • функциональная многоцветная и полутоновая окраска;

  • возможность имитации световых эффектов при освещении фигур точечным источником света;

  • возможность создания анимационной графики;

  • возможность создания объектов для типового интерфейса пользователя.


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


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



Рассмотрим простейший пример - построение графика синусоиды. MATLAB строит графики функций по ряду точек, соединяя их отрезками прямых, т. е. осуществляя линейную интерполяцию функции в интервале между смежными точками. Зададим интервал изменения аргумента x от 0 до 10 с шагом 0.1. Для построения графика достаточно вначале задать вектор х=0:0.1:10, а затем использовать команду построения графиков plot (sin(x)).

Вектор x задает интервал изменения независимой переменной от 0 до 10 с шагом 0.1. Функция plot строит не истинный график функции sin(x), а лишь заданное числом элементов вектора x число точек. Эти точки затем просто соединяются отрезками прямых, т. е. осуществляется кусочно-линейная интерполяция данных графика. При 100 точках полученная кривая глазом воспринимается как вполне плавная, но при 10 - 20 точках она будет выглядеть состоящей из отрезков прямых.

MATLAB строит графики в отдельных окнах, называемых графическими окнами. В главном меню окна команды пункта меню Tools (Инструменты), позволяют вывести или скрыть инструментальную панель. Средства этой панели позволяют легко управлять параметрами графиков и наносить на них текстовые комментарии в любом месте.


Построение в одном окне графиков нескольких функций



Построим графики сразу трех функций:sin(x), cos(x) и sin(x)/х. Прежде всего, отметим, что эти функции могут быть обозначены переменными, не имеющими явного указания аргумента в виде у (x):


>>y1=sin(x); y2=cos(x); y3=sin(x)/x;


Такая возможность обусловлена тем, что эти переменные являются векторами - как и переменная x. Теперь можно использовать одну из ряда форм команды


plot: plot(a1, f1, a2, f2, a3, f3,...).


где a1, a2, a3,…- векторы аргументов функций, а f1, f2, f3,... - векторы значений функций, графики которых строятся в одном окне. В нашем случае для построения графиков указанных функций мы должны записать следующее:


>> plot (x, y1, x, y2, x, y3)



Можно ожидать, что MATLAB в этом случае построит, как обычно, точки графиков этих функций и соединит их отрезками линий. Но, если мы выполним эти команды, то никакого графика не получим вообще. Не исключен даже сбой в работе программы. Причина этого казуса возникнет при вычислении функции y3=sin(x)/x, если x представляет собой массив (вектор), то нельзя использовать оператор матричного деления /.

Чтобы получить график, надо вычислять отношение sin(x) к x с помощью оператора поэлементного деления массивов ./.


>>y1=sin(x); y2=cos(x); y3=sin(x)./x;


Warning: Divide by zero.

(Type "warning off MATLAB:divideByZero" to suppress this warning.)


>> plot(x,y1,x,y2,x,y3)



MATLAB построил графики всех трех функций, но в окне командного режима появилось предупреждение о делении на 0 - в момент, когда х=0. Это говорит о том, что plot «не знает» о том, что неопределенность sin(x)/x=0/0 устранима и дает 1. Это недостаток практически всех систем для численных вычислений.


Графическая функция fplot


MATLAB имеет средства для построения графиков и таких функций, как sin(x)/x, которые имеют устранимые неопределенности. Это делается, с помощью другой графической команды –


fplot: fplot('f(x)', [xmin, xmax])



Она позволяет строить функцию, заданную в символьном виде, в интервале изменения аргумента х от xmin до xmax без фиксированного шага изменения х. Хотя в процессе вычислений предупреждение об ошибке (деление на 0) выводится, график строится правильно, при х=0 sinx/x=1. Команда grid on (сетка)- включает отображение сетки, которая строится пунктирными линиями.


>> fplot('sin(x)/x', [-15,15]); grid on


Построение графиков отрезками прямых


Для отображения функции одной переменной у (x) используются графики в декартовой (прямоугольной) системе координат. При этом обычно строятся две оси: горизонтальная X и вертикальная Y, и задаются координаты x и у, определяющие узловые точки функции у(x).

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

  • plot (X, Y) — строит график функции у(х), координаты точек (х, у) которой берутся из векторов одинакового размера Y и X. Если X или Y — матрица, то строится семейство графиков по данным, содержащимся в колонках матрицы.



Приведенный ниже пример иллюстрирует построение графиков двух функций — sin(x) и cos(x), значения, функции которых содержатся в матрице Y, а значения аргумента х хранятся в векторе X:


>> x=[0 1 2 3 4 5];

>> y1=sin(x); y2=cos(x);

>> plot(x,y1,x,y2)


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



  • plot(Y) — строит график у(x), где значения y берутся из вектора Y, а x представляет собой индекс соответствующего элемента. Если Y содержит комплексные элементы, то строится график plot (real (Y), imag(Y)). Во всех других случаях мнимая часть данных игнорируется.

Пример использования команды plot(Y):


>> x=-2*pi:0.02*pi:2*pi;

>> y=sin(x)+i*cos(3*x);

>> plot(y)


plot(X,Y,S) — аналогична команде plot(X,Y), но тип линии графика можно задавать с помощью строковой константы S.


Значениями константы S могут быть следующие символы:


Цвет линии

Тип точки

Тип линии

Желтый

y

Точка

.

Сплошная

-

Фиолетовый

m

Окружность

0

Двойной пунктир

;

Голубой

c

Крест

x

Штрих-пунктир

-.

Красный

r

Плюс

+

Штриховая

--

Зеленый

g

Звездочка

*



Синий

b

Квадрат

s



Белый

w

Ромб

d



Черный

k

Треугольник (вниз)

v





Треугольник (вверх)

^





Треугольник (влево)

<





Треугольник (вправо)

>





Пятиугольник

p





Шестиугольник

h





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

  • рlot (X1,Y1, S1, Х2, Y2, S2, ХЗ, Y3, S3,...) - эта команда строит на одном графике ряд линий, представленных данными вида (X.,Y.,S.), где X. и Y. — векторы или матрицы, а S. — строки. С помощью такой конструкции возможно построение, например, графика функции линией, цвет которой отличается от цвета узловых точек. Так, если надо построить график функции линией синего цвета с красными точками, то вначале надо задать построение графика с точками красного цвета (без линии), а затем графика только линии синего цвета (без точек).

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

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


>> x=-2*pi:0.1*pi:2*pi;

>> y1=sin(x);y2=sin(x).^2;

>> y2=sin(x).^2;

>> y3=sin(x).^3;

>>plot(x,y1,'-m',x,y2,'-.+r',x,y3,'--ok')


Здесь график функции y1 строится сплошной фиолетовой линией, график у2 строится штрих пунктирной линией с точками в виде знака «плюс» красного цвета, а график yЗ строится штриховой линией с кружками черного цвета.


Графики в логарифмическом масштабе


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



  • loglogx(...) - синтаксис команды аналогичен ранее рассмотренному для функции plot(...). Логарифмический масштаб используется для координатных осей X и Y. Ниже дан пример применения данной команды:


>> x=logspace(-1,3);

>> loglog(x,exp(x)./x) grid on


Функция x = logspace(d1, d2) формирует вектор-строку, содержащую 50 равноотстоящих в логарифмическом масштабе точек, которые покрывают диапазон от 10d1 до 10d2 .

Функция x =logspace(d1, d2, n) формирует вектор-строку, содержащую n равноотстоящих в логарифмическом масштабе точек, которые покрывают диапазон от 10d1 до 10d2.

На рисунке представлен график функции ехр(х)/х в логарифмическом масштабе. Командой grid on строится координатная сетка. Неравномерное расположение линий координатной сетки указывает на логарифмический масштаб осей.


Графики в полулогарифмическом масштабе


В некоторых случаях предпочтителен полулогарифмический масштаб графиков, когда по одной оси задается логарифмический масштаб, а по другой — линейный.

Для построения графиков функций в полулогарифмическом масштабе используются следующие команды: semilogx(...) — строит график функции в логарифмическом масштабе (основание 10) по оси X и линейном по оси Y; semilogy(...)— строит график функции в логарифмическом масштабе по оси Y и линейном по оси X.


Случайные файлы

Файл
103738.rtf
309875.rtf
131733.rtf
22839-1.rtf
5883-1.rtf