Как писать функции в MATLAB. Пакеты анализа и синтеза систем управления. Пакеты для обработки сигналов и изображений

  • 28.06.2019

Инструкция

В среде MATLAB есть несколько режимов работы. Самый простой – это ввод команд непосредственно в окно команд (Command Window ).
Если оно не видно в интерфейсе программы, значит нужно его открыть. Найти окно команд можно через меню Desktop -> Command Window .
Давайте для примера введём в это окно последовательно друг за другом команды "x = ; y = sqrt(x); plot(y);", и нажмём клавишу "Ввод" (Enter ). Программа моментально создаст переменные X, создаст переменную Y и посчитает её значения по заданной функции, а затем построит её график.
Стрелками клавиатуры "Вверх" и "Вниз" в окне команд мы можем переключаться между всеми введёнными командами, тут же изменять их при необходимости, и по нажатию Enter снова отправлять среде MATLAB на исполнение.
Удобно? Безусловно. И главное - очень быстро. Все эти действия занимают несколько секунд.
Но что если нужна более сложная организация команд? Если нужно циклическое исполнение каких-то команд? Вводить команды вручную по одной, а потом долго искать их в истории может быть довольно утомительным делом.

Чтобы упростить жизнь учёному, инженеру или студенту, служит окно редактора (Editor ). Давайте откроем окно редактора через меню Desktop -> Editor .
Здесь можно создавать новые переменные, строить графики, писать программы (скрипты), создавать компоненты для обмена с другими средами, создавать приложения с пользовательским интерфейсом (GUI), а также редактировать уже имеющиеся. Но нас в данный момент интересует написание программы, содержащей функции для повторного использования в будущем. Поэтому идём в меню File и выбираем New -> M-File .

В поле редактора напишем простую программу, но чуть-чуть усложним её:

function draw_plot(x)
y = log(x); % Задаём первую функцию
subplot(1, 2, 1), plot(x, y); % Строим первый график
y = sqrt(x); % Задаём вторую функцию
subplot(1, 2, 2), plot(x, y); % Строим второй график

Мы добавили вторую функцию и будем выводить сразу два графика рядом друг с другом. Знаком процента обозначаются в среде MATLAB комментарии.
Не забудем сохранить программу. Стандартное расширение файла с программой Матлаб – *.m .
Теперь закройте редактор и окно с графиком, который мы построили ранее.

Переходим обратно в окно команд.
Можно очистить историю команд, чтобы лишняя информация нас не отвлекала. Для этого кликните правой кнопкой мыши на поле ввода команд и в открывшемся контекстном меню выберите пункт Clear Command Window .
Переменная X у нас осталась после предыдущего эксперимента, мы её не изменяли и не удаляли. Поэтому в окно команд можно сразу ввести:
draw_plot(x);
Вы увидите, что MATLAB прочитает нашу функцию из файла и выполнит её, нарисовав график.

В среде MATLAB есть несколько режимов работы. Самый простой - это ввод команд непосредственно в окно команд (Command Window ).

Окно команд MATLAB

Если оно не видно в интерфейсе программы, откроем его. Найти окно команд можно через меню Desktop Command Window .

Давайте для примера введём в это окно последовательно друг за другом команды

X = ; y = sqrt(x); plot(y);

и нажмём клавишу «Ввод» (Enter ). Программа моментально создаст переменную X, создаст переменную Y и посчитает её значения по заданной функции, а затем построит её график.

Стрелками клавиатуры вверх и вниз в окне команд мы можем переключаться между введёнными командами, тут же изменять их, а по нажатию Enter отправлять среде MATLAB на исполнение. Стрелками влево и вправо можно перемещаться по введённой команде и редактировать её. Если в конце команды стоит точка с запятой, то результат будет посчитан, но не будет выведен в окно команд; в противном случае результат выполнения команды будет отображён тут же. По любой функции в среде MATLAB есть подробная встроенная справка. Например, чтобы получить справку по команде plot , выделите эту команду, нажмите на неё правой кнопкой мыши, и в открывшемся контекстном меню выберите пункт Help on Selection или нажмите клавишу F1 .

Получение справки по командам MATLAB

Удобно? Безусловно. И главное - очень быстро. Все эти действия занимают несколько секунд.

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

2 Работа с редактором в среде MATLAB

Чтобы упростить жизнь учёному, инженеру или студенту, служит окно редактора (Editor ). Давайте откроем окно редактора через меню Desktop Editor .

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

Нас в данный момент интересует написание программы, содержащей функции для повторного использования в будущем. Поэтому идём в меню File редактора и выбираем New M-File .


М-файлами в среде МАТЛАБ называются файлы, содержащие текст программ (скрипты) или определённые пользователем функции.

