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

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

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

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

Добавлен: 01.06.2024

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

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

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

34

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

30

 

 

 

 

 

 

 

 

 

25

 

 

 

 

 

 

 

 

 

20

 

 

 

 

 

 

 

 

 

15

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

8

9

0

2

 

 

 

 

 

 

 

1.8

 

 

 

 

 

 

 

1.6

 

 

 

 

 

 

 

1.4

 

 

 

 

 

 

 

1.2

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

0.8

 

 

 

 

 

 

 

0.6

14

16

18

20

22

24

26

12

Рис.8.6

Рис.8.7

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

Эта модель Вольтерра-Лотка с логистической поправкой описывается системой уравнений

dxdt1 = ( a bx2 )x1 αx12 dxdt2 = ( c + dx1 )x2 αx22

с условиями заданной численности “жертв” и “хищников” в начальный момент t=0.

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

function f=VolterraLog(t,x) a=4;

b=2.5;

c=2;

d=1; alpha=0.1;

f(1)= (a-b*x(2))*x(1)-alpha*x(1)^2; f(2)= (-c+d*x(1))*x(2)-alpha*x(2)^2; f=f';


35

»opt=odeset('OutputSel',[1 2], 'OutputFcn', 'odephas2');

»[T,X]=ode45('VolterraLog', [0 10],[3 1],opt );

2.8

 

 

 

 

 

 

 

2.6

 

 

 

 

 

 

 

2.4

 

 

 

 

 

 

 

2.2

 

 

 

 

 

 

 

2

 

 

 

 

 

 

 

1.8

 

 

 

 

 

 

 

1.6

 

 

 

 

 

 

 

1.4

 

 

 

 

 

 

 

1.2

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

0.8

1

1.5

2

2.5

3

3.5

4

0.5

 

 

Рис.8.8

(α=0)

 

 

 

2

 

 

 

 

 

 

1.5

 

 

 

 

 

 

1

1.5

2

2.5

3

3.5

4

1

 

 

Рис.8.9 (α=0.1)

 

Имеется возможность построения и трехмерного фазового

портрета с помощью функции odephas3.

Например, решение за-

дачи Эйлера свободного движения твердого тела:

 

 

dxdt1 = x2 x3 ,

dxdt2 = −x1 x3 ,

dxdt3

= −0.51 x1x2 ;

 

 

 

x1( 0 ) = x2 ( 0 ) = x3 ( 0 ) = 0

 

 

 

 

 

 

выступает в виде:

 

 

 

 

 

 

 

 

 

 

function f=Eiler(t,x)

 

 

 

 

 

 

 

 

 

f(1)=

x(2)*x(3);

 

 

 

 

 

 

 

 

 

f(2)=

-x(1)*x(3) ;

 

 

 

 

 

 

 

 

 

f(3)=

-0.51*x(1)*x(2) ;

 

 

 

 

 

 

 

 

f=f';

 

 

 

 

 

 

 

 

 

 

 

» opt=odeset('OutputSel',[1 2 3], 'OutputFcn', 'odephas3');

» [T,X]=ode45('Eiler', [0

7.25], [0

 

0 1], opt ); % рис.8.10

» [T,X]=ode45('Eiler', [0:0.25:7.25],[0 1 1]);

 

 

 

» plot(T,X)

 

 

 

 

 

 

% рис.8.11

 

 

 

1

 

 

 

 

 

 

 

 

1

 

 

0.8

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.95

 

 

0.6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.9

 

 

0.4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.85

 

 

0.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.8

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.75

 

 

-0.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.7

 

 

-0.4

 

 

 

 

 

 

 

 

1

 

 

-0.6

 

 

 

 

 

 

 

 

0.5

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0.5

-0.8

 

 

 

 

 

 

 

 

-0.5

 

0

 

 

 

 

 

 

 

 

 

 

-0.5

-1

 

 

 

 

 

 

 

 

 

-1 -1

 

 

 

 

 

 

 

 

 

 

0

1

2

3

4

5

6

7

8

 

Pис.8.10

 

 

Pис.8.11

 

 

 

 


36

9. Элементарная графика

Здесь мы рассмотрим лишь небольшую часть графических команд высокого уровня, не затрагивая их базу - графические объекты (Axes, Line, Patch, Surface, Text).

9.1. Двумерная графика

Графика в линейном масштабе

plot (y) - построение графика одномерного массива в зависимости от номера элемента (для двумерного массива строятся графики для столбцов); plot (x,y) - построение графика функции y=y(x) ; при двумерном х строятся графики х=х(у); если оба массива двумерные, строятся зависимо-

сти для соответствующих столбцов;

plot (x,y, LineSpec) – заданием строки LineSpec (до 3 символов) определяет стиль линий , форму маркера точек и цвет линий и маркера:

Символ стиля линии

Цвет

 

Цвет

 

Непрерывная

-

Желтый

y

Зеленый

g

Штриховая

--

Фиолетовый

m

Синий

b

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

:

Голубой

c

Белый

w

Штрихпунктирная -.

Красный

r

Черный

k

Маркер может определяться символами :

