Автор: Пользователь скрыл имя, 23 Ноября 2012 в 00:04, контрольная работа
Предыстория динамики — это описание законов механики, становление классической и небесной механики. Представления Ньютона были основаны на предположении, что законы природы могут быть выражены в математических терминах, и физические события могут быть предсказаны и смоделированы с математической точностью. Ключевым понятием в этой концепции является детерминизм: природа подчиняется неизменным законам. Процесс, описываемый детерминированной системой, однозначно определяется заданным начальным состоянием.
1 Задачи исследования динамических систем 3
1.1 Теория динамических систем (динамика) 3
1.2 Непрерывные и дискретные системы 3
1.3 Символическая динамика 4
1.4 Численные методы 5
2 Методы оценки устойчивости динамических систем. Определение параметров математических моделей из условия устойчивости ДС. 8
2.1. Построение системы оценки организационно-экономической устойчивости промышленных корпоративных систем 9
3 Назначение, режимы работы, особенности и достоинства ПК "МВТУ". 15
3.1 Программный комплекс «Моделирование в технических устройствах» (ПК «МВТУ») 15
Введение 15
1. Построение математических моделей 16
1.1. Формирование моделей из типовых блоков 16
1.2. Язык программирования 18
1.3. Реализация дифференциально-алгебраических уравнений 22
2. Моделирование 24
3. Оптимизация 27
4. Анализ 28
5. Синтез 29
5.1. Частотный метод 29
5.2. Корневой метод 32
6. Исследование адаптивного ПИ-регулятора 32
Заключение 35
Литература и Интернет 37
Листинг 1
input u,v; //входы блока (граничные условия)
init T=N#20; //начальные условия
const alfa=0.02, K=alfa*(N-1)^2,
x=linspace(0,1,N);
//x - массив узлов равномерной сетки
T[1]=u; T[N]=v;
for (i=2,N-1) T'[i]=K*(T[i-1]-2*T[i]+T[i+1])
output x[N],T[N]; //векторные выходы блока
(комментарии следуют за
Рассмотрим еще один пример –
фильтрацию сигналов с использованием
быстрого преобразования Фурье (БПФ)
(файл \Demo\Язык_программирования\
Листинг 2
t=linspace(0,1023,1024)/4;
x=sin(5*pi*t/128)+0.9*cos(pi*
xn=1024#0;
for (k=1,1024) xn[k]=x[k]+2*randg(0,1);
// t - массив значений времени
// x - исходный сигнал
// xn - зашумленный сигнал
y=fft(xn); //прямое БПФ
py=abs(y).*abs(y);
Porog=4e4;
// py - спектральная плотность сигнала
// Porog - порог для спектральной плотности
pz=1024#(0,0);
for (k=1,1024)
if py[k]<Porog then pz[k]=0+0i else pz[k]=y[k];
z=real(ifft(pz)); //обратное БПФ
// z - фильтрованный сигнал
f=linspace(1,511,511)/256;
// массив значений частоты
for (k=1,511) E[k]=py[k+1]*1e-4;
E_Porog=511#(Porog*1e-4);
// нормированные значения спектр. плотности и порога
output t[1024],xn[1024],x[1024],f[
E[511],E_Porog[511],z[1024];
На выходе блока получаем массивы значений сигналов, а также массив значений спектральной плотности. Результаты, отображенные с помощью блоков График Y от X, показаны на рис. 2.
Рис. 2. Фильтрация сигнала с помощью БПФ: а - зашумленный сигнал (зеленая линия) и исходный сигнал (красная линия); б –спектральная плотность (красная линия) и порог для спектральной плотности (синяя линяя); в – исходный сигнал (красная линия) и фильтрованный сигнал(синяя линия).
Как правило, сложная техническая
система является гибридной системой,
поведение которой описывается
не только дифференциально-
Рассмотрим пример, включенный в состав демонстрационных примеров пакета Stateflow под названием Stick-Slip Friction Demonstration. Моделируется движение бруска, прикрепленного к пружине, под действием внешней силы и с учетом сухого трения (такая модель подробно рассмотрена в [7]). Эта же модель, реализованная в ПК «МВТУ» (файл \Demo\Язык_программирования\ Сухое_трение_анимация.mrj), показана на рис. 3. В этом примере моделирование выполняется с использованием типового блока Анимация, демонстрирующего движение бруска в реальном масштабе времени.
Рис. 3. Модель движения бруска с сухим трением.
Параметры модели: M – масса бруска; K – упругость пружины; Fstatic – сила, которую нужно приложить, чтобы сдвинуть брусок с места; Fsliding – сила трения скольжения (Fstatic ³Fsliding). Изменение состояния бруска описывается следующими логическими условиями: если брусок остановился или был в состоянии покоя и при этом суммарная сила Fsum не превышает по модулю Fstatic, то брусок остается в состоянии покоя; в противном случае он находится в состоянии движения. В соответствии с этими условиями алгоритм вычисления скорости бруска, реализованный в блоке Язык программирования, имеет вид
Листинг 3
input Fsum;
init V=0;
var Vold=V;
if (V*Vold<=0) and (abs(Fsum)<=Fstatic)
then begin V'=0; V=0 end //покой
else V'=(Fsum-Fsliding*sign(V))/M; //движение
if goodstep then Vold=V;
//Vold - скорость на предыдущем успешном шаге
output V;
Здесь goodstep – системная логическая переменная, которая принимает значение true в случае успешного шага интегрирования и false в противном случае. На каждом шаге интегрирования производится оценка ошибки. Шаг считается успешным (goodstep=true), если эта оценка меньше допустимой. В противном случае (goodstep=false) происходит возврат к предыдущему шагу, после чего выполняется шаг меньшего размера. Изменение состояния (покой или движение) фиксируется только при успешном шаге. Благодаря использованию языка программирования модель оказалась более простой и наглядной, чем аналогичная модель в среде Simulink+Stateflow. Отметим, что и время счета такой модели в ПК «МВТУ» в несколько десятков раз меньше, чем в Simulink (для определения времени счета следует использовать пример без анимации – Сухое_трение.mrj).
Язык программирования ПК «МВТУ» позволяет каждому пользователю создавать собственные функции на основе стандартных конструкций языка. Такие функции могут быть объединены в библиотеки, вызов которых осуществляется оператором вида
Листинг 4
include "filename.txt";
где filename.txt – имя файла, содержащего тексты пользовательских функций и процедур. Например, алгоритм расчета годографа Найквиста можно записать в виде
Листинг 5
include "procedures.txt";
input B[M],A[N];
//массивы коэффициентов передаточной функции
w=logspace(-1,3,200);
//массив частот в логарифмическом масштабе
Nyquist(B,A,w,X,Y);
output X[200],Y[200]; //массивы точек годографа
где процедура расчета точек годографа содержится в файле procedures.txt и имеет вид
Листинг 6
procedure Nyquist(B[1],A[1],w[1],out Re[1],out Im[1])
var z:complex,i:integer;
for (i=1,cols(w))
begin
z=1j*w[i]; z=polyval(B,z)/polyval(A,z);
Re[i]=real(z); Im[i]=imag(z);
end;
end;
Размерности массивов B и A (M и N) задаются в окне глобальных параметров модели. Для отображения годографа следует использовать типовой блок График Y от X, на вход которого подаются векторные сигналы X и Y. Расчет производится на каждом шаге интегрирования, что позволяет наблюдать изменение годографа в процессе моделирования нестационарных и нелинейных систем.
При использовании ПК «МВТУ», а
также аналогичных программных
комплексов (Simulink, VisSim и др.) наиболее
просто реализуются модели, элементы
которых описываются
Система ДАУ может быть представлена в полуявной форме
(1.1)
x' = f(x, y, t), 0 = g(x, y, t)
либо в неявной форме
(1.2)
F(x', x, y, t) = 0
Схемы реализации уравнений вида (1.1) и (1.2) в ПК «МВТУ» показаны на рис. 4, где предполагается, что все линии связи – векторные. Здесь для формирования функций f и g используется блок Язык программирования, а для формирования функции F – блок Новый. При реализации уравнения (1.2) используется также блок Демультиплексор, который «расщепляет» вектор неизвестных размерности n + m на вектор x' размерности n и вектор y размерности m.
Рис. 4. Схемы реализации систем ДАУ: а – в полуявной форме (1.1); б – в неявной форме (1.2).
Таким образом, в ПК «МВТУ» можно
реализовать практически любую
модель, описываемую системой ДАУ. Например,
можно построить модель электрической
схемы, придав ей вид, показанный на рис.
5 (файл \Demo\Электротехника\
Рис. 5. Пример построения модели электрической схемы: а – схема выпрямителя; б – эквивалентная схема трансформатора (макроблок).
Рис. 6. Модели элементов электрической схемы (синяя линия – напряжение, красная – ток).
Аналогичным образом строятся модели
линейного и нелинейного
Приведенный пример показывает, что с помощью макроблоков и блоков В память, Из памяти и F(Y)=0 в ПК «МВТУ» достаточно просто реализуется контурный метод расчета электрических схем. Реализация некоторых других физических моделей затрудняется тем, что линии связи между блоками могут быть только направленными. В последующих версиях ПК «МВТУ» предполагается ввести также и ненаправленные (бинаправленные) линии связи, что, в частности, удобно для реализации узлового метода расчета электрических схем.
Когда модель построена, можно произвести ее моделирование. Предварительно задаются параметры расчета: метод и интервал интегрирования, минимальное и максимальное значения шага интегрирования, шаг вывода результатов, точность. Дополнительно можно установить режим масштабирования времени с заданием «множителя ускорения» модельного времени. Если задать этот множитель равным 1, то скорости протекания модельного и реального времени будут совпадать. Такой режим позволяет обеспечить синхронизацию обмена данных с внешними устройствами при моделировании в реальном времени.
Для решения дифференциальных уравнений в ПК «МВТУ» реализованы 10 явных и 6 неявных методов, среди которых есть новые оригинальные методы [8, 9]. Известно, что классические явные методы (Рунге-Кутты, Адамса и др.) неэффективны при интегрировании жестких систем, поэтому для решения таких задач обычно используют неявные методы. В ПК «МВТУ» реализованы новые явные адаптивные методы [8], параметры которых автоматически настраиваются на решаемую задачу, благодаря чему они позволяют эффективно решать многие жесткие системы. Кроме этого, один из адаптивных методов (Адаптивный 5) обеспечивает точное воспроизведение быстро осциллирующих решений при наличии собственных значений якобиана вблизи мнимой оси. Результаты решения множества тестовых и прикладных задач показали, что реализованные в ПК «МВТУ» методы позволяют быстро и качественно правильно решать задачи разных типов (жесткие, осциллирующие, локально неустойчивые, разрывные). Некоторые результаты тестовых испытаний приведены в [10].
ПК «МВТУ» позволяет также эффективно решать системы ДАУ. При использовании явных методов алгебраическая подсистема решается независимо от дифференциальной, при этом можно применять один из трех методов (простых итераций, Ньютона-Рафсона, Бройдена). При использовании неявных методов алгебраическая и дифференциальная подсистемы решаются совместно, что позволяет решать системы ДАУ высших индексов. Система ДАУ (1.1) имеет индекс 1, если матрица частных производных ∂g(x, y, t) / ∂y обратима в любой точке на траектории решения. В этом случае можно аналитически либо численно исключить из уравнений вектор y, приведя таким образом систему к форме Коши. Если матрица ∂g / ∂y вырождена, то приведение к форме Коши невозможно, такие системы имеют индекс 2 и выше и называются системами ДАУ высших индексов (подробнее об индексе ДАУ см. в [11]). Простейшая схема, описываемая системой ДАУ индекса 2, показана на рис. 7. Эта схема осуществляет дифференцирование входного сигнала, обеспечивая более высокую точность, чем типовой блок Дифференцирование. Подобные схемы позволяют строить обратные модели (данная схема является обратной моделью для интегратора).
Рис. 7. Модель, описываемая системой ДАУ индекса 2 (дифференцирование входного сигнала).
Системы ДАУ высших индексов часто возникают при решении задач механики, теории управления, электротехники и т.д. [11]. Например, электрическая схема, представленная на рис. 5, описывается системой ДАУ индекса 2. Однако Simulink, Vissim и многие другие известные системы моделирования позволяют решать ДАУ только индекса 1. ПК «МВТУ» имеет очевидное преимущество перед этими ПК, позволяя решать системы ДАУ высших индексов.