Давайте напишем в редакторе простую функцию draw_plot :

function draw_plot(x) % Задаём первую функцию: y = log(x); % Строим первый график: subplot(1, 2, 1), plot(x, y); % Задаём вторую функцию: y = sqrt(x); % Строим второй график: subplot(1, 2, 2), plot(x, y);

Переходим обратно в окно команд.

Можно очистить историю команд, чтобы лишняя информация нас не отвлекала. Для этого кликните правой кнопкой мыши на поле ввода команд и в открывшемся контекстном меню выберите пункт Clear Command Window .

Переменная X у нас осталась после предыдущего эксперимента, мы её не изменяли и не удаляли. Поэтому в окно команд можно сразу ввести:

Draw_plot(x);

Вы увидите, что MATLAB прочитает нашу функцию из файла и выполнит её, нарисовав график.


Если MATLAB при выполнении программы выдаст сообщение, Undefined function or method "draw_plot" for input arguments of type "double". (т.е. вызывается неизвестная функция), нажмите в окне редактора зелёную кнопку со стрелкой (Run ) или через меню редактора: Debug Run draw_plot.m . MATLAB сообщит, что директория, в которой находится файл с нашей программой (draw_plot.m), не является рабочей директорией. Нажмите в диалоговом окне кнопку Add to Path , чтобы пакет MATLAB добавил директорию к рабочему пути и мог использовать наш M-файл. После этого программа должна запуститься нормально.

Большинство разработчиков с трудом представляет, как его синтаксис, так и возможности. Всё дело в том, что язык напрямую связан с популярным программным продуктом, стоимость которого может достигать потрясающих воображение значений. Итак, главный вопрос: так ли хорош непосредственно язык Matlab? И может ли он быть полезен именно вам.

Использование

Начнём не со стандартного экскурса в историю и обсуждения плюсов и минусов языка, а с программной среды MATLAB/Simulink - единственного места, где герой этого текста может быть полезен. Просто представьте себе графический редактор, в котором вы сможете реализовать любую свою задумку, не имея за плечами нескольких лет опыта и соответствующего образования. И создав один раз схему взаимодействия инструментов, получить качественный скрипт для многократного использования.

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

Что касается цены, то в верхней границы почти нет, а вот нижняя находится в район 99$. Чтобы урвать столь мощный продукт за относительно небольшие деньги, вам необходимо быть студентом ВУЗа. И конечно же вы получите довольно ограниченный продукт.

Особенности языка

Язык MATLAB - инструмент, обеспечивающий взаимодействие оператора (часто даже не программиста) со всеми доступными возможностями анализа, сбора и представления данных. У него есть очевидные плюсы и минусы, свойственные языку живущему в замкнутой экосистеме.

Недостатки:

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

    Узконаправленный. Нет никакой больше программной платформы, где бы MATLAB был полезен.

    Дороговизна ПО. Если вы не студент - либо готовьтесь опустошить карманы или перейти границу закона. И даже если студент - цена приличная.

    Невысокий спрос. Несмотря на большой интерес к MATLAB практически во всех сферах, фактически и легально его используют лишь немногие.

Достоинства:

    Язык легок для изучения, обладает простым и понятным синтаксисом.

    Огромные возможности. Но это скорее преимущество всего продукта в целом.

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

    Программная среда позволяет преобразовывать его в “быстрый” код на С, С++.

Целевая аудитория

Разумеется, MATLAB нужен далеко не всем. Несмотря на широчайшую область применения, трудно представить, что рядовому разработчику приложений может понадобиться знание этого языка. MATLAB крайне полезен в областях, требующих особой надёжности при обработке данных, например, в системах автопилота в автомобилях или бортовых электронных системах самолёта.

То есть если вы не очень программист, но так или иначе ваша профессия связана с необходимостью программной обработки данных, то продукт MATLAB/Simulink с соответствующим языком способны сильно упростить ваши каждодневные задачи.

Литература

Завершаем обзор языка как всегда списком учебной литературы. Само-собой среди них вы не отыщите книг исключительно по языку, но от этого восприятие языка будет только проще:

А у вас есть опыт работы с MATLAB? И какой?

Для тех, кто хочет стать программистом - .

Скрипты

Наряду с работой в командной строке, существует еще один способ выполнения команд. Это написание программ.

Скрипт - последовательность команд MATLAB, записанная в файл с расширением «.m». Это обычные текстовые файлы. Для их написания можно использовать любой текстовый редактор.

Чтобы создать скрипт, в общем случае достаточно иметь под рукой обычный текстовый редактор. Мы будем использовать встроенный в среду MATLAB редактор. Используйте кнопку «New Script» в верхнем левом углу для создания нового скрипта. После нажатия данной кнопки появится окно текстового редактора (рисунок 5).

