Добавил:
nikolozzz15@gmail.com Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursovoy_Chirkov.docx
Скачиваний:
1
Добавлен:
27.11.2022
Размер:
582.58 Кб
Скачать
  1. Определение параметров с использованием функции ode45

Файл main1.m

clear all

clc

P0=[1 1 1 1 1];

OPTIONS = optimset('MaxIter',100000);

[P,F] = fminsearch('fmsfun1',P0,OPTIONS);

Файл fmsfun1.m

function J=fmsfun1(Q)

global P;

P = Q;

OPTIONS = odeset('RelTol', 1e-6);

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

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')

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

grid on;

end

Файл odefun1.m

function F=odefun1(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); x(1)-2*x(2)+u; 2*x(1)^2+u^2];

end

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

Рис. 4

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

u(0) = -2.1487

-1.2086

-0.6743

-0.3787

-0.1579

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

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

Файл main1.m

clear all

clc

P0=[1 1 1 1 1];

OPTIONS = optimset('MaxIter',100000);

[P,F] = fminsearch('fmsfun1',P0,OPTIONS);

Файл fmsfun1.m

function J=fmsfun1(Q)

global P;

P = Q;

OPTIONS = odeset('RelTol', 1e-6);

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

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')

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

grid on;

end

Файл odefun1.m

function F=odefun1(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); x(1)-2*x(2)+u; 2*x(1)^2+u^2];

end

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

Рис. 5

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

u(0) = -2.1476

-1.2071

-0.6767

-0.3805

-0.1574

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

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

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

Файл Eiler2.m

clear all

clc

P0=[1 1 1 1 1];

OPTIONS = optimset('MaxIter',100000);

[P,F]=fminsearch('Eiler_fun2',P0)

Файл Eiler_fun2.m

function j=Eiler_fun2(P)

t0=0;

t_max=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<t_max

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

u_res=[u_res u];

dx1=x2*dt;

dx2=x1*dt-2*x2*dt+u*dt;

dj=(2*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;

figure(1)

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

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

grid on

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

Рис. 6

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

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

Оценим влияние шага интегрирования:

dt = 0.1:

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

Рис. 7 Управление как кусочно-постоянная функция времени (c шагом 0.1)

dt = 0.5:

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

Рис. 8 Управление как кусочно-постоянная функция времени (c шагом 0.5)

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