. + * ° × s (квадрат) d (ромб) р (пятиугольник) h(шестиугольник) v ^ < > (стрелки)

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

plot (x1,y1, LineSpec1, x1,y1, LineSpec2,...) – строит на одном графи-

ке несколько линий (диапазон по аргументу - объединение х1 и х2;

plot (...,’PropertyName’,PropertyValue,...) –задает значения свойств графического объекта Line (толщину линий LineWidth, размер маркера

MarcerSize, цвет маркера MarcerFaceColor и и др.) .

» x=0:0.3:6;

 

» y=besselj(0,x);

% функция J0(x)

» x1=0:0.4:8;

 

» y1=besselj(1,x1);

% функция J1(x)

» plot(x,y,'-sk', x1,y1,'-pk','LineWidth',1 )

% рис.9.1

Построение графиков функций

 

fplot( <имя функции>,limits) строит график функции (функций) в интервале limits=[xmin,xmax]. В качестве имени функции может использо-

ваться М-файл или строка типа ‘sin(x)’, ‘[sin(x) cos(x) ]’, ‘[sin(x), myfun1(x), myfun2(x)]’. Можно установить размеры графика по оси значений функ-


37

ции limits=[xmin,xmax ymin ymax].

fplot( <имя функции>,limits, eps) строит график c относительной погрешностью ерs (по умолчанию 0.002) и максимальное число шагов (1/eps)+1. Эту конструкцию можно дополнить четвертым параметром n (n+1 – минимальное число точек) и параметром LineSpec:

» fplot( '[besselj(0,x) besselj(1,x) 0]',[0 10],[],20) & рис.9.2 ezplot('f(x)') строит график f(x), заданной символьным выражением

(например, ezplot('x^2-2*x+1') ), на интервале [-2π 2π] с выводом выражения в качестве заголовка графика.

ezplot('f(x)', limits) и ezplot('f(x)', limits, fig) строят график f(x) на указанном интервале и в заданном окне.

1

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

-0.5

1

2

3

4

5

6

7

8

0

1

 

 

 

 

 

 

 

 

 

 

0.5

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

-0.5

1

2

3

4

5

6

7

8

9

10

0

Рис.9.1

Рис.9.2

График в полярных

координатах определяется функциями

polar(f,r) и polar(f,r, LineSpec), где f – массив значений угла и r – соответ-

ствующие значения радиуса : x=r cos(ϕ),

y=r sin(ϕ):

 

 

» f=0:0.01:2*pi;

 

» f=0:0.01:12*pi;

 

» r=sin(2.*f).*cos(2.*f);

» r=exp(-0.1*f);

 

 

» hp=polar(f,r),hold on

» hp=polar(f,r) ,hold on

» set(hp,'LineWidth',4) % рис.9.3

» set(hp,'LineWidth',2) % рис.9.4

 

90

0.5

 

90

 

 

 

120

60

1

 

 

 

 

 

 

120

60

 

 

0.375

 

 

 

 

 

 

0.8

 

 

 

 

 

 

 

150

 

0.25

30

150

0.6

30

 

 

 

 

0.4

 

 

0.125

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0.2

 

180

 

 

0

180

 

0

 

 

 

 

 

210

 

 

330

210

 

330

 

 

 

 

 

 

240

 

300

240

 

300

 

270

 

 

270

 

 

Рис.9.3

Рис.9.4


38

График в логарифмическом масштабе задается функцией loglog c

тем же набором параметров, что и plot, с той лишь разницей, что проводится масштабирование десятичным логарифмированием по обеим координатам.

График в полулогарифмическом масштабе задается функциями semilogx и semilogy c тем же набором параметров, что и plot (проводится масштабирование логарифмированием по одной из координат).

График с двумя осями ординат (одна отображается слева, другая справа) реализуется функцией plotyy(x1,y1,x2,y2) и той же функцией с добавлением параметров масштабирования ‘f1’ или ‘f1’,’f2’, в роли которых могут выступать plot, semilogx, semilogx, loglog:

»x=0:0.01:12*pi;

»plotyy(x,sin(x).*exp(-0.1.*x),x, 10*exp(-0.1.*x)) % Рис.9.5

1

 

 

 

 

 

 

 

1 0

0

 

 

 

 

 

 

 

5

- 1

5

1 0

1 5

2 0

2 5

3 0

3 5

0

0

4 0

 

 

 

 

Рис.9.5

 

 

 

 

9.2.Трехмерная графика

Втрехмерной графике выполняются представления функции z=z(x,y), отличающиеся способом соединения точек: линия, сечения, сетчатая или сплошная поверхность.

plot3(x,y,z) в тех же вариациях, что и plot, предполагает задание одномерных и двумерных массивов (строятся точки с координатами x(i,:),y(i,:),z(i,:) для каждого столбца и соединяются прямыми линиями. Если используется [x,y]=meshgrid(...), то строятся сечения.

» t=0:pi/50:10*pi;

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

» plot3(sin(t),cos(t),t) %Рис.9.6

» z=exp(-x.^2-y.^2);

 

» plot3(x,y,z)

%Рис.9.7