Рисунок 5. Редактор кода MATLAB Создадим небольшую программу:

fprintf("Hello World!\n")

Теперь необходимо сохранить данный скрипт, для этого надо нажать на кнопку «Save» в левом верхнем углу, после чего MATLAB предложит сохранить его в текущей директории («Current Folder»). Дадим скрипту имя «Example1.m» и сохраним его. Желательно, чтобы скрипт был сохранен в текущей директории, так MATLAB будет искать скрипты для запуска

в папках, которые перечислены во внутренней переменной MATLAB path . Также в этот список входит и текущая директория, отображаемая в среде MATLAB справа в специальной плавающей области. По умолчанию скрипт будет сохранен в текущий каталог, поэтому можно сразу же сделать его вызов. Запустить скрипт на выполнение можно введя его имя (имя m-файла в который он был сохранен) в командной строке и нажав «Enter» или кнопку «Run» в редакторе кода. В обоих случаях в командном окне отобразится следующий вывод:

>> Example1 Hello World!

Рассмотрим другой пример. Имеется скрипт:

x = 0:0.02:2*pi; a = 0.3;

y = a * sin(x) + b * cos(x); plot(x, y)

Сохраним в файл Example2.m и запустим на выполнение. В результате MATLAB посчитает и выведет на экран график функции y = a sin(x )+ b cos(x ) .

Так же отметим, что после выполнения скрипта в окне «Workspace» появились переменные x ,a ,b иy . Для объяснения почему так получилось, рассмотри очень важно понятие в MATLAB как рабочая область.

Рабочая область в MATLAB

Рабочая область системы MATLAB - это область памяти, в которой размещены переменные системы. Рабочие области в MATLAB бывают двух типов:

base workspace - базовая рабочая область;

function workspace - рабочая область функции.

Все переменные в рабочей области существуют в ней с момента их объявления при работе с данной рабочей областью и до явного их удаления с помощью команды clear или до конца действия данной рабочей области, например для базовой рабочей области это закрытие MATLAB.

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

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

его завершения.

Комментарии

Хорошим тоном в написании программного кода считается составлять комментарии к написанному вами коду. Комментарии никак не влияют на работу программы и служат для предоставления дополнительной информации. Комментарии помогут другим людям разобраться в вашем алгоритме и помогут вам вспомнить суть написанного через какой-то промежуток времени, когда вы уже забыли что программировали. Для указания начала комментария в MATLAB используется символ «%».

% Генерация равномерно распределенных случайных чисел

% Подсчет математического ожидания сгенерированных чисел

% Отображение данных на графике

% 50 случайных чисел

% Сформировать и присвоить вектор случайных

значений переменной r

% Отобразить на графике сформированный вектор

% Проводим линию

через (0, m) и (n, m)

% Вычислить среднее арифметическое по значениям

вектора r

plot(,)

title("Mean of Random Uniform Data") % Название графика

Функции

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

function = имя_функции(x1,...,xM) оператор_1 оператор_2

оператор_n end

Функция содержится в отдельном m-файле.

Функция начинается с ключевого слова function , за которым следуют в квадратных

скобках через запятую имена выходных переменных. Далее идет знак «=» и имя функции. Имя функции подчиняется тем же правилам, что и имена переменных. Так же отметим, что имя функции обязательно должно совпадать с именем файла, в котором она определена. После имени функции в круглых скобках через запятую идут имена входных параметров.

Следующие строки содержат тело функции (любые допустимые выражения MATLAB).

В конце функция заканчивается ключевым словом end, однако оно не является обязательным, и его можно опустить.

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

function s = triaArea(a, b)

% вычисление площади прямоугольного треугольника

% a, b - катеты треугольника

s = a * b / 2; end

Если функция вообще не возвращает параметры, то сразу после ключевого слова function идет имя функции, например:

function hellowWorld()

% пример функции без входных и выходных параметров disp("Hello world!");

Для вызова функции применяется следующий синтаксис:

Имя_функции(z1,...,zM)

где k1, ..., kN - переменны, куда будут записаны выходные значения функции, аz1,...,zM - аргументы функции.

В случае если функция возвращает только один параметр, то квадратные скобки можно опустить, например:

s = triaArea(1,2)

Фактические и формальные параметры функции

Важно различать фактические и формальные параметры функции:

фактический параметр - аргумент, передаваемый в функцию при ее вызове;

формальный параметр - аргумент, указываемый при объявлении или определении функции.

