
- •Предисловие
- •Введение
- •Запуск системы и знакомство со справочной информацией
- •Практическое занятие №1
- •Работа системы в командном режиме Работа системы в качестве калькулятора
- •Задание векторов и матриц
- •Использование оператора : (двоеточие)
- •Начальное_значение: Шаг: Конечное_значение
- •Сохранение и считывание данных
- •Практическое занятие №2
- •Построение графиков
- •Практическое занятие №3
- •Основы программирования (m-файлы)
- •Пример 2. Операция сложения двух полиномов отсутствует в системеMatlab. Создадим соответствующую программу.
- •Ппп Notebook
- •Написание m-книги
- •Практическое занятие №4
- •Основные характеристики линейных систем управления Общее решение линейного однородного дифференциального уравнения и собственные колебания системы
- •Практическое занятие №5
- •Алгебраический критерий устойчивости (критерий Рауса-Гурвица)
- •Например
- •Определение "запаса устойчивости" алгебраическим методом
- •Частотные и временные характеристики линейной системы
- •Использование ппп Control System Toolbox
Практическое занятие №3
Постройте графики функций, рассмотренных на практических занятиях №2.
Основы программирования (m-файлы)
Решение многих задач можно осуществить в командном режиме, т.е. без использования традиционного программирования. Однако нередко возникает необходимость сохранения определенной последовательности вычислений для последующего самостоятельного ее использования. Другими словами, возникает необходимость в создании программ. Это не единственная причина появления языка программирования в системе MATLAB. Но здесь мы ограничимся только этим объяснением.
Все команды, операторы и функции являются объектами входного языка системы MATLAB. Наряду с ними язык программирования включает в себя управляющие структуры, системные операторы и многое другое. Но самое главное отличие языка программирования от входного языка заключается в способе фиксации создаваемых ими кодов. Программы языка MATLAB сохраняются в виде текстовых M- файлов. Этот язык является языком интерпретирующего типа, что определяет как основные его достоинства, так и недостатки.
Для языка программирования MATLAB можно не различать понятия команды (выполняемой в командном режиме) и оператора (выполняемого из программы). Часто используется и понятие функции. Функция преобразует одни данные в другие. Двойственность понятий оператора и функции проявляется в том, что многие операторы имеют свои аналоги в виде функций.
Итак, программы хранятся в виде M-файлов. Они могут создаваться как с помощью встроенного редактора, так и в любом текстовом редакторе, поддерживающем формат ASCII. Записанная на диск программа (M-файл) становится частью системы и может вызываться как из командной строки, так и из другой программы.
Существует два типа M-файлов: файлы-сценарии и файлы-функции. Файл-сценарий (Script-файл) отличается от файла-функции только тем, что не имеет ни входных параметров, ни выходных данных. Другими словами, он является просто записью серии команд. Файл- функция содержит входные и выходные параметры и использует локальные переменные. Такой файл является типичным модулем с точки зрения структурного программирования. Структура этого модуля имеет вид:
function [var1, var2,…] = f_name(Список_параметров)
% Основной комментарий
%Дополнительный комментарий
Тело файла
var1=выражение
var2=выражение
……….
Если функция возвращает одно значение (var1), то квадратные скобки не ставятся.
Данная функция используется как отдельный элемент программы в виде
[var1, var2,…] = f_name(Список_параметров)
Если же функция используется в программе в виде f_name(Список_параметров), то возвращается только первый элемент множества выходных параметров – var1.
Из сказанного следует, что переменные в файлах-сценариях являются глобальными, а в файлах-функциях - локальными. При желании внутри функции можно использовать и глобальные переменные. Для этого достаточно внутри функции сделать соответствующие объявления:
Global var1 var2 …
Пример 1. Напишем программу решения квадратного уравнения x2 + pix +q = 0.
function [alph1, alph2] = rootquadeq (p, q)
sqrtdet = sqrt((p^2)/4 - q);
alph1 = -p/2 + sqrtdet
alph2 = -p/2 - sqrtdet
Сохраним ее в файле rootquaeq.mи вызовем в головной программе (в командной строке)
[alph1, alph2] = rootquadeq (-3, 2)
в результате получим значения корней:
alph1 =
2
alph2 =
1