Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_ЛР_СисАнВыч_Мехат_б.pdf
Скачиваний:
60
Добавлен:
10.05.2015
Размер:
2.34 Mб
Скачать

Пример 3

Рассмотрим нелинейную систему с той же шириной мѐртвой зоны, что и раньше – ±0.5.

Рассчитаем положение равновесия этой системы при входном сигнале 1. Нетрудно составить уравнение баланса:

X1 *

3

0.5 X1,

X1 0.4

2

 

 

 

Нетрудно подсчитать значение второго выхода Х2=0.9. Теперь обратимся к функции trim. Эта функция численно, то есть приближѐнно, решает уравнения баланса, поэтому с одной стороны нуждается в начальном приближении, а с другой стороны может вообще не найти решения. Еѐ входными параметрами являются имя модели (строка), начальное приближение установившегося состояния x0 и значение входа u0. Выходными параметрами являются установившееся состояние, XS, значение водного сигнала US, установившиеся выходы системы YS, вектор производных состояния в установившейся точке DX. Этот последний вектор должен состоять из одних нулей, если установившееся состояние найдено верно, так что он служит признаком корректности решения.

>>x0 = [0; 0; 0];

>>u0 = 1;

>>[xs us ys dx]=trim('model_Nz',x0,u0)

Maximum number of function evaluations exceeded; increase OPTIONS(14)

xs = -0.0000 0.0000 0.2357

us =

0 2.1213 -3.0000 -1.4142 1.4142 0

1 ys =

-0.0000 0.5000

dx = 0.0000 0.6667 0.0000

>>

Как видно, попытка окончилась недачей, было превышено максимальное разрешѐнное количество итераций. Да и вектор производных далеко не нулевой. Остаѐтся или увеличить количество итераций, что редко помогает, или испытать другое начальное приближение.

>>x0 = [1; 0; 0];

>>[xs us ys dx]=trim('model_Nz',x0,u0) xs =

0.4000

0.0000

0.4243 us =

1 ys =

0.4000

0.9000 dx =

1.0e-025 *

0

0

0.3338

Вот теперь всѐ получилось, и значения выходов совпадают с нашими расчѐтами, и производные весьма близки к нулю (обратите внимание на общий множитель при векторе dx – 10-25). Не очень понятен вектор состояния, но так уж составил Matlab уравнения в пространстве состояний. Зато это состояние мы можем теперь использовать при линеаризации модели в окрестности установившегося состояния.

>> [A B C D]=linmod('model_Nz',xs,us) A =

-1.0000 -1.0000 0

B =

0

1.0000

0