Поясним данное различие на примере.

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

  • Введение
  • 1. Теоретическая часть
  • 1.1 MATLAB и его связь с другими языками программирования
  • 1.2 MatLab и его основные компоненты
  • 1.3 Немного о работе с системой MATLAB
  • 2. Практическая часть
  • 2.1 Постановка задачи
  • 2.2 История развития задачи
  • 2.3 Используемые формулы
  • 2.4 Программный код поставленной задачи
  • 2.5 Описание программы
  • Заключение
  • Список использованных источников
  • ВВЕДЕНИЕ
  • Современная компьютерная математика предлагает целый набор интегрированных программных систем и пакетов программ для автоматизации математических расчетов: Gauss, Derive, Mathcad, Mathematica, и др. Возникает вопрос: какое место занимает среди них система MATLAB?
  • MATLAB - одна из старейших, тщательно проработанных систем автоматизации математических расчетов, построенная на расширенном представлении и применении матричных операций.
  • В течение нескольких лет MATLAB развивался, ориентируясь на различных пользователей. В университетской среде, он представлял собой стандартный инструмент для работы в различных областях математики, машиностроении и науки.
  • Язык программирования системы MATLAB весьма прост, он содержит лишь несколько десятков операторов; незначительное количество операторов здесь компенсируется большим числом процедур и функций, содержание которых понятно пользователю, имеющему соответствующую математическую и инженерную подготовку.
  • MATLAB включает в себя вычисления, визуализацию и программирование в удобной среде, где задачи и решения выражаются в форме, близкой к математической. Типичное использование MATLAB - это: математические вычисления, создание алгоритмов, моделирование, анализ данных, исследования и визуализация, научная и инженерная графика, разработка приложений, включая создание графического интерфейса.
  • Программы, написанные на MATLAB, бывают двух типов -- функции и скрипты. Функции имеют входные и выходные аргументы, а также собственное рабочее пространство для хранения промежуточных результатов вычислений и переменных. Скрипты же используют общее рабочее пространство. Как скрипты, так и функции не компилируются в машинный код и сохраняются в виде текстовых файлов.
  • В данной работе поставлена цель рассмотреть, как движется тело (или материальная точка), брошенное под углом к горизонту. А также, на основе рассмотренных данных из механики, написание программы, которая бы моделировала данное движение. Работа включает в себя создание графиков движения, графиков зависимости координат от времени, а также, создание динамической модели движения тела, брошенного под углом к горизонту.

1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ

1.1 MATLAB И ЕГО СВЯЗЬ С ДРУГИМИ ЯЗЫКАМИ ПРОГРАММИРОВАНИЯ

Система MATLAB разработана специалистами компании MathWork Inc. (г. Нейтик, штат Массачусетс, США). Хотя впервые эта система начала использоваться в конце 1970-х годов, широкое распространение она получила в конце 80-х, в особенности после появления на рынке версии 4.0. Последние версии MATLAB - это системы, которые содержат множество процедур и функций, необходимых инженеру и научному работнику для осуществления сложных численных расчетов, моделирования технических и физических систем и оформления результатов этих расчетов. MATLAB (сокращение от MATrix LABoratory - матричная лаборатория) представляет собой интерактивную систему, предназначенную для выполнения инженерных и научных расчетов и ориентированную на работу с массивами данных. Система обеспечивает возможность обращения к программам, которые написаны на языках FORTRAN, C и C++.

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

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

Система MATLAB использует собственный М-язык, который сочетает в себе положительные свойства различных известных языков программирования высокого уровня. С языком BASIC систему MATLAB роднит то, что она представляет собой интерпретатор (осуществляет пооператорное компилирование и выполнение программы, не образуя отдельного исполняемого файла), М-язык имеет незначительное количество операторов, в нем отсутствует необходимость объявлять типы и размеры переменных. От языка Pascal система MATLAB позаимствовала объективно-ориентированную направленность, то есть такое построение языка, которое обеспечивает образование новых типов вычислительных объектов на основе типов объектов, уже существующих в языке. Новые типы объектов (в MATLAB они называются классами) могут иметь собственные процедуры их преобразования (они определяют методы этого класса), причем новые процедуры могут быть вызваны с помощью обычных знаков арифметических операций и некоторых специальных знаков, которые применяются в математике.

Принципы сохранения значений переменных в MATLAB наиболее близки к тем, которые присущи языку FORTRAN, а именно: все переменные являются локальными - действуют лишь в границах той программной единицы (процедуры, функции или главной, управляющей программы), где им присвоены некоторые конкретные значения. При переходе к выполнению другой программной единицы, значения переменных предыдущей программной единицы либо теряются (в случае, если выполненная программная единица представляет собой процедуру или функцию), либо становятся недосягаемыми (если выполненная программа является управляющей). В отличие от языков BASIC и Pascal, в языке MATLAB нет глобальных переменных, действие которых распространялось бы на все программные единицы. Но при этом язык MATLAB обладает возможностью, которая отсутствует в других языках. Интерпретатор MATLAB позволяет в одном и том же сеансе работы выполнять несколько самостоятельных программ, причем все переменные, используемые в этих программах, являются для них общими и образуют единое рабочее пространство. Это дает возможность более рационально организовывать сложные (громоздкие) вычисления по типу оверлейных структур.

