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

Файл main2.m

clear all

clc

P0=[1 1 1 1 1];

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

Файл fmsfun2.m

function J=fmsfun2(Q)

global P;

P = Q;

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

[t,x] = ode45('odefun2',[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),'--black',t,u,'black')

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

grid on;

end

Файл odefun2.m

function F=odefun2(t,x)

global P;

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

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

end

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

Рис. 9

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

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

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

Файл main2.m

clear all

clc

P0=[1 1 1 1 1];

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

Файл fmsfun2.m

function J=fmsfun2(Q)

global P;

P = Q;

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

[t,x] = ode23s('odefun2',[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),'--black',t,u,'black')

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

grid on;

end

Файл odefun2.m

function F=odefun2(t,x)

global P;

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

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

end

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

Рис. 10

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

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

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

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

Файл Eiler3.m

clear all

clc

P0=[1 1 1 1];

OPTIONS = optimset('MaxIter',100000);

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

Файл Eiler_fun3.m

function j=Eiler_fun3(P)

t0=0;

t_max=4;

dt=0.1;

x1=1;

x2=0;

j=0;

x1_res=[];

u_res=[];

t_res=[];

while t0<t_max

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

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(2);

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

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

grid on

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

Рис. 11

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

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

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

dt = 0.1:

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

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

dt = 0.5:

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

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

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