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

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

Файл Main2.m

clear all

clc

P0=[1 1 1 1 1];

OPTIONS = optimset('MaxIter',100000);

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

xlabel('t')

ylabel('u,x')

Файл Eiler2.m

function j=Eiler2(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;

x1r=[];

u1r=[];

tr=[];

while t0<t_max

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

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

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

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

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

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

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

Файл Main45.m

clear all

clc

P0=[1 1 1 1 1];

OPTIONS = optimset('MaxIter',1000000);

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

xlabel('t')

ylabel('u,x')

Файл fmsfun45.m

function J=fmsfun45(Q)

global P;

P = Q;

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

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

n=length(t);

for k = 1:n

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

end

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

figure(2)

plot(t,x(:,1),t,u)

grid on;

end

Файл odefun45.m

function F=odefun45(t,x)

global P;

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

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

end

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

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

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

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

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

Файл Main2.m

clear all

clc

P0=[1 1 1 1 1];

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

Файл fmsfun23s.m

function J=fmsfun23s(Q)

global P;

P = Q;

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

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

n=length(t);

for k = 1:n

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

end

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

figure(2)

plot(t,x(:,1),t,u)

grid on;

end

Файл odefun23s.m

function F=odefun23s(t,x)

global P;

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

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

end

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

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

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

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

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

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

Файл Main.m

clear all

clc

P0=[1 1 1 1];

OPTIONS = optimset('MaxIter',100000);

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

xlabel('t');

ylabel('u,x')

Файл Eiler3.m

function j=Eiler3(P)

t0=0;

t_max=4;

dt=0.01;

x1=1;

x2=0;

j=0;

x1r=[];

u1r=[];

tr=[];

while t0<t_max

u=P(1)*exp(P(2)*t0).*(cos(P(3)*t0+P(4)));

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;

figure(2);

plot(tr,x1r,tr,u1r), grid on

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

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

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

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

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