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

Лаба 1 по ММ. Основы работы с пакетом Matlab

.pdf
Скачиваний:
101
Добавлен:
01.06.2015
Размер:
1.79 Mб
Скачать

41

Как и при использовании команды bar, можно блокировать вывод на экран гистограммы, присвоив результат выполнения функции hist(y) двум выходным аргументам. При обращении вида

[n,x]=hist(y) или [n,x]=hist(y,num_of_bins) или

[n,x]=hist(y,bin_centers) вычисляются два вектора. Вектор n содержит число попаданий величины y в каждый из бинов, центры которых находятся в векторе x. Такое использование функции hist позволяет использовать для отрисовки гистограммы не столбиковую диаграмму (функцию bar), а, например, ступенчатую кривую (функцию stairs).

% Пример построения гистограммы с помощью STAIRS%

y=randn(100,1);

% Генерация случайных чисел

dx=0.5;

% Ширина бинов

x=-2.5:dx:2.5;

% Центры бинов

[ny,xh]=hist(y,x);

% Вычисление параметров гистограммы

xh=xh-dx/2;

% Сдвиг координаn по оси x на половину ширины бина

[xl,yl]=stairs(xh,ny);

% Вычисление координат ломаной

hl=line(xl,yl);

% Создание дескриптора ломаной линии и ее отрисовка

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

4.5Математическая модель равноускоренного движения

Рассмотрим решение простейшей задачи математического

моделирования с использованием системы Matlab.

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

Тело начинает двигаться со скоростью V0 в момент времени t0=0 под углом к горизонту α и движется под действием ускорения свободного падения. В начальный момент времени тело имеет координаты x(t0)=x0, y(t0)=y0. Необходимо построит траекторию движения тела.

Математическая модель этой задачи в упрощенном виде может служить описанием движения ракеты или баллистического снаряда.

42

Описываемое движение происходит в двух координатах, по оси у оно является равноускоренным, а по оси х – равномерным:

x(t) x0 cos( )v0t

y(t) y0 sin( )v0t 12 gt 2

- здесь g 9.8

м

2 – ускорение свободного падения.

 

с

 

Для заданных уравнений в Matlab может быть решен целый ряд задач: построение траектории движения тела, построение графиков функций x(t) и y(t), нахождение времени полета тела.

Рассмотрим последнюю задачу. Полет тела начинается в момент времени t=t0 и завершается в момент времени t=t1. Полет тела завершается при условии y(t)=0, а значит, t1 может быть найдено как решение уравнения:

y0 sin( )v0t1 12 gt12 0.

Решение уравнения:

 

 

 

 

v

0

sin( )

 

v 2 sin( ) 2gy

 

 

 

 

 

t1

 

 

 

 

 

0

 

 

 

0

.

 

 

 

 

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Очевидно, что

v

0

sin( )

v2

sin( ) 2gy

, поэтому выбираем

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

v

 

sin( )

v 2 sin( ) 2gy

 

 

 

 

t

 

0

 

 

 

 

0

 

 

0

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В частном случае, при у(t0)=0 получим:

t1

2v0

sin( )

.

 

g

 

 

 

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

Усложним задачу требованием вывести на экран точку, представляющую собой цель, которую должен поразить

43

выброшенный снаряд. Более миролюбивая трактовка требования – обеспечение посадки ракеты в заданной точке.

Приведем пример функции Matlab, которая решает эту задачу.

Сохраним эту функцию в рабочем каталоге в файле plot_rocket.m. в рабочем окне Matlab вызовем эту функцию с параметрами:

>>rocket_plot (50, 31.25,89,10);

В результате будет построена траектория с начальной скоростью 50м/с, начальным углом к горизонту 31.25 градуса, цель с координатами (89,10), показанная на рис.8.

44

Рис 8 траектория равноускоренного движения

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

Положим, что начальные координаты тела нулевые (х0, у0)=(0,0) и пусть (х1, у1) – координаты цели, тогда они удовлетворяют уравнениям:

x1 cos( )v0t1 ,

y1 sin( )v0t1 12 gt12 .

Отсюда следует:

 

1

2

gt 2

y

 

 

x1

 

 

 

1

1

 

и v0

 

a arctg

 

 

 

 

 

 

.

 

 

x1

 

cos( )t1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

а=atan((y_t-0/5G*t1^2)/x_t); v0=(x_t/cos(α)*t1)).

45

5 Задания для лабораторной работы

Пусть тело, начинающее движение со скоростью V0 в момент времени t0=0 под углом α движется под действием ускорения свободного падения. В начальный момент времени тело имеет координаты х(t0)=x0, у(t0)=х0. Необходимо написать функцию, получающую в качестве параметров указанные величины и выполняющую указанные действия.

1.Построить график траектории движения тела. В качестве параметров задать начальное положение тела (х0, у0), угол к горизонту и начальную скорость. Конечное положение тела имеет

у1=0.

2.Построить график траектории движения тела и целевую точку. В качестве параметров задать координаты цели (х1, у1) и время достижения цели, началом движения считать точку (0,0).

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

(0,0).

4.Построить графики нескольких траекторий движения тела, соответствующих нескольким значениям угла, определить угол, обеспечивающий максимальную дальность полета при неизменной начальной скорости. В качестве параметров задать угол к горизонту и начальную скоростью Конечное положение тела имеет у1=0, началом движения считать точку (0,0).

