- •1 Математическое описание линейных систем
- •1.1 Дифференциальное уравнение системы. Характеристическое уравнение и его корни
- •1.2 Разложение передаточной функции на сумму простых слагаемых. Вычисление импульсной переходной характеристики ω(t) с помощью обратного преобразования Лапласа и переходной характеристики h(t)
- •1.3 Построение лачх и лфчх
- •1.4 Уравнение состояния в нормальной форме,схема моделирования
- •1.5 Уравнение состояния в канонической форме,
- •1.6 Решение уравнения состояния в нормальной и канонической формах
- •2 Линейное программирование
- •2.1 Математическая модель задачи. Нахождение оптимального плана х* и экстремального значения функции
- •2.2 Построение и решение задачи, двойственной к исходной. Сравнение решения прямой и двойственной задач
- •2.3 Получение целочисленного решения путем введения дополнительных ограничений по методу Гомори
- •3 Нелинейное программирование
- •3.1 Построение одзп, выбор начальной точки поиска
- •3.2 Нахождение экстремального значения функции f(X) без учета ограничений на переменные
- •3.2.1 Метод наискорейшего спуска
- •3.2.2 Метод Ньютона-Рафсона
- •3.3 Нахождение экстремального значения функции f(X) с учетом системы ограничений задачи
- •23.3.1 Метод допустимых направлений Зойтендейка
- •3.3.2 Метод линейных комбинаций
- •3.3.3 Условия теоремы Куна-Таккера
- •4 Тексты программ в среде matlab
- •4.1 Математическое описание линейных систем
- •4.2 Линейное программирование
- •4.3 Нелинейное программирование
4 Тексты программ в среде matlab
4.1 Математическое описание линейных систем
>> w=tf([160 240],[1 11 38 40])
Transfer function:
160 s + 240
------------------------
s^3 + 11 s^2 + 38 s + 40
>> pole(w)
ans =
-5.0000
-4.0000
-2.0000
>> zpk(w)
Zero/pole/gain:
160 (s+1.5)
-----------------
(s+5) (s+4) (s+2)
>> ss(w)
a =
x1 x2 x3
x1 -11 -4.75 -2.5
x2 8 0 0
x3 0 2 0
b =
u1
x1 8
x2 0
x3 0
c =
x1 x2 x3
y1 0 2.5 1.875
d =
u1
y1 0
Continuous-time model.
>> ch=[160 240]
ch =
160 240
>> zn=[1 11 38 40]
zn =
1 11 38 40
>> [x]=residue(ch, zn)
x =
-186.6667
200.0000
-13.3333
>> [c]=residue(ch,[zn,0])
c =
37.3333
-50.0000
6.6667
6.0000
>> step(w)
Рисунок 4.1 – Переходная характеристика h(t)
>>impulse(w)
Рисунок 4.2 – Импульсная переходная характеристика w(t)
>>nyquist(w)
Рисунок 4.3 - АФЧХ системы
>> margin(w)
Рисунок 4.4 - ЛАЧХ и ЛФЧХ системы
>> M=[1 1 1;-3 -5 -7;9 25 49]
M =
1 1 1
-3 -5 -7
9 25 49
>> inv(M)
ans =
4.3750 1.5000 0.1250
-5.2500 -2.5000 -0.2500
1.8750 1.0000 0.1250
>> B=[0;840;-11340]
B =
0
840
-11340
>> M^-1*B
ans =
-157.5000
735.0000
-577.5000
4.2 Линейное программирование
Прямая задача:
>> F=[-3 3 4];
>> A=[0 -1 1;-3 -5 4;-5 5 -2;-1 0 0;0 -1 0;0 0 -1];
>> B=[0;-12;-6;0;0;0];
>> Aeq=[-4 -2 1];
>> Beq=[-15];
>> x=linprog(F,A,B,Aeq,Beq)
Optimization terminated successfully.
x =
3.6429
0.2143
0.0000
>> F*x
ans =
-10.2857
Двойственная задача:
>> F=[15 0 -12 -6];
>> A=[-4 0 3 5;-2 1 5 -5;1 -1 -4 2;0 -1 0 0;0 0 -1 0;0 0 0 -1];
>> C=[-3;3;4;0;0;0];
>> y=linprog(F,A,C)
Optimization terminated successfully.
y =
1.7143
0.0000
1.2857
0.0000
>> F*y
ans =
10.2857
4.3 Нелинейное программирование
>> [x1,x2]=meshgrid([-5:0.1:10]);
>> F=-F=7*x1.^2+4*x2.^2+7*x1.*x2+6*x1-7*x2;
>>meshc(x1,x2,F)
Из рис. 4.5 видно, что функция выпуклая вниз, а, следовательно, имеет минимум.
Рисунок 4.5 – Вид функции F вместе с проекциями линий уровня
>> [x1,x2]=meshgrid([-2:0.1:4]);
>> F=7*x1.^2+4*x2.^2+7*x1.*x2+6*x1-7*x2;
>> figure;
>> cl=[99 1.53 -10.74 -12.2 -12.4];
>> [c,h]=contour3(x1,x2,F,cl,'r');
>> clabel(c,h);
>>view(0,90);
Рисунок 4.6 – Линии уровня
>> fun=inline('7*x(1)^2+4*(x)2^2+7*x(1)*x(2)+6*x(1)-7*x(2)');
>> x0=[3 1];
>> options=optimset('LargeScale','off');
>> [x,fval,exitflag,output]=fminunc(fun,x0,options);
Local minimum found.
Optimization completed because the size of the gradient is less than
the default value of the function tolerance.
<stopping criteria details>
>> x
x =
-1.5397 2.2222
>> fval
fval =
-12.3968
Безусловная минимизация функции многих переменных
с учетом ограничений
>> x0=[3 1];
>> A=[-1 2;49 10];
>> H=[14 7;7 8];
>> f=[6 -7];
>> B=[2;550];
>> vlb=zeros(2,1);
>> vub=[ ];
>> x=quadprog(H,f,A,B,[],[],vlb,vub);
Warning: Trust-region-reflective algorithm does not solve this type of problem, using active-set algorithm. You could also try the
interior-point-convex algorithm: set the Algorithm option to 'interior-point-convex' and rerun. For more help, see Choosing the Algorithm in
the documentation.
> In quadprog at 368
Optimization terminated.
>> x
x =
0
0.8750
>> z=f*x+(1/2)*x'*H*x
z =
-3.0625