- •А.К. Ефремов интегрированная
- •Рекомендовано редсоветом мгту им. Н.Э. Баумана
- •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)
6.4. Символьное решение уравнений
6.4.1. Решение отдельных уравнений
Команда x=solve(f) – решение уравнения, заданного символьно или в виде строкового выражения; если знак равенства не указан, предполагается, что :
сравните:
» f='a*x^2+b*x+c'; solve(f) % или » f='a*x^2+b*x+c=0'; solve(f)
ans =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
» syms a b c x
и
» f=a*x^2+b*x+c; solve(f)
ans =
[ 1/2/a*(-b+(b^2-4*a*c)^(1/2))]
[ 1/2/a*(-b-(b^2-4*a*c)^(1/2))]
Команда x=solve(f,v) – решение уравнения относительно переменной v:
» solve(f,a)
ans =
-(b*x+c)/x^2
6.4.2. Решение систем уравнений
Пусть требуется решить систему из двух уравнений
В этом случае решение будет иметь вид
» syms x y
» f1=x^2+x*y+y-3; f2=x^2-4*x+3; [x y]=solve(f1,f2)
x =
[ 1]
[ 3]
y =
[ 1]
[ -3/2]
Другой вариант решения:
» syms x y
» f1=x^2+x*y+y-3; f2=x^2-4*x+3; u=solve(f1,f2)
u =
x: [2x1 sym]
y: [2x1 sym]
» disp(u.x)
[ 1]
[ 3]
» disp(u.y)
[ 1]
[ -3/2]
Упражнение. Решить уравнение .
6.4.3. Решение дифференциальных уравнений
Функция r=dsolve(‘eq1’,’eq2’,…,’cond1’,’cond2’,…) вычисляет аналитическое решение ОДУ eq1, eq2,… с учетом начальных условий cond1, cond2,… По умолчанию независимой переменной является t. Символ D означает дифференцирование, т.е. ; . Результат зависит от исходных данных:
а) для одного уравнения и одного выходного аргумента – одномерный или многомерный массив ячеек;
б) для систем уравнений с одинаковым числом выходных переменных и аргументов – решения упорядочены по именам переменных в алфавитном порядке;
в) для систем уравнений с одним выходным аргументом – в виде массива записей.
Рассмотрим примеры:
Решим ДУ 1-го порядка: .
» f='Dy=-a*y';
» y=dsolve(f) % без учета начальных условий
y =
exp(-a*t)*C1
» y=dsolve(f,'y(0)=1') % начальное условие учтено (С1=1)
y =
exp(-a*t)
Решим ДУ 2-го порядка: – уравнение осциллятора без демпфирования:
» f='D2y+a^2*y=0'; disp(dsolve(f))
C1*sin(a*t)+C2*cos(a*t)
» disp(dsolve(f,'Dy(0)=1','y(0)=0'))
1/a*sin(a*t)
Решим систему ДУ:
» [x y]=dsolve('Dx=y','Dy=-x','x(0)=0','y(0)=1')
x =
sin(t)
y =
cos(t)
Упражнение. Решить ДУ
7. Пакет моделирования динамических систем simulink
Simulink – программа, предназначенная для моделирования динамических систем; она является пакетным расширением системы MATLAB, обладает многими ее свойствами и предъявляет аналогичные требования к аппаратной части компьютера. Simulink использует новый тип окон, в которых создаются блок-схемы (модели, или, как их иногда называют, S-модели) исследуемых систем. При этом имеется возможность наблюдать за ходом моделирования, варьировать параметры и характеристики отдельных блоков, а также размеры рабочего окна. В настоящем пособии рассматривается версия 2.2.
Simulink имеет обширную библиотеку блочных компонентов и удобный редактор блок-схем – разновидность средств визуального программирования. Технически модель создается достаточно просто: выбирая нужные компоненты из библиотеки, пользователь с помощью мыши переносит их в рабочее окно модели (технология Drag & Drop), соответствующим образом соединяет их между собой и настраивает. Модели хранятся в файлах с расширением .mdl. Модель может иметь сложную иерархическую структуру, т.е. включать модели нескольких более низких уровней. Гибкость системы MATLAB проявляется и в данном случае, поскольку пользователь может дополнять стандартные библиотеки собственными блоками.
Математической базой Simulink являются сложные систем алгебраических и дифференциальных уравнений (линейных и нелинейных), которые автоматически генерируются при «сборке» модели и решаются в процессе ее работы.