Вышеуказанные особенности системы MATLAB делают ее весьма гибкой и удобной в использовании вычислительной системой.

1.2 MATLAB И ЕГО ОСНОВНЫЕ КОМПОНЕНТЫ

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

Математические вычисления;

Создание алгоритмов;

Моделирование;

Анализ данных, исследования и визуализация;

Научная и инженерная графика;

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

MATLAB - это интерактивная система, в которой основным элементом данных является массив. Это позволяет решать различные задачи, связанные с техническими вычислениями, особенно в которых используются матрицы и вектора, в несколько раз быстрее, чем при написании программ с использованием "скалярных" языков программирования, таких как Си или Фортран. математический программирование matlab

В MATLAB важная роль отводится специализированным группам программ, называемых toolboxes. Они очень важны для большинства пользователей MATLAB, так как позволяют изучать и применять специализированные методы. Toolboxes - это всесторонняя коллекция функций MATLAB (М-файлов), которые позволяют решать частные классы задач. Toolboxes применяются для обработки сигналов, систем контроля, нейронных сетей, нечеткой логики, вэйвлетов, моделирования и т.д.

Система MATLAB состоит из пяти основных частей.

1. Язык MATLAB. Это язык матриц и массивов высокого уровня с управлением потоками, функциями, структурами данных, вводом-выводом и особенностями объектно-ориентированного программирования.

2. Среда MATLAB. Это набор инструментов и приспособлений, с которыми работает пользователь или программист MATLAB. Она включает в себя средства для управления переменными в рабочем пространстве MATLAB, вводом и выводом данных, а также создания, контроля и отладки М-файлов и приложений MATLAB.

3. Управляемая графика. Это графическая система MATLAB, которая включает в себя команды высокого уровня для визуализации двух- и трехмерных данных, обработки изображений, анимации и иллюстрированной графики. Она также включает в себя команды низкого уровня, позволяющие полностью редактировать внешний вид графики, также как при создании Графического Пользовательского Интерфейса (GUI) для MATLAB приложений.

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

5. Программный интерфейс. Это библиотека, которая позволяет писать программы на Си и Фортране, которые взаимодействуют с MATLAB. Она включает средства для вызова программ из MATLAB (динамическая связь), вызывая MATLAB как вычислительный инструмент и для чтения-записи МАТ-файлов.

Simulink, сопутствующая MATLAB программа, - это интерактивная система для моделирования нелинейных динамических систем. Она представляет собой среду, управляемую мышью, которая позволяет моделировать процесс путем перетаскивания блоков диаграмм на экране и их манипуляцией. Simulink работает с линейными, нелинейными, непрерывными, дискретными, многомерными системами.

Blocksets - это дополнения к Simulink, которые обеспечивают библиотеки блоков для специализированных приложений, таких как связь, обработка сигналов, энергетические системы.

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

1.3 НЕМНОГО О РАБОТЕ С СИСТЕМОЙ MATLAB

После того как вы кликнули на иконке MATLAB, перед вами появится экран, в верхней части которого имеется строка с выпадающими меню, инструментальная панель с кнопками, реализующими наиболее часто выполняемые действия (см. рис. 1.1), и в самом окне - строка запроса в виде двух знаков>>.Это командное окно MATLAB

Рис унок 1. 1 - Инструментальная па нель командного окна

Стандартное выпадающее меню File содержит такие пункты, как New для создания новых файлов, Open M-file - открытие существующего файла-программы или файла-функции для редактирования, проверки текста или отладки. При использовании этого пункта вам предлагается стандартное окно выбора файлов, а после выбора необходимого файла открывается окно редактора/отладчика m-файлов.

M-файлами называются текстовые файлы с расширением.m, содержащие тексты программ-сценариев или тексты функций из стандартных или собственных библиотек. В редакторе их можно исправлять, устанавливать точки остановки для отладки, но следует помнить, что для того, чтобы новый, исправленный вариант функции или программы вступил в силу, необходимо стандартным образом (через меню редактора File или с помощью соответствующей кнопки на панели инструментов редактора/отладчика) сохранить измененный файл.

