- •А.К. Ефремов интегрированная
- •Рекомендовано редсоветом мгту им. Н.Э. Баумана
- •Isbn 5-7038-2301-3 мгту им. Н.Э. Баумана, 2003
- •1. Интерфейс системЫ matlab
- •1.1. Программная группа matlab
- •1.2. Командное окно matlab
- •1.2.1. Главное меню
- •1.2.2. Панель инструментов
- •1.3. Настройка параметров рабочего пространства
- •1.4. Справочная система matlab
- •2. Работа в режиме прямых вычислений
- •3. Базовые объекты системы matlab
- •3.1. Способы формирования матриц и векторов
- •3.2. Матричные операции и функции
- •3.3. Решение линейных уравнений
- •3.4. Вычисление корней полиномов
- •3.5. Обработка данных
- •4. Графические средства системы matlab
- •4.1. Графические объекты на плоскости
- •4.1.1. Функция plot
- •4.1.2. Функции fplot и ezplot
- •4.1.3. Другие графические функции
- •4.1.5. Обработка данных
- •4.2. Построение трехмерных поверхностей и тел
- •4.2.1. Основные графические функции
- •4.2.2. Дополнительные возможности
- •5. Основы программирования в среде matlab
- •5.1. Общие положения
- •5.2. Примеры простых программ
- •Xlabel('sin(X)') % Надпись по оси х
- •Xlabel('X') % Надпись по оси абсцисс
- •5.3. Программа с использованием внешней функции
- •5.4. Дополнительные программы
- •5.4.1. Дифференцирование функций
- •Xlabel('Число элементов массивов')
- •Xlabel('Число элементов массивов')
- •5.4.2. Функции eval, feval
- •Xlabel(‘t’), ylabel(‘y, dy/dt’)
- •Xlabel(‘y’), ylabel(‘dy/dt’)
- •6. Символьные вычисления
- •6.1. Определение символьной переменной
- •6.2. Основные функции
- •6.3. Математический анализ
- •6.3.1. Функция limit – предел функции одной переменной
- •6.3.2. Функция diff – дифференцирование функции одной переменной
- •6.3.3. Функция int – интегрирование функции одной переменной
- •6.3.4. Функция symsum – суммирование членов рядов
- •6.3.5. Функция taylor – разложение функции в ряд Тэйлора
- •6.4. Символьное решение уравнений
- •6.4.1. Решение отдельных уравнений
- •6.4.2. Решение систем уравнений
- •6.4.3. Решение дифференциальных уравнений
- •7. Пакет моделирования динамических систем simulink
- •7.1. Рабочая среда Simulink
- •7.2. Представление динамической системы в виде структурной схемы
- •7.3. Основные приемы работы в среде Simulink
- •7.4. Модель с ветвлением соединений
- •7. 5. Интегрирование дифференциального уравнения
- •Список литературы
- •Оглавление
- •Приложение
- •Разделы справочной системы
- •Программирования и отладки программ
- •Графические средства matlab
- •Символьные вычисления (symbolic math toolbox)
2. Работа в режиме прямых вычислений
Система MATLAB допускает работу в режиме прямых вычислений, т.е. без сохранения вводимых операторов на диске в виде m-файлов (программ). При этом система функционирует по существу как мощный научно-технический калькулятор, способный проводить весьма сложные вычисления и представлять их результаты в числовой или графической форме.
MATLAB различает строчные и прописные символы. При наборе команд MATLAB могут использоваться буквы латинского алфавита и цифры; кириллица может быть использована только в комментариях, включаемых в m-файлы, а также в графических объектах (заголовки, надписи по осям координат). Команды MATLAB набирают в позиции приглашения с помощью клавиатуры, завершая ввод команды нажатием клавиши [Enter]; предыдущие команды могут быть вызваны с помощью стрелочных клавиш [] и []. При корректировке (редактировании) текста команд используют обычные приемы.
Основные символы MATLAB приведены в табл. 2.1.
Таблица 2.1
+ |
Плюс |
- |
Минус |
* |
Символ умножения |
.* |
Умножение массивов (поэлементное умножение) |
^ |
Возведение в степень |
.^ |
Возведение массива в степень |
\ |
«Левое» деление |
/ |
«Правое» деление |
./ |
Деление массива (поэлементное деление) |
: |
Двоеточие. Используют для обозначения индексов, в цикле for и в некоторых других случаях. – то же, что – пусто, если – то же, что , где – пусто, если и или если и . Двоеточие используют для исключения строк, столбцов или элементов векторов и матриц. – все элементы A как один столбец. - j -й столбец A
и т.д. |
( ) |
Круглые скобки. Используют для указания приоритетных арифметических действий и аргументов функций. |
[ ] |
Квадратные скобки. Используют при формировании векторов и матриц. |
. |
Десятичная точка или символ массива |
.. |
Каталог более высокого уровня |
... |
Символ продолжения (не менее трех точек) |
, |
Запятая |
; |
Точка с запятой. Используется для обозначения строк матриц, а также для подавления вывода результата на экран |
% |
Символ комментария (игнорируется интерпретатором) |
! |
Восклицательный знак. Ставится перед командой операционной системы |
' |
Символ транспонирования или апостроф |
= |
Символ присваивания |
<, <=, >, >=, = =, ~ = – операторы отношений |
|
& |
Логическое И (AND) |
| |
Логическое ИЛИ (OR) |
~ |
Логическое дополнение НЕ (NOT) |
xor |
Исключительное ИЛИ |
kron |
символ тензорного произведения (Кронекера). |
Ввод чисел в командной строке производится по правилам, принятым в языках высокого уровня. Ввод команды завершается нажатием клавиши [Enter].
Пример команды:
» 4*2^1.7-5.87
ans =
7.1260
По умолчанию результату присваивается имя ans (начало слова answer, т.е. ответ) – эта системная переменная может быть использована в последующих вычислениях:
» ans-1
ans =
6.1260
В результате данного вычисления переменной ans присваивается новое значение.
Видимая информация в окне MATLAB располагается в двух зонах: просмотра и редактирования (командной). Информацию, находящуюся в первой из них, можно только просматривать с помощью мыши и полос прокрутки, а также выделять нужные фрагменты для копирования в буфер обмена и последующей вставки в текстовый документ или в командную строку.
В MATLAB соблюдается общепринятая иерархия математических операций. Сравните с предыдущим примером:
» (4*2)^1.7-5.87
ans =
28.4268
При прямых вычислениях могут использоваться функции, которые разделяют на внутренние (встроенные) и внешние; последние существуют в виде m-файлов. Справку по ним можно получить, набирая соответствующую команду: help elfun – перечень элементарных функций; help specfun – специальных и т.д. Список аргументов (и параметров), отделяемых запятой, заключается в круглые скобки после имени функции. Тип результата вычисления функции совпадает с типом аргумента.
Ниже приведен перечень элементарных функций:
sin(X), cos(X), tan(X) – синус, косинус, тангенс;
asin(X), acos(X), atan(X) – арксинус, арккосинус, арктангенс;
sinh(X), cosh(X), tanh(X) – гиперболические функции;
asinh(X), acosh(X), atanh(X) – обратные гиперболические функции;
exp(X) – экспоненциальная функция;
log(X) – натуральный логарифм;
log10(X) – десятичный логарифм;
log2(X) – логарифм по основанию 2;
pow2(X) – возведение числа 2 в степень Х;
nextpow2(X) – ближайшая степень по основанию 2;
sqrt(X) – корень квадратный;
abs(X) – модуль числа;
fix(X) – округление до ближайшего целого в сторону нуля;
floor(X) – округление до ближайшего целого в сторону ;
ceil(X) – округление до ближайшего целого в сторону ;
round(X) – округление до ближайшего целого;
rem(X,Y) – остаток от целочисленного деления;
sign(X) – функция знака;
rat(X) – представление числа в виде цепной дроби;
rats(X) – представление числа в виде рациональной дроби.
В качестве примера рассмотрим представление числа
» rats(pi)
ans =
355/113
» rat(pi)
ans =
3 + 1/(7 + 1/(16))
Для формирования цепной дроби функция rat(X) подбирает два целых числа n и d , причем выполняется условие . Можно выбрать точность вычислений, отличную от принятой по умолчанию,
» rat(pi,1e-10)
ans =
3 + 1/(7 + 1/(16 + 1/(-294 + 1/(3))))
а также определить числа n и d:
» [n,d]=rat(pi); [n,d]
ans =
-
113
» [n,d]=rat(pi,1e-10); [n,d]
ans =
312689 99532
» n/d
ans =
3.1416
Вычисления в системе MATLAB проводятся с двойной точностью, но вывод данных может происходить в разном формате. Формат устанавливается с помощью соответствующей настройки: File-Preferences…-General-Numerical Format (см. раздел 1):
Перечень форматов:
Short – короткий, с 5 знаками (установлен по умолчанию);
Long – длинный, с 15 знаками;
Hex – шестнадцатеричный;
Bank – финансовый (с точностью до сотых);
Plus – знаковый;
Short E – короткий экспоненциальный (4 знака после запятой);
Long E – длинный экспоненциальный (15 знаков после запятой);
Short G – короткий экспоненциальный (с отбрасыванием нулей);
Long G – длинный экспоненциальный
Rational – представление действительного числа в виде отношения целых чисел.
Форматом можно также управлять, набирая соответствующие команды со служебным словом format, например, format long, format + (знаковый), format rat (сокращенная форма rational) и т.д. Установленный формат действует до назначения нового формата или до конца сеанса работы с системой MATLAB.
Продолжаем вычисления:
» sn(pi/2)
??? Undefined function or variable sn.
При вводе команды допущена ошибка: набрано sn вместо sin. Диагностика системы: «??? Функция или переменная sn не определена».
» sin(pi/2)
ans = 1
После коррекции команды получен правильный результат.
Далее используем оператор присваивания 1 – вводим переменную s
»s=sin(pi/2)
s = 1
Переменная может быть числом, элементом вектора или матрицы, а также символьной (строковой). Значение переменной сохраняется до конца сеанса работы в среде MATLAB.
Длинная команда может быть продолжена на следующей строке, если в конце текущей строки набрать многоточие (...):
» s=1-1/2+1/3-1/4+1/5-1/6+...
1/7-1/8+1/9-1/10
s = 0.6456
Вывод результата вычисления на экран подавляется с помощью символа (;).
Если необходимо вывести на экран промежуточные результаты, после оператора (при нескольких операторах в командной строке) ставят символ (,). Например:
» a=.5, s=sin(a*pi)
a = 0.5000
s = 1
и
» a=.5; s=sin(a*pi)
s = 1
» a=.5; s=sin(a*pi), a*s
s = 1
ans = 0.5000
В следующей команде результату первого вычисления имя ans присвоено по умолчанию:
» 4*2^1.7-sqrt(5.87); ans-1
ans =
9.5732
Проиллюстрируем применение форматов на примере числа е, т.е. основания натуральных логарифмов. В MATLAB оно не определено как системная константа, и поэтому сначала вычислим его:
» e=exp(1)
e =
2.7183
» format long, e
e =
2.71828182845905
» format short e, e
e =
2.7183e+000
» format long e, e
e =
2.718281828459045e+000
» format hex, e
e =
4005bf0a8b145769
» format bank, e
e =
2.72
» format +, е
ans = +
После этих упражнений необходимо восстановить принятый по умолчанию формат, т.е. short.
Признаком возникновения неопределенности типа 0/0, / или - при вычислениях является результат ans = NaN (Not a Number – не число) или ans = Inf – системная переменная, равная машинной бесконечности (+) и характеризующая результат деления на ноль или переполнение регистра.
» s=sin(0)/0
Warning: Divide by zero (Предупреждение: деление на нуль)
s = NaN
» exp(1000)
ans = Inf
Система MATLAB реализует операции не только с действительными, но и с комплексными числами, причем мнимые единицы i и j определены по умолчанию как . MATLAB допускает возможность переопределить эти величины (например, как целые переменные в заголовке цикла for). Комплексное число может быть задано в естественной форме, например, или . Возможна и такая форма записи: . Существуют следующие функции для работы с комплексными числами:
real(z) – возвращает действительную часть комплексного числа z;
imag(z) – возвращает мнимую часть комплексного числа z;
conj(z) – возвращает комплексно сопряженное число;
angle(z) – возвращает фазовый угол (в радианах);
abs(z) – возвращает модуль комплексного числа.
Приведем примеры:
» j
ans = 0 + 1.0000i
» z = 1 – 2i
z = 1.0000 – 2.0000i
» z=1-2*j
z =
1.0000 - 2.0000i
» real(z)
ans = 1
» imag(z)
ans = – 2
» abs(z)
ans = 2.2361
» angle(z)
ans = -1.1071
» conj(z)
ans = 1.0000 + 2.0000i
Еще примеры действий с комплексными числами:
» sqrt(z)
ans = 1.2720 – 0.7862i
» z^2
ans = -3.0000 – 4.0000i
» sin(z)
ans = 3.1658 – 1.9596i
» 2^z
ans = 0.3669 – 1.9661i
Пример операции, некорректной в элементарной тригонометрии:
» asin(4)
ans =
1.5708 – 2.0634i
Проверка:
» sin(1.5708-2.0634i)
ans =
3.9999 + 0.0000i
Функция disp выводит результат непосредственно, без использования переменной ans:
» s=sin(4.5); w=cos(s); disp(s^w)
-0.1822 + 0.9704i
Практические рекомендации:
1. Переменные, использованные при вычислениях, сохраняются в рабочем пространстве MATLAB (см. описание интерфейса системы); их список может быть выведен на экран с помощью команды » who, а значения – с помощью команды » whos.
2. С помощью команды » clc можно очистить текущее окно MATLAB; параметры рабочего пространства и значения переменных при этом сохраняются.
3. Для сохранения рабочего пространства с целью продолжения работы в среде с данными параметрами необходимо обратиться к главному меню: File-Save Workspace As… , а затем с помощью диалогового окна создать файл с расширением .mat (mat-файл). Для последующей загрузки рабочего пространства – команда File-Load Workspace… .
4. Удаление имен переменных из рабочего пространства осуществляется с помощью команды clear name1 name2 … или clear(‘name1’,’name2’,…).