- •Задание на курсовую работу
- •Метод решения задачи
- •Поиск параметров кусочно-постоянной функции времени
- •Определение параметров методом Эйлера
- •Определение параметров с помощью функции ode45
- •Определение параметров с помощью функции ode23s
- •Поиск параметров полиномиальной функции времени
- •Определение параметров методом Эйлера
- •2.2. Определение параметров с помощью функции ode45
- •2.3. Определение параметров с помощью функции ode23
- •Поиск параметров экспоненциальной функции времени
- •Определение параметров методом Эйлера
- •3.2. Изучение влияния величины шага на параметры управляющего воздействия
- •Определение параметров с помощью функции ode45
- •Определение параметров с помощью функции ode23
- •Список используемой литературы
Поиск параметров кусочно-постоянной функции времени
Определение параметров методом Эйлера
Файл Main1.m
P0=[1 1 1 1 1];
OPTIONS = optimset('MaxIter',100000);
[P,F] = fminsearch('Eiler1',P0,OPTIONS);
xlabel('t')
ylabel('u,x')
Файл Eiler1.m
function j = Eiler1(P)
t0=0;
tm=4;
t1=0.8;
t2=1.6;
t3=2.4;
t4=3.2;
dt=0.01;
x1=1;
x2=0;
j=0;
x1r=[];
u1r=[];
tr=[];
while t0<tm
if t0<t1
u=P(1);
elseif t0<t2
u=P(2);
elseif t0<t3
u=P(3);
elseif t0<t4
u=P(4);
else
u=P(5);
end
u1r=[u1r u];
dx1=x2*dt;
dx2=-2*x1*dt-2*x2*dt+2*u*dt;
dj=(2*x1^2+u^2)*dt;
x1=x1+dx1;
x1r=[x1r x1];
x2=x2+dx2;
j=j+dj;
t0=t0+dt;
tr=[tr t0];
end
j=j+20*x1^2;
plot(tr,x1r,tr,u1r)
grid on
Рис. 1. Управление как кусочно-постоянная функция времени
В результате поиска были определены следующие значения управляющего воздействия, соответствующие заданным моментам времени:
u(0) = -0.3717
0.0229
0.0555
-0.0151
-0.00024071
Достигнуто значение критерия качества 1.3226
Графики переходных процессов, соответствующие рассматриваемой функции времени показаны на рис. 1.
Определение параметров с помощью функции ode45
Файл Main45.m
clear all
clc
P0=[1 1 1 1 1];
[P,F] = fminsearch('fmsfun45',P0);
Файл fmsfun45.m
function J=fmsfun45(Q)
global P;
P = Q;
[t,x] = ode45('odefun45',[0 4],[1 0 0]);
n=length(t);
for k = 1:n
if t(k)<0.8
u(k)=P(1);
elseif t(k)<1.6
u(k)=P(2);
elseif t(k)<2.4
u(k)=P(3);
elseif t(k)<3.2
u(k)=P(4);
else
u(k)=P(5);
end
end
J=x(n,3)+20*(x(n,1)^2);
figure(5)
plot(t,x(:,1),'black-',t,u,'black:')
grid on;
end
Файл odefun45.m
function F=odefun45(t0,x)
global P;
if t0<0.8
u=P(1);
elseif t0<1.6
u=P(2);
elseif t0<2.4
u=P(3);
elseif t0<3.2
u=P(4);
else
u=P(5);
end
F = [x(2); -2*x(1)-2*x(2)+2*u; 2*x(1)^2+u^2];
end
Рис. 2. Управление как кусочно-постоянная функция времени
В результате поиска были определены следующие значения управляющего воздействия, соответствующие заданным моментам времени:
u(0) = -0.2764
-0.0202
-0.0415
-0.0435
-0.0248
Достигнуто значение критерия качества 1.4306
Графики переходных процессов, соответствующие рассматриваемой функции времени показаны на рис. 2.
Определение параметров с помощью функции ode23s
Файл Main1.m
clear all
clc
P0=[1 1 1 1 1];
[P,F] = fminsearch('fmsfun23',P0);
Файл fmsfun23.m
function J=fmsfun23(Q)
global P;
P = Q;
[t,x] = ode23s('odefun23',[0 4],[1 0 0]);
n=length(t);
for k = 1:n
if t(k)<0.8
u(k)=P(1);
elseif t(k)<1.6
u(k)=P(2);
elseif t(k)<2.4
u(k)=P(3);
elseif t(k)<3.2
u(k)=P(4);
else
u(k)=P(5);
end
end
J=x(n,3)+20*(x(n,1)^2);
figure(5)
plot(t,x(:,1),'black-',t,u,'black:')
grid on;
end
Файл odefun23.m
function F=odefun23(t0,x)
global P;
if t0<0.8
u=P(1);
elseif t0<1.6
u=P(2);
elseif t0<2.4
u=P(3);
elseif t0<3.2
u=P(4);
else
u=P(5);
end
F = [x(2); -2*x(1)-2*x(2)+2*u; 2*x(1)^2+u^2];
end
Рис. 3. Управление как кусочно-постоянная функция времени
В результате поиска были определены следующие значения управляющего воздействия, соответствующие заданным моментам времени:
u(0) = -0.3680
0.0136
0.0541
0.0158
0.0028
Достигнуто значение критерия качества 1.3089
Графики переходных процессов, соответствующие рассматриваемой функции времени показаны на рис. 3.