Инструментальная панель (см. рис 1.1) командного окна позволяет выполнять требуемые действия простым нажатием на соответствующую кнопку. Большинство кнопок имеют стандартный вид и выполняют стандартные, подобные другим программам действия - это копирование (Copy), открытие файла (Open), печать (Print) и т.д. Следует обратить внимание на кнопку Path Browser, которая позволяет прокладывать пути к разным директориям и делать необходимую директорию текущей, а также на кнопку Workspace Browser , позволяющую просматривать и редактировать переменные в рабочей области.

Команда help, набранная в ответ на запрос, завершаемая нажатием клавиши Enter, или кнопка инструментальной панели со знаком вопроса позволяет получить список функций, для которых доступна оперативная помощь. Команда help <имя_функции> позволяет получить на экране справку по конкретной функции.

Например, команда help eig позволяет получить оперативную справку по функции eig - функции вычисления собственных значений матрицы. С некоторыми возможностями системы MATLAB можно познакомиться с помощью команды demo.

В этом кратком введении следует отметить, что основные объекты - переменные, с которыми работает MATLAB, - это прямоугольные матрицы. Это дает возможность записывать программы очень кратко, делает прораммы легко обозримыми. Предусмотрено множество операций, выполняемых над матрицами. Разумеется, запись таких операций, как умножение и сложение матриц, следует запомнить. Изучать же и запоминать все возможности «впрок», до того, как они понадобятся, бессмысленно.

Если необходимо прервать работу, но сохранить все созданные в рабочей области переменные, то проще всего это сделать с помощью команды save <имя_файла>. Все переменные в двоичном виде сохраняются в файле <имя_файла>.mat. Впоследствии, при повторной загрузке системы можно загрузить всю рабочую область с помощью команды load <имя_файла> и продолжить вычисления с того же места. Для очистки рабочей области используется команда clear без аргументов, и в этом случае очищается вся область от всех переменных. Если команда clear сопровождается списком переменных, разделенных пробелами, то удаляются только перечисленные переменные.

2. ПРАКТИЧЕСКАЯ ЧАСТЬ

2.1 ПОСТАНОВКА ЗАДАЧИ

Основной задачей данной курсовой работы является: написание программы в системе MATLAB, которая бы моделировала движение тела брошенного под углом к горизонту.

2.2 ИСТОРИЯ РАЗВИТИЯ ЗАДАЧИ

Механика (с греч. МзчбнйкЮ переводится как искусство построения машин) - область физики, изучающая движение материальных объектов и взаимодействие между ними. Важнейшими разделами механики являются классическая механика и квантовая механика.

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

Изучение особенностей такого движения началось довольно давно, еще в XVI веке и было связано с появлением и совершенствованием артиллерийских орудий.

Представления о траектории движения артиллерийских снарядов в те времена были довольно забавными. Считалось, что траектория эта состоит из трех участков: насильственного движения, смешанного движения и естественного движения, при котором ядро падает на солдат противника сверху (см. рис. 2.1).

Рис. 2.1 - Траектория движения артиллерийских снарядов

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

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

Близко к правильному решению о полете пушечных ядер подошел итальянский математик Тарталья, он сумел показать, что наибольшей дальности полета снарядов можно достичь при направлении выстрела под углом 45° к горизонту. В его книге "Новая наука" были сформулированы правила стрельбы, которыми артиллеристы руководствовались до середины ХVII века.

Однако, полное решение проблем, связанных с движением тел брошенных горизонтально или под углом к горизонту, осуществил все тот же Галилей. В своих рассуждениях он исходил из двух основных идей: тела, движущиеся горизонтально и не подвергающиеся воздействию других сил будут сохранять свою скорость; появление внешних воздействий изменит скорость движущегося тела независимо от того, покоилось или двигалось оно до начала их действия. Галилей показал, что траектории снарядов, если пренебречь сопротивлением воздуха, представляют собой параболы. Галилей указывал, что при реальном движении снарядов, вследствие сопротивления воздуха, их траектория уже не будет напоминать параболу: нисходящая ветвь траектории будет идти несколько круче, чем расчетная кривая.

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

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

2.3 ИСПОЛЬЗУЕМЫЕ ФОРМУЛЫ

Изучим движение тела, брошенного с начальной скоростью V 0 под углом б к горизонту, рассматривая его как материальную точку массы m. При этом сопротивлением воздуха пренебрежём, а поле тяжести будем считать однородным (Р=const), полагая, что дальность полёта и высота траектории малы по сравнению с радиусом Земли.

Поместим начало координат О в начальном положении точки. Направим ось Oy вертикально вверх; горизонтальную ось Ox расположим в плоскости, проходящей через Оy и вектор V 0 , а ось Oz проведём перпендикулярно первым двум осям (рис.2.2). Тогда угол между вектором V 0 и осью Ox будет равен б.

