Добавил:
nikolozzz15@gmail.com Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовая_ТОУ_Логинов.docx
Скачиваний:
1
Добавлен:
27.11.2022
Размер:
286.3 Кб
Скачать

2В. Определение параметров с использованием функции ode23

Файл main2.m

clear all

clc

u0=[1 1 1 1 1];

OPTIONS = optimset('MaxIter',100000);

[u,F] = fminsearch('fmsfunction1',u0,OPTIONS);

Файл fmsfunction1.m

function J=fmsfunction1(Q)

global u;

u = Q;

OPTIONS = odeset('RelTol', 100000);

[t,x] = ode23s('ode1',[0 4],[1 0 0], OPTIONS);

n=length(t);

for k = 1:n

if t(k)<0.8

U(k)=u(1);

elseif t(k)<1.6

U(k)=u(2);

elseif t(k)<2.4

U(k)=u(3);

elseif t(k)<3.2

U(k)=u(4);

else

U(k)=u(5);

end

end

J=x(n,3)+20*(x(n,1)^2);

figure(5)

plot(t,x(:,1),'--',t,U)

legend('x(t)','U(t)')

grid on;

end

Файл ode1.m

function F=ode1(t0,x)

global u;

if t0<0.8

U=u(1);

elseif t0<1.6

U=u(2);

elseif t0<2.4

U=u(3);

elseif t0<3.2

U=u(4);

else

U=u(5);

end

F = [x(2); -1*x(1)-2*x(2)+1*U;1*x(1)^2+U^2];

end

Графики переходных процессов, соответствующие рассматриваемой функции времени, показаны на рис. 3.

Рис. 3

В результате поиска были определены следующие значения управляющего воздействия, соответствующие заданным моментам времени:

u(0) = -0.3232

-0.1588

-0.0820

-0.0820

-0.0265

Значение критерия качества J=1.1093

3. Поиск параметров полиномиальной функции времени

  1. Определение параметров методом Эйлера

Файл Main3.m

u0=[1 1 1 1 1];

OPTIONS = optimset('MaxIter',100000);

[u,F] = fminsearch('funpol',u0,OPTIONS);

Файл funpol.m

function j = funpol(u)

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;

x1_res=[];

u_res=[];

t_res=[];

while t0<tm

U=polyval([u(1) u(2) u(3) u(4) u(5)],t0);

u_res=[u_res U];

dx1 = x2*dt;

dx2 = (-1)*x1*dt + (-2)*x2*dt +1*U*dt;

dj = (1*x1^2+U^2)*dt;

x1=x1+dx1;

x1_res=[x1_res x1];

x2=x2+dx2;

j=j+dj;

t0=t0+dt;

t_res=[t_res t0];

end

j=j+20*x1^2;

plot(t_res,x1_res,'--',t_res,u_res)

legend('x(t)','u(t)')

grid on

Рис. 4. Управление как полиномиальная функция времени

В результате было определено управляющее воздействие как следующая полиномиальная функция времени:

Достигнуто значение критерия качества 1.1165

Графики переходных процессов, соответствующие рассматриваемой функции времени показаны на рис. 4.

  1. Определение параметров с использованием функции ode45

Файл Main4.m

clear all

clc

u0=[1 1 1 1 1];

OPTIONS = optimset('MaxIter',100000);

[u,F] = fminsearch('fmsfunction2',u0,OPTIONS);

Файл fmsfunction2.m

function J=fmsfunction2(Q)

global u;

u = Q;

OPTIONS = odeset('RelTol', 100000);

[t,x] = ode45('ode2',[0 4],[1 0 0], OPTIONS);

n=length(t);

for k = 1:n

U(k)=polyval([u(1) u(2) u(3) u(4) u(5)],t(k));

end

J=x(n,3)+20*(x(n,1)^2);

figure(2)

plot(t,x(:,1),'--',t,U)

legend('x(t)','U(t)')

grid on;

end

Файл ode2.m

function F=ode2(t,x)

global u;

U=polyval([u(1) u(2) u(3) u(4) u(5)],t);

F = [x(2); -1*x(1)-2*x(2)+1*U;1*x(1)^2+U^2];

end

Графики переходных процессов, соответствующие рассматриваемой функции времени показаны на рис. 5.

Рис. 5

В результате было определено управляющее воздействие как следующая полиномиальная функция времени:

Значение критерия качества J=1.1105.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]