Решение задач оптимального управления с использованием математической системы MATLAB и пакета имитационного моделирования SIMULINK. Сивохин А.В - 182 стр.

UptoLike

182
% аналитическом виде;
J=vpa(J,6) %-- вычисление значения функционала.
function FirstApproximation
%-- Нахождение и вычисление первого приближения функционала
%
Syms y0 a0 x Dy0 DiffFi0 DiffDiffFi0 IntDiffDiffFi0
y0=sym('a0*(x-x^2)') %-- вид первого приближения;
Dy0=diff(y0,x,1) %-- производная первого
% приближения;
DiffFi0=(Dy0^2+y0^2+12*x*y0) %-- подынтегральное выражение
% функционала;
DiffDiffFi0=diff(DiffFi0,a0,1) %-- дифференцирование
% подынтегрального выражения
% функционала;
IntDiffDiffFi0=int(DiffDiffFi0,x,0,1) %-- нахождение производной
% функционала по a0;
[a0]=solve(IntDiffDiffFi0) %-- нахождение коэффициента a0;
y0=subs(y0,a0,'a0') %-- нахождение выражения для первого
% приближения;
Dy0=subs(Dy0,a0,'a0') %-- нахождение
выражения для
% производной первого приближения;
J0=int(Dy0^2+y0^2+12*x*y0,x,0,1) %-- нахождение выражения для первого
% приближения функционала;
J0=vpa(J0,6) %-- вычисление первого приближения
% функционала.
function SecondApproximation
%-- Нахождение и вычисление второго приближения функционала
%
Syms y1 a0 a1 x DiffFi1 DiffDiffFi11 DiffDiffFi12 IntDiffDiffFi11 IntDiffDiffFi12
y1=sym('(a0+a1*x)*(x-x^2)') %-- вид второго приближения;
Dy1=diff(y1,x,1) %-- производная второго приближения;
DiffFi= (Dy1^2+y1^2+12*x*y1) %-- подинтегральное выражение
% функционала;
DiffDiffFi11=(2*(Dy1*(1-2*x)+y1*(x-x^2)+6*x^2-6*x^3))
%-- дифференцирование подинтегрального выражения
% функционала по а0;
                                    % аналитическом виде;
J=vpa(J,6)                          %-- вычисление значения функционала.



function FirstApproximation
%-- Нахождение и вычисление первого приближения функционала
%
Syms y0 a0 x Dy0 DiffFi0 DiffDiffFi0 IntDiffDiffFi0
y0=sym('a0*(x-x^2)')                 %-- вид первого приближения;
Dy0=diff(y0,x,1)                     %-- производная первого
                                     % приближения;
DiffFi0=(Dy0^2+y0^2+12*x*y0)          %-- подынтегральное выражение
                                      % функционала;
DiffDiffFi0=diff(DiffFi0,a0,1)        %-- дифференцирование
                                      % подынтегрального выражения
                                      % функционала;
IntDiffDiffFi0=int(DiffDiffFi0,x,0,1) %-- нахождение производной
                                      % функционала по a0;
[a0]=solve(IntDiffDiffFi0)             %-- нахождение коэффициента a0;
y0=subs(y0,a0,'a0')                    %-- нахождение выражения для первого
                                       % приближения;
Dy0=subs(Dy0,a0,'a0')                  %-- нахождение выражения для
                                       % производной первого приближения;
J0=int(Dy0^2+y0^2+12*x*y0,x,0,1) %-- нахождение выражения для первого
                                       % приближения функционала;
J0=vpa(J0,6)                          %-- вычисление первого приближения
                                      % функционала.



function SecondApproximation
%-- Нахождение и вычисление второго приближения функционала
%
Syms y1 a0 a1 x DiffFi1 DiffDiffFi11 DiffDiffFi12 IntDiffDiffFi11 IntDiffDiffFi12
y1=sym('(a0+a1*x)*(x-x^2)')         %-- вид второго приближения;
Dy1=diff(y1,x,1)                    %-- производная второго приближения;
DiffFi= (Dy1^2+y1^2+12*x*y1)         %-- подинтегральное выражение
                                    % функционала;
DiffDiffFi11=(2*(Dy1*(1-2*x)+y1*(x-x^2)+6*x^2-6*x^3))
            %-- дифференцирование подинтегрального выражения
            % функционала по а0;
                                        182