Рис.2.2 - Движение тела, брошенного под углом к горизонту.

Изобразим движущуюся точку М где-нибудь на траектории. На точку действует одна только сила тяжести F, проекции которой на оси координат равны:

Подставляя эти величины в дифференциальные уравнения и замечая, что

и т.д. мы после сокращения на m получим:

Умножая обе части этих уравнений на dt и интегрируя, находим:

Начальные условия в нашей задаче имеют вид:

при t=0:

Удовлетворяя начальным условиям, будем иметь:

Подставляя эти значения C 1 , C 2 и C 3 в найденное выше решение и заменяя Vx , Vy , Vz на

придём к уравнениям:

Интегрируя эти уравнения, получим:

Подстановка начальных данных даёт C 4 =C 5 =C 6 =0, и мы окончательно находим уравнения движения точки М в виде:

Из последнего уравнения следует, что движение происходит в плоскости Оxy.

Имея уравнение движения точки, можно методами кинематики определить все характеристики данного движения.

Найдем время полета тела от начальной точки до точки падения.

Время полета:

2.4 ПРОГРАММНЫЙ КОД ПОСТАВЛЕННОЙ ЗАДАЧИ

clc; %очистка командного окна

v0=36; %начальная скорость

g=9.81; %ускорение свободного падения

k=1;

alfa=pi/3; %угол, под которым брошено тело

m=(2*v0*sin(alfa))/g %время полета

while k<5

k=menu("выбрать категорию", ...

sprintf("зависимость координаты х от t"), ...

sprintf("зависимость координаты у от t"), ...

sprintf("график движения тела брошенного под углом к горизонту"), ...

sprintf("динамическая модель движения тела брошенного под углом к горизонту"), ...

"выход");

if k == 1

t=0:0.001:m;

x=v0*t*cos(alfa);

plot(x);

title("зависимость координаты х от t");

xlabel("x"); ylabel("y");

elseif k == 2

t=0:0.001:m;

y=v0*t*sin(alfa)-(g*t.^2)/2;

plot(y);

title("зависимость координаты y от t");

xlabel("x"); ylabel("y");

elseif k == 3

t=0:0.001:m;

x=v0*t*cos(alfa);

y=v0*t*sin(alfa)-(g*t.^2)/2;

plot(x,y);

title("график движения тела брошенного под углом к горизонту");

xlabel("x"); ylabel("y");

elseif k == 4

t=0:0.001:m;

x=v0*t*cos(alfa);

y=v0*t*sin(alfa)-(g*t.^2)/2;

comet(x,y);

title("динамическая модель движения тела брошенного под углом к горизонту");

xlabel("x"); ylabel("y");

end;

end;

2.5 ОПИСАНИЕ ПРОГРАММЫ

Данная программа содержит функции и процедуры такие как clc, plot, menu, comet и др., а также переменные и их значения.

Опишем процедуры и функции использованные в данной программе:

CLC . Команда, предназначенная для очистки командного окна.

MENU . Удобным инструментом выбора одной из альтернатив будущих вычислительных действий является функция menu, которая создает окно пользовательского меню. К функции menu нужно обращаться следующим образом:

K=MENU("ЗАГОЛОВОК МЕНЮ","альтернатива 1","альтернатива 2","альтернатива n")

Такое обращение приводит к появлению окна меню (см. рис.2.3).

Рисунок 2.3 - Окно меню

Выполнение программы временно приостанавливается, и система ожидает выбора одной из кнопок меню с альтернативами. После правильного выбора исходному параметру k присваивается значение, соответствующее номеру альтернативы (1,2…n). В общем случае число альтернатив может достигать 32.

WHILE . Оператор цикла с предусловием имеет такой вид:

While <условие>

<операторы>

end

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

SPRINTF . Функция, которая на каждой кнопке меню размещает информацию о текущем значении соответствующего параметра.

IF . В общем виде синтаксис оператора условного перехода таков:

If < условие >

< операторы1 >

Else

< операторы2 >

E nd

Работает этот оператор следующим образом. Сначала производится проверка, выполняется ли указанное условие. Если результат проверки положителен, программа выполняет совокупность операторов <операторы1> . В противном случае выполняется последовательность операторов <операторы2>.

PLOT . Основной функцией обеспечивающей построение графиков на экране дисплея, является plot (см. рис 2.4). Общая форма обращения к ней такова:

Plot(x1,y1,s1,x2,y2,s2…)

Здесь x1,y1 - заданные векторы, элементами которых являются массивы значений аргумента (х1) и функции (у1), отвечающие первой кривой графика; х2,у2 - массивы значений аргумента и функции второй кривой и т.д. При этом предполагается, что значение аргумента откладываются вдоль горизонтальной оси графика, а значение функции - вдоль вертикальной оси. Переменные s1,s2,… являются символьными (их указание не является обязательным).

