- •Предисловие
- •1. Рабочая среда MatLab
- •Простейшие вычисления
- •Лабораторная работа № 1 Вычисление значений функций и переменных
- •Контрольные вопросы
- •Лабораторное задание
- •2. Работа с графикой средствами matlab Основные теоретические сведения
- •3. Программирование в среде matlab. Создание и редактирование м-файлов Редактор м-файлов
- •Файл-программы
- •Файл-функции
- •4. Операции с векторами и матрицами в системе matlab Основные теоретические сведения
- •Основные матричные операции
- •5. Решение уравнений, систем линейных уравнений вычисление интегралов Основные теоретические сведения
- •6. Аппроксимация и интерполяция данных. Методы решения обыкновенных дифференциальных уравнений Основные теоретические сведения
- •Интерполяция функций
- •7. Основные возможности пакета математического моделирования Simulink Основные теоретические сведения
- •Обзор блоков раздела Sources
- •Исследование блоков раздела Continuous
- •Модель простейшей системы автоматического регулирования
- •Дифференциальные уравнения и системы уравнений
- •Содержание
Простейшие вычисления
Наберите в командной строке 1+2 и нажмите Enter. В результате в командном окне MatLab отражается следующее:
Рисунок 1.2 – Демонстрация выполнения команды присваивания
Программа MatLab сначала вычислила сумму 1+2, затем записала результат в специальную переменную ans и вывела ее значение, равное 3, в командное окно. Ниже ответа расположена командная строка с мигающим курсором, обозначающая, что MatLab готов к дальнейшим вычислениям и можно набирать новые выражения и находить их значения. Если требуется продолжить работу с предыдущим выражением, например, вычислить (1+2)/4.5, то проще всего воспользоваться уже имеющимся результатом, который хранится в переменной ans. Наберите ans/4.5 (при вводе десятичных дробей используется точка) и нажмите Enter, получается
Рисунок 1.3 – Графическое представление метода главных компонент
Рассмотрим пример с заданными значениями:
>> a=-1.3; b=0.91; c=0.75; x=2.32; k=7;
>> y=sin((a–x)/c))+1e4*((a–k*x^2)/(2*b))^1/3)+…
cos(k+x^2)/tan(3) – (b*c)/(a*x)
>> y=-1.45e+4–2.51e4i
После окончания сеанса работы с системой MatLab все ранее вычисленные переменные теряются. Чтобы сохранить в файле на диске компьютера содержимое рабочего пространства системы MatLab, нужно выполнить команду меню File \Save Workspace As … . По умолчанию расширение имени файла mat, поэтому такие файлы принято называть МАТ-файлами. Теперь можно закрыть MatLab. В следующем сеансе работы для восстановления значений переменных следует открыть этот сохраненный файл при помощи подпункта Open меню File. Теперь все переменные, определенные в прошлом сеансе, опять стали доступными. Их можно использовать во вновь вводимых командах.
Имена переменных должны начинаться с буквы. Знак « = » соответствует операции присваивания. Нажатие клавиши Enter заставляет систему вычислить выражение и показать результат. Если запись оператора не заканчивается символом «;», то результат выводится в командное окно, в противном случае – не выводится. Если оператор не содержит знака присваивания « = », то значение результата присваивается системной переменной ans (см. рис. 1.2).
Информация об использованных переменных в течение текущего сеанса работы представлена в окне Workspace в следующих полях:
Name – имя переменной;
Value – значение переменной;
Size – размерность массива;
Bytes – объем занимаемой памяти;
Class – тип переменной (по умолчанию все числовые переменные представляются с двойной точностью - double array).
Для просмотра значения любой переменной из текущего рабочего пространства системы достаточно набрать ее имя и нажать клавишу Enter.
В арифметических выражениях применяются следующие знаки операций:
+, - – сложение, вычитание;
*– умножение;
/ – деление слева направо;
\ – деление справа налево;
^ – возведение в степень.
Система MatLab работает как с действительными, так и с комплексными числами. Перед использованием операций с комплексными числами необходимо определить переменную i = sqrt(–1) или j = sqrt(–1).
При
делении нуля на ноль получается NaN (не
число). При вычислении, например,
MatLab переходит в область комплексных
чисел:
>> sqrt(-3.0)
ans = 0 + 1.7321i
При наборе комплексных чисел в командной строке можно использовать i либо j, а сами числа при умножении, делении и возведении в степень необходимо заключать в скобки:
>> (2.1 + 3.2i)*2 + (4.2 + 1.7i)^2
ans = 18.9500 + 20.6800i
иначе умножаться и возводиться в степень будет только мнимая часть.
Для вычисления комплексно-сопряженного числа применяется апостроф, который следует набирать сразу за числом без пробела:
>> 2 – 3i'
ans = 2.0000 + 3.0000i
Для вычисления комплексно-сопряженного выражения его необходимо заключить в круглые скобки:
>> ((3.2 + 1.5i)*2 + 4.2 + 7.9i)'
ans = 10.6000 – 10.9000i
MatLab позволяет использовать комплексные числа в качестве аргументов встроенных элементарных функций:
>> sin(2 + 3i)
ans =
9.1545 – 4.1689i
Система MatLab также позволяет вычислять различные математические функции, информацию о встроенных элементарных функциях можно получить соответственно по командам:
>> help elfun и >> help specfun
Элементарные алгебраические функции (табл. 1) имеют в качестве аргумента одно или два действительных (x, y), или одно комплексное (z) число.
Таблица 1 − Элементарные алгебраические функции
Функция |
Описание |
abs(z), abs(x), |
Вычисление модуля комплексного числа z или абсолютного значения действительного числа x |
angle(z) |
Вычисление аргумента z |
sqrt(z), sqrt(x) |
Вычисление квадратного корня чисел z и x |
real(z) |
Вычисление действительной части комплексного числа z |
imag(z) |
Вычисление мнимой части комплексного числа z |
round(x) |
Округление до целого |
fix(x) |
Округление до ближайшего целого в сторону нуля |
rem(x, y) |
Вычисление остатка от деления x на y |
exp(z) |
Вычисление е в степени x.( экспоненциальная функция) |
log(z) |
Вычисление натурального логарифма числа x |
log10(z) |
Вычисление десятичного логарифма числа x |
Система MatLab предоставляет возможности для вычисления тригонометрических функций переменной x (см. табл. 2).
Таблица 2 − Тригонометрические функции
Функция |
Описание |
sin(x) |
Вычисление синуса |
cos(x) |
Вычисление косинуса |
tan(x) |
Вычисление тангенса |
asin(x) |
Вычисление арксинуса |
acos(x) |
Вычисление арккосинуса |
atan(x) |
Вычисление арктангенса |
atan2(y, x) |
Вычисление арктангенса по координатам точки |
Для вычисления математического выражения следует набрать его в соответствии с правилами MatLab. Например, необходимо вычислить значение выражения
В командной строке это выражение выглядит следующим образом:
>> exp(-2.5) * log(11.3) ^ 0.3 - sqrt((sin(2.45 * pi) + ...
cos(3.78 * pi)) / tan(3.3))
При записи длинного выражения для переноса части его на другую строчку используется троеточие (после предварительного пробела). По нажатию клавиши Enter ответ выводится в командное окно:
ans = -3.2105
В приведенном выражении использованы следующие встроенные функции MatLab: вычисление экспоненты, натурального логарифма, квадратного корня и тригонометрических функций. Аргументы функций берутся в круглые скобки, имена функций набираются строчными буквами.
Приоритет выполнения арифметических операций в порядке убывания следующий: возведение в степень, умножение и деление, сложение и вычитание. Для изменения этого порядка следования необходимо использовать круглые скобки.
Поскольку
MatLab
запоминает все вводимые команды, то их
можно повторно занести в командную
строку без набора, а с использованием
служебных клавиш
,
.
Все расчеты в MatLab выполняются с двойной точностью, а для представления чисел на экране имеются разные форматы. Нужный формат вывода устанавливается в опциях диалогового окна Preferences, вызываемого через меню Files/Preferences либо при помощи команды format. Например, для установки длинного с плавающей точкой формата выводов результатов вычислений следует в командной строке ввести команду format long e:
>> format long e
>> 1.25/3.11
ans = 4.019292604501608e-001
Получить информацию о форматах можно с помощью команды:
>> help format.
Существуют следующие способы представления чисел (табл. 3).
Таблица 3 − Форматы вывода на экран
Формат
|
Представление |
short |
Число отображается с 4-мя цифрами после десятичной точки или в формате short e |
short e |
Число в экспоненциальной форме с мантиссой из 5-ти цифр и показателем из 3-х цифр |
rat |
Представление в виде рационального дробного числа |
long |
Число с 16 – десятичными цифрами |
long e |
Число в экспоненциальной форме с мантиссой из 16-ти цифр и показателем из 3-х цифр |
hex |
Число в шестнадцатиричной форме |
Переменные в MatLab не нужно предварительно описывать, указывая их тип. Все данные хранятся в виде массивов: числовые переменные (внутренний тип numeriс), текстовые строки (char), ячейки (сеll) и структуры (struct).
Двумерный массив – это матрица, одномерный – вектор, а скаляр – матрица размера 1x1.
Имя переменной должно начинаться с буквы, за ней могут идти буквы, цифры и символ подчеркивания. Допустимы имена любой длины, но MatLab идентифицирует их по первым 31 символам и различает большие и малые буквы.
В MatLab имеется ряд констант (табл. 4).
Таблица 4 – Зарезервированные имена констант
Имя
|
Описание |
ans |
Результат последней операции |
i, j |
Мнимая единица |
pi |
Число |
eps |
Машинная точность |
realmax |
Максимальное вещественное число |
realmin |
Минимальное вещественное число |
inf |
Бесконечность |
NaN |
Нечисловая переменная |
end |
Наибольшее значение индекса размерности массива |
Отметим, что имя NaN (Not-a-Number) зарезервировано для результата операций 0/0, 0*inf, inf-inf и т.п.
В табл.5 дано назначение специальных символов.
Таблица 5 − Специальные символы
Символ |
Назначение |
% |
Знак процента означает начало комментария |
|
Пробел служит для разделения элементов матриц |
, |
Запятая применяется для разделения элементов матриц и оператора в строке ввода |
; |
Точка с запятой отделяет строки матриц, а точка с запятой в конце оператора (команды) отменяет вывод результата на экран |
: |
Двоеточие используется для указания диапазона (интервала изменения величины) и в качестве знака групповой операции над элементами матриц |
() |
Круглые скобки применяются для задания порядка выполнения математических операций, а также для указания аргументов функций и индексов матриц |
. |
Точка отделяет дробную часть числа от целой его части, а также применяется в составе комбинированных знаков (.*, .^, ./, .\) |
… |
Три точки и более в конце строки отмечают продолжение выражения на следующей строчке |
[] |
Квадратные скобки используются при задании матриц и векторов |
’ |
Апостроф указывает на символьные строки, а для включения самого апострофа в символьную строку нужно поставить два апострофа подряд |
Для вывода в командное окно имен используемых переменных служит команда who, а более подробную информацию о переменных в виде таблицы, аналогичной таблице окна Workspace, позволяет получить команда whos.
Для освобождения из памяти всех переменных используется команда clear без аргументов.
Для удаления из памяти определенного перечня переменных необходимо указать их в аргументах данной функции. Например:
>> clear a1 a3
>> who
Your variables are:
a2
Узнать о факте занятости переменной можно функцией exist, указав имя переменной в апострофах во входном аргументе:
>> exist('d7')
ans =
0
Если ответ – (0) – ноль, то имя этой переменной не конфликтует с зарезервированными словами MatLab. Если возвращаемое значение равно единице - такая переменная уже определена в рабочей среде.
В MatLab имеется возможность записывать исполняемые команды и результаты в текстовый файл (вести журнал работы), который потом можно прочитать или распечатать из текстового редактора. Для начала ведения журнала служит команда diary. В качестве аргумента команды diary следует задать имя файла, в котором будет храниться журнал работы. Набираемые далее команды и результаты их исполнения будут записываться в этот файл, например последовательность команд (рис. 1.4) производит
Рисунок 1.4 – Ведение журнала с помощью команды diary
следующие действия:
открывает журнал в файле exampl-1.txt;
производит вычисления;
сохраняет все переменные в MAT файле work-1.mat;
сохраняет журнал в файле exampl-1.txt в подкаталоге work корневого каталога MatLab и закрывает MatLab.
Если посмотреть содержимое файла exampl-1.txt в каком-нибудь текстовом редакторе, то в файле окажется следующий текст:
a1=3; a2=2.5; a3=a1+a2 a3 = 5.5000 save work-1 quit |
