ОВИ_ЛР_2012
.pdf4.2.6. Вывод нескольких графиков на одни оси
Для отображения нескольких графиков функций одной переменной на одних осях использовались возможности функций plot, plotyy, semilogx, semilogy, loglog. Они позволяют выводить графики нескольких функций,
задавая соответствующие векторные аргументы парами, например plot(x,f,x,g). Однако для объединения трехмерных графиков их использовать нельзя. Для объединения таких графиков предназначена команда hold on, которую нужно задать перед построением графика. В
следующем примере объединение двух графиков (плоскости и конуса)
приводит к их пересечению. Конус задается параметрически следующими зависимостями:
x(u,v) 0.3 u cosv , |
y(u,v) 0.3 u sinv , |
z(u,v) 0.6 u , u,v [ 2, 2 ] . |
Для графического отображения конуса сначала необходимо сгенерировать с помощью двоеточия вектор-столбец и вектор-строку,
содержащие значения параметров на заданном интервале (важно, что u
вектор-столбец, а v вектор-строка):
»u = [-2*pi:0.1*pi:2*pi]';
»v = [-2*pi:0.1*pi:2*pi];
Далее формируются матрицы X, Y, содержащие значения функций x(u,v) и y(u,v) в точках, соответствующих значениям параметров.
Формирование матриц выполняется с помощью внешнего произведения векторов.
91
Замечание 2. |
|
|
|
|
|
|
|
|
Внешним |
произведением |
векторов |
|
|
a (a1 ,...,a j ,...,aN ) , |
|||
|
|
|
|
|||||
b (b1,...,bk ,...,bM ) называется матрица C (c jk ), |
j 1,N , k 1,M размера |
|||||||
N M, элементы которой вычисляются по формуле c jk |
a jbk . |
|||||||
Вектор а является вектор-столбцом и в MATLAB представляется в виде двумерного массива размера N на один. Вектор-столбец b при транспонировании переходит в вектор-строку размера один на М. Вектор-
столбец и вектор-строка есть матрицы, у которых один из размеров равен единице. Фактически, С = abT, где умножение происходит по правилу матричного произведения. Для вычисления матричного произведения в
MATLAB используется оператор "звездочка". Определим внешнее произведение для двух векторов:
»a = [1;2;3];
»b = [5;6;7];
»C = a*b'
C =
5 6 7
10 12 14
15 18 21
Сформируем матрицы X, Y, необходимые для графического
отображения конуса:
»X = 0.3*u*cos(v);
»Y = 0.3*u*sin(v);
Матрица Z должна быть того же размера, что и матрицы X и Y. Кроме того, она должна содержать значения, соответствующие значениям
92
параметров. Если бы в функцию z(u,v) входило произведение и и v, то
матрицу Z можно было заполнить аналогично матрицам X и Y при помощи внешнего произведения. С другой стороны, функцию z(u,v) можно представить в виде z(u,v) 0.6 u g(v) , где g(v) 1. Поэтому для
вычисления Z можно применить внешнее произведение векторов u и g(v) ,
где вектор-строка g(v) имеет ту же размерность, что v, но состоит из единиц:
» Z = 0.6*u*ones(size(v));
Все требуемые матрицы для отображения конуса созданы. Задание плоскости выполняется следующим образом:
»[X,Y] = meshgrid(-2:0.1:2);
»Z = 0.5*X+0.4*Y;
Теперь не сложно записать и полную последовательность команд для построения пересекающихся конуса и плоскости:
»u = [-2*pi:0.1*pi:2*pi]';
»v = [-2*pi:0.1*pi:2*pi];
»X = 0.3*u*cos(v);
»Y = 0.3*u*sin(v);
»Z = 0.6*u*ones(size(v));
»surf(X, Y, Z)
»[X,Y] = meshgrid(-2:0.1:2);
»Z = 0.5*X+0.4*Y;
»hold on
»mesh(X, Y, Z)
»hidden off
93
Команда hidden off применена для того, чтобы показать часть конуса,
находящуюся под плоскостью.
Обратите внимание, что команда hold on распространяется на все последующие выводы графиков в текущее окно. Для размещения графиков в новых окнах следует выполнить команду hold off. Команда hold on может применяться и для расположения нескольких графиков функций одной переменной, например,
» plot(x,f,х,g)
эквивалентно последовательности
»plot(х,f)
»hold on
»plot(x,g)
4.3. Индивидуальные задания
1. В соответствии с номером N по списку в журнале группы,
записанном в виде N = СМ, где С старшая цифра, М младшая цифра, в
целочисленном интервале [N, N+5] рассчитайте таблицу значений для выражения, заданного с помощью табл. 4.3 и табл. 4.4:
2.Выполните задание 1, используя отрицательный шаг 1.
3.Отобразите в линейном масштабе на одних осях два графика функции f (x) из задания один с шагами 1.0 и 0.05 в интервале [N, N+5].
С помощью функции plotyy постройте с шагом 0.1 в интервале [N, N+5] графики функций f (x) и 10 2 f (x) sin( x) .
4. Выполните задание 3, используя:
логарифмический масштаб по обеим осям;
94
логарифмический масштаб по оси абсцисс;
логарифмический масштаб по оси ординат.
При выполнении этого пункта используйте шесть типов маркеров,
шесть различных цветов линий и разные типы линий.
5.Сформируйте матрицу и вектор размерами соответственно не менее 5 6 и 17, первыми элементами которых является Ваш номер по списку в журнале группы. Постройте графики вектора и матрицы.
6.Приведите график функции z(x, у) = х2 + у2 на области определения
ввиде квадрата х [0, l], y [0, l] с шагом 0.2 и график функции с меньшим шагом сетки.
7.Постройте прозрачную и непрозрачную каркасную поверхность
для функции z(x, y) 4 sin(2x) cos(1.5y) (1 x2 ) y (1 y) на
прямоугольной области определения х [ l, l], y [0, l].
Измените функцию z(x, y) каким-либо образом, но таким, чтобы в
выражении функции фигурировал Ваш номер по списку в журнале группы.
Приведите в отчете прозрачную и непрозрачную каркасную поверхность для вашей функции.
8. Постройте каркасную поверхность функцию z(x, y) с помощью команд surf(X,Y,Z), shading flat, shading interp и приведите их в отчете.
9. Постройте каркасную поверхность функции z(x, y) с помощью команд surf(X,Y,Z) и colorbar. Результаты приведите в отчете.
10. Постройте каркасную поверхность функции z(x, y) с помощью команд surfс, meshc и colorbar. Результаты приведите в отчете.
11. Постройте поверхности функции z(x, y) , состоящие из линий уровня, с помощью функции contour3 с тремя и четырьмя аргументами.
Результаты приведите в отчете.
12. Постройте контурные графики функции z(x, y) с помощью функций contour, contourf, clabel. Результаты приведите в отчете.
95
13.Выполните три различных цветовых оформления графика функции z(x, y) . Результаты приведите в отчете.
14.Выполните построение пересекающихся конуса и плоскости.
15.Выполните пересечение конуса двумя различными плоскостями.
16.Оформить отчет по лабораторной работе.
Таблица 4.3 – Индивидуальное задание по младшей цифре М
Младшая |
|
|
0 или 5 |
|
1 или 6 |
|
2 или 7 |
|
|
3 или 8 |
|
4 или 9 |
||||||||||||||||||||
цифра М |
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C2 / 5 |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D |
AC 3 |
|
|
|
||||||||||
|
|
|
|
|
A2 / 3 C3 |
|
|
|
ABC |
|
|
A |
|
|
|
|
|
|
||||||||||||||
Выражение |
|
|
|
|
B |
|
|
|
|
|
D |
|
|
|||||||||||||||||||
|
|
|
1 |
|
|
|
|
|
|
|
||||||||||||||||||||||
|
(B D)2 |
|
|
A2 D |
D1 / 3 / C2 |
|
|
|
|
|
|
|
|
C2 / 3 B2 |
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
|
|
B3 5 A2 |
|
|||||||||||||||||||||||
Таблица 4.4 – Индивидуальное задание по старшей цифре С |
||||||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Старшая |
|
|
|
|
A |
|
|
B |
|
|
|
|
|
|
|
C |
|
D |
||||||||||||||
цифра С |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
(sin(N ) cos(N ))2 |
|
(ln( N 2)) / N |
|
|
(exp(N / N 2 )) 2 |
|
A B |
|||||||||||||||||||||||
1 |
|
|
1 (cos(N 1))2 |
|
(ln( N 2 )) 2 |
|
|
|
exp(N ) 1 |
|
A C |
|||||||||||||||||||||
2 |
|
|
(tg(N ))2 N 1 |
|
(log(N )) 2 |
|
|
|
1 N / exp(N ) |
|
B / C |
|||||||||||||||||||||
3 |
sin(N ) /(ctg(N ))4 |
|
log( N 3 |
N 3 ) |
|
|
|
N / exp(N ) |
|
C /( A B) |
||||||||||||||||||||||
96
ЛАБОРАТОРНАЯ РАБОТА 5
ИССЛЕДОВАНИЕ СПОСОБОВ ФОРМИРОВАНИЯ НЕЧЕТКИХ МНОЖЕСТВ И ОПЕРАЦИЙ НАД НИМИ
5.1. Цель лабораторной работы
Получение и закрепление знаний, формирование практических навыков построения нечетких множеств с использованием различных типов функций принадлежности. Ознакомление с наиболее распространенными логическими операциями над нечеткими множествами.
5.2. Краткие сведения из теории
5.2.1.Функций принадлежности
5.2.1.1.Треугольная функций принадлежности
Инструментарий нечеткой логики (ИНЛ) в составе пакета MATLAB
содержит 11 встроенных типов функций принадлежности (ФП),
формируемых на основе кусочно-линейных функций, распределения Гаусса, сигмоидной кривой, квадратических и кубических полиномиальных кривых. К наиболее простым ФП можно отнести треугольную и трапециевидную. Наименование треугольной ФП – trimf (triangle membership function). В параметрическом виде она представляет собой не что иное, как набор трех точек, образующих треугольник.
Описание функции:
у = trimf (x, [a, b, с]),
97
где вектор х – базовое множество, на котором определяется ФП. Величины
аи с задают основание треугольника, b – его вершину.
Ваналитическом виде треугольная ФП может быть задана следующим образом (рис. 5.1, а):
0, x a,
x a , a x b, f (x, a,b, c) b a
c x ,b x c,c b
0, x c.
а б
Рис. 5.1. Треугольная (а) и трапециевидная (б) функции принадлежности
Далее рассмотрим примеры использования различных ФП в системе.
Примеры представляют собой фрагменты программ и комментариев на языке пакета MATLAB.
Пример 5.1. Программа использования ФП trimf.
»х = 0 : 0,1 : 10;
»у = trimf (x, [3 6 8]);
98
» plot (х, у);
» xlabel ('trimf (x, P), P = [3 6 8]');
5.2.1.2. Трапециевидная функций принадлежности
Трапециевидная ФП - trapmf (trapezoid membership function) –
отличается от предыдущей функции лишь тем, что имеет верхнее основание.
Описание функции:
у = trapmf (х, [a, b, с, d]),
где параметры а и d – нижнее основание трапеции; b и с – верхнее основание трапеции (рис. 5.1, б).
Аналитическая запись трапециевидной функции имеет вид:
0, x a,
x a , a x b,
b a
f (x, a,b, c, d ) 1, b x c,
d x , c x d ,
d c0, x d.
5.2.1.3. Простая и двухсторонняя функция принадлежности Гаусса
На основе функции распределения Гаусса можно построить ФП двух видов: простую функцию принадлежности Гаусса и двухстороннюю,
образованную с помощью различных функций распределения Гаусса.
Первая из них обозначается gaussmf, а вторая – gauss2mf.
Описание функции:
у = gaussmf (x, [σ, с]).
99
Пример 5.2. Программа использования ФП gaussmf.
» X = -20 : 1 : 20;
» Y = gaussmf (х, [4 5]); » plot (х, у);
Симметричная функция Гаусса зависит от двух параметров σ и с
(рис. 5.2, а):
|
( x c)2 |
f (x, , c) e |
2 2 . |
а б
Рис. 5.2. Простая (а) и двухсторонняя (б) функции принадлежности Гаусса
Описание функции:
у = gauss2mf (x, [σ1, с1, σ2, c2]).
Последнее выражение является комбинацией двух различных функций распределения Гаусса. Первая определяется параметрами σ1 и с1 и
задает форму левой стороны, а вторая (параметры σ2, c2) – правой стороны ФП.
100