Рисунок 2.4 - Действие фенкции plot.

TITLE . Процедура, с помощью которой задается заголовок графика.

XLABEL и YLABEL . Функции, задающие объяснения вдоль горизонтальной и вертикальной осей.

COMET . Процедура comet(x,y) («комета») строит график зависимости у(х) постепенно в виде траектории кометы. При этом «изображающая» точка на графике имеет вид маленькой кометы, которая плавно перемещается от одной точки к другой.

В конечном итоге, программа показывает, как движется тело, брошенное под углом к горизонту. Также в программе можно увидеть зависимость координат тела от времени (см рис. 2.5 и рис. 2.6), график траектории тела (см. рис. 2.7) и саму модель движения тела (см. рис.2.8).

Рисунок 2.5 - График зависимости x от t.

Рисунок 2.6 - График зависимости y от t.

Рисунок 2.7 - График движения тела, брошенного под углом к горизонту.

Рисунок 2.8 - Динамическая модель движения тела, брошенного под углом к горизонту.

ЗАКЛЮЧЕНИЕ

Курсовой проект выполнен в среде MatLab 6.5. Разработка проекта проходила в несколько стадий, заключавшихся в изучении предметной области задачи; изучении основных законов механики; разработке самой программы, позволяющей моделировать движение тела, брошенного под углом к горизонту.

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

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

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

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

1. Лазарев, Ю. Моделирование процессов и систем в MatLab. Учебный курс. / Ю. Лазарев. - СПб.: Питер; Киев: Издательская группа BHV, 2005. - 512 с.

2. Алешкевич, В.А. Механика / В.А. Алешкевич, Л.Г. Деденко, В.А. Караваев. - Академия 2004.

3. Коткин, Г.Л. Черкасский В.С., Компьютерное моделирование физических процессов с использованием MATLAB: Учеб. пособие / Г.Л. Коткин, В.С. Черкасский. - Новосиб. ун-т. Новосибирск, 2001. - 173 с.

Размещено на Allbest.ru

...

Подобные документы

    Общая характеристика и свойства системы Matlab - пакета прикладных программ для решения задач технических вычислений. Разработка математической модели в данной среде, программирование функций для задающего воздействия. Проектирование GUI-интерфейса.

    курсовая работа , добавлен 23.05.2013

    Особенности работы в режиме командной строки в системе Matlab. Переменные и присваивание им значений. Комплексные числа и вычисления в системе Matlab. Вычисления с использованием функции sqrt. Неправильное использование функций с комплексными аргументами.

    дипломная работа , добавлен 30.07.2015

    Изучение программирования в MATLAB. Использование команд Save и Load, операторы ввода и вывода для работы в командном окне. Отладка собственных программ. Интерфейс MATLAB. Отличия поздней версии MATLAB от более ранних. Средство Source Control Interface.

    контрольная работа , добавлен 25.12.2011

    Matlab - матричная лаборатория - система программирования для научно-технических расчетов. Особенности ввода векторов. Специальные матрицы, простые команды. Простые примеры, иллюстрирующие эффективность Matlab. Графический способ решения уравнений.

    реферат , добавлен 05.01.2010

    Математическая основа параллельных вычислений. Свойства Parallel Computing Toolbox. Разработка параллельных приложений в Matlab. Примеры программирования параллельных задач. Вычисление определенного интеграла. Последовательное и параллельное перемножение.

    курсовая работа , добавлен 15.12.2010

    MATLAB – матричная лаборатория – наиболее развитая система программирования для научно-технических расчетов. Переменные и элементы xy-графики. Простые примеры, иллюстрирующие эффективность MATLAB. Системы линейных алгебраических уравнений и полиномы.

    методичка , добавлен 26.01.2009

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

    презентация , добавлен 24.01.2014

    Возможности и синтаксис команд MATLAB, листинг программы и описание цикла. Порядок составления программы вычисления коэффициентов алгебраического интерполяционного многочлена и построения сплайн-функции, "склеенной" из кусков многочленов 3-го порядка.

    лабораторная работа , добавлен 04.07.2009

    Анализ возможностей пакета MATLAB и его расширений. Язык программирования системы. Исследование выпрямительного устройства. Моделирование трёхфазного трансформатора. Схема принципиальная регулируемого конвертора. Возможности гибкой цифровой модели.

    презентация , добавлен 22.10.2013

    Методы численного интегрирования. Характеристика основных составляющих структурного программирования. Решение задания на языке высокого уровня Паскаль. Построение графического решения задачи в пакете Matlab. Решение задания на языке высокого уровня C.