5.Построить графики зависимостей х(t), у(t) движения тела, соответствующих нескольким значениям начального угла. В качестве параметров задать угол к горизонту и начальную скоростью Конечное положение тела имеет у1=0, началом движения считать точку (0,0).

6.Построить графики зависимостей х(t), у(t) движения тела, соответствующих нескольким значениям начальной скорости. В качестве параметров задать угол к горизонту и начальную

46

скоростью Конечное положение тела имеет у1=0, началом движения считать точку (0,0).

7.Построить графики изменения угла с течением времени а(t), соответствующие нескольким значениям начальной скорости. В качестве параметров задать начальную скорость. Конечное положение тела имеет у1=0, началом движения считать точку (0,0)

и a(t) arctg y(t) . x(t)

8.Построить график экономичной траектории достижения телом целевой точки и целевую точку. В качестве параметров задать координаты цели (х1, у1), началом движения считать точку (0,0). Траектория считается экономной, если цель достигается с минимальной начальной скоростью.

9.Построить графики траекторий встречного движения двух тел. Два тела движутся на встречу друг другу, причем начальная точка траектории первого тела является конечной точкой траектории второго тела и наоборот, старт тел происходит одновременно.

Необходимо построить траектории так, чтобы тела не столкнулись. 10.Построить графики траекторий встречного движения двух тел. Два тела движутся навстречу друг другу, причем начальная точка траектории первого тела является конечной точкой траектории второго тела и наоборот, старт тел происходит одновременно. Необходимо построить траектории так, чтобы тела встретились в

некоторой точке траектории, точку стыковки выделить.

6 Выполнение работы

При выполнении работы следует руководствоваться следующей последовательностью шагов:

изучить теоретический материал и разобрать предложенные примеры;

разработать алгоритм и написать программу(ы) согласно варианту задания;

запустить и отладить программу при нескольких наборах

47

исходных данных;

подготовить отчет, который должен включать вариант задания, описание метода решения и алгоритм решения задачи – укрупненную блок-схему, тексты программ, исходные данные и результаты выполнения программы для нескольких наборов данных;

ответить на контрольные вопросы.

7Вопросы для самоконтроля

1.Перечислите основные компоненты рабочей среды Matlab и их назначение.

2.Перечислите основные компоненты меню системы Matlab и их назначение.

3.Как производится чистка экрана?

4.Что означает термин m-file в Мatlab?

5.Для чего используется специальная служебная переменная ans?

6.Какие требуются специальные команды для объявления переменных в Мatlab?

7.Для чего используется символ «;»в конце выражения в строке командного окна?

8.Каковы общие правила вычислений в командном окне?

9.Система Matlab различает строчные и прописные буквы в именах переменных?

10.Почему язык программирования системы Matlab называют интерпретатором?

11. Перечислите базовые типы данных языка программирования системы Matlab?

12.Как создается функция пользователя в системе Matlab?

13.Как оформляются матрицы?

14.Какие поэлементные операции определены для матриц и как они обозначаются?

15.Как выполняется функция find?

16.Как создаются файлы-сценарии, и каковы их особенности?

48

17.Перечислите свойства М-файл-функции?

18.Что называют рабочей областью системы Matlab?

19.Для чего используется функция plot(x, y, s)?

20.Для чего используется команда hold off?

Литература

1.Потемкин В.Г. Вычисления в среде Matlab. –М., Диалог МИФИ,

2004.

2.Никоноров А.В., Фурсов В.А. Компьютерное моделирование процессов и систем с использованием пакета Matlab. Самара, Изд.

СГЭУ, 2009.

49

Приложение. Разработка графического интерфейса пользователя

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

Из сказанного понятно, что обязательными элементами графического интерфейса при решении научных и/или учебных задач должны быть:

1.Одно или несколько окон для вывода графических результатов расчета.

2.Несколько редактируемых окон, с помощью которых задаются и/или изменяются значения параметров задачи.

3.Управляющие кнопки, которые позволяют запускать и останавливать процесс расчета, перерисовывать результаты, выходить из задачи.

4.Поясняющие надписи (статический текст).

Конечно, возможны и другие элементы управления, такие как прокручиваемые списки, радио-кнопки для выбора одного из многих вариантов и т.д., но мы рассмотрим подробно только перечисленные в списке четыре типа.

50

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

Создание внешнего вида интерфейса

Рассмотрим использование Matlaba для разработки внешнего вида графического интерфейса (GUI-GraphicsUserInterface) с использованием средств графического (визуального) программирования. Для вызова визуального редактора необходимо в командном окне Matlaba набрать команду guide.

По истечении определенного времени, определяемого быстродействием вашего компьютера, появятся два новых окна, показанные на рис.9. Одно из них – панель управления (Control Panel, на рисунке слева) и форма или область рисования (Figure, на рисунке справа). Эти окна могут перекрываться, но для ясности изложения их расположили рядом. Показанная выше картинка появится на экране в том случае, если перед вызовом guide отсутствует какой-либо открытый рисунок. В случае же если функция guide вызывается после отрисовки какого-либо рисунка, то он открывается вместо пустого.

Рассмотрим создание графического интерфейса с самого начала. Перед созданием графического интерфейса желательно

―разработать проект‖ того,

что вы хотите иметь

в качестве

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

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

операторами subplot(3,1,k), где k - номер графика. Кроме того, справа

от собственно подокон с

графиками мы хотим

иметь три

редактируемых поля, в которых можно осуществлять