Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1792.doc
Скачиваний:
151
Добавлен:
30.03.2015
Размер:
1.2 Mб
Скачать
      1. Задание 2

Найти экстремаль функционала для своего варианта задания. Исследовать на выполнение необходимых условий экстремума.

Проанализируйте условие Лежандра. Достигается ли экстремум на вашей экстремали? Постройте график решения.

    1. Варианты заданий

Вариант 1

Вариант 2

Вариант 3

Вариант 4

Вариант 5

Вариант 6

Вариант 7

Вариант 8

Вариант 9

Вариант 10

7. РЕШЕНИЕ ВАРИАЦИОННЫХ ЗАДАЧ ДЛЯ ФУНКЦИОНАЛОВ С ОГРАНИЧЕНИЯМИ

    1. 7.1. Условные экстремумы функционалов.

    2. Метод множителей Лагранжа

Требуется найти систему функций , реализующих минимум или максимум функционала

(1)

при граничных условиях

(2)

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

(3)

Искомую систему функций получают как решение системы дифференциальных уравнений Эйлера:

(4)

где и – частные производные от

(5)

по . Неизвестные функции j называются множителями Лагранжа.

Связи вида (3) называются голономными.

Метод множителей Лагранжа применяется и в случае достаточно гладких неголономных условий:

(6)

Определение 1. Изопериметрической задачей называется вариационная задача вида (1 - 2) при дополнительных, так называемых «изопериметрических» ограничениях:

(7)

Для получения необходимых условий экстремума в изопериметрической задаче нужно составить вспомогательный функционал:

(8)

где j =const. Для этого функционала записать систему уравнений Эйлера и решить её. Произвольные постоянные (их и множители Лагранжа (их m) находятся из граничных условий и m условий изопериметричности.

    1. 7.2. Выполнение заданий

      1. Задание 1

Найти экстремаль функционала, который исследовали в работе (разд. 4.2), но с дополнительным условием:

(9)

Сравнить решение с решением задания (разд. 4.2). Вычислить значения функционалов на обеих кривых. Построить графики.

Составить программу для этого примера на основе программы для примера (разд. 4.2).

Вначале опишите необходимые переменные и введите исходные данные. Повторите решение примера (разд. 4.2).

clear all % очистили память

disp('Решаем задание ')

syms x y Dy D2y lambda

F=x^2+y^2+Dy^2; % подынтегральная функция

x1=-1; % вводим граничные условия

y1=1;

x2=1;

y2=2;

F1=y;

J1=2;

disp('Исходные данные:')

fprintf('F(x,y,y'')=%s\n',char(F))

fprintf('Граничное условие слева: y(%d)=%d\n',x1,y1)

fprintf('Граничное условие справа: y(%d)=%d\n',x2,y2)

disp('Условие изопериметричности:')

fprintf('Int(%s,''x'',%d,%d)=%d\n',char(F1),x1,x2,J1)

dFdy=diff(F,y); % вычислили Fy

dFdy1=diff(F,Dy); % вычислили Fy'

d_dFdy1_dx=diff(dFdy1,x); % Fy'x

d_dFdy1_dy=diff(dFdy1,y); % Fy'y

d_dFdy1_dy1=diff(dFdy1,Dy); % Fy'y'-условие Лежандра

dFy1dx=d_dFdy1_dx+d_dFdy1_dy*Dy+d_dFdy1_dy1*D2y;

Euler=simple(dFdy-dFy1dx);

deqEuler=[char(Euler) '=0']; % добавили =0

Sol=dsolve(deqEuler,'x'); % решаем уравнение Эйлера

if length(Sol)~=1 % нет решений или более одного

error('Нет решений или более одного решения!');

end

SolLeft=subs(Sol,x,x1); % подставили x1

SolRight=subs(Sol,x,x2); % подставили x2

EqLeft=[char(SolLeft) '=' char(sym(y1))]; % =y1

EqRight=[char(SolRight) '=' char(sym(y2))]; % =y2

Con=solve(EqLeft,EqRight,'C1,C2'); % решаем систему

C1=Con.C1; % присваиваем полученные решения

C2=Con.C2; % символическим константам C1 и C2

Sol21=vpa(eval(Sol),6); % вычислили с 6-ю знаками

xpl=linspace(x1,x2); % задаём массив абсцисс

y21=subs(Sol21,x,xpl); % вычислили ординаты

Решаем задание

Исходные данные:

F(x,y,y')=x^2+y^2+Dy^2

Граничное условие слева: y(-1)=1

Граничное условие справа: y(1)=2

Условие изопериметричности:

Int(y,'x',-1,1)=2

Решите пример, предлагаемый в работе (разд. 6). Сформируйте вспомогательный функционал вида (8), запишите для него дифференциальное уравнение Эйлера и решите его.

L=F+lambda*F1; % модифицированный функционал

fprintf('L(x,y,y'',lambda)=%s\n',char(L))

dLdy=diff(L,y);

dLdy1=diff(L,Dy);

d_dLdy1_dx=diff(dLdy1,x);

d_dLdy1_dy=diff(dLdy1,y);

d_dLdy1_dy1=diff(dLdy1,Dy); % d(dL/dy')/dy'

dLy1dx=d_dLdy1_dx+d_dLdy1_dy*Dy+d_dLdy1_dy1*D2y;

EulerL=simple(dLdy-dLy1dx);

deqEulerL=[char(EulerL) '=0']; % составили уравнение

fprintf('Уравнение Эйлера:\n%s\n',deqEulerL)

SolL=dsolve(deqEulerL,'x'); % решаем уравнение Эйлера

if length(SolL)~=1 % нет решений или более одного

error('Нет решений или более одного решения!');

else

disp('Общее решение:')

fprintf('y(x)=%s\n',char(SolL))

end

L(x,y,y',lambda)=x^2+y^2+Dy^2+lambda*y

Уравнение Эйлера:

2*y+lambda-2*D2y=0

Общее решение:

y(x)=exp(x)*C2+exp(-x)*C1-1/2*lambda

Получено общее решение дифференциального уравнения, в которое входят две произвольные постоянные и неопределённый множитель Лагранжа. Для их нахождения есть два граничных условия и условие изопериметричности. Вычислите левую часть условия изопериметричности:

dydx=diff(SolL,x); % dy/dx

F1_y=subs(F1,{y,Dy},{SolL,dydx});

intF1=vpa(int(F1_y,x,x1,x2),6); % вычислили интеграл

disp('Левая часть условия изопериметричности:')

disp(char(intF1))

Левая часть условия изопериметричности:

2.35040*C2+2.35040*C1-1.*lambda

Сформируйте систему уравнений и решите её − найдите произвольные постоянные и множитель Лагранжа. В данных примерах система получается линейной, и нужно решить её с помощью команды solve. Напечатайте решения.

SolLleft=vpa(subs(SolL,x,x1),6);

SolLright=vpa(subs(SolL,x,x2),6);

LeftL=[char(SolLleft) '=' char(sym(y1))];

RightL=[char(SolLright) '=' char(sym(y2))];

intF1J1=[char(intF1) '=' char(sym(J1))];

disp('Система уравнений относительно C1, C2, lambda')

fprintf('%s\n',LeftL,RightL,intF1J1)

ConL=solve(LeftL,RightL,intF1J1,'C1,C2,lambda');

C1=vpa(ConL.C1,6);

C2=vpa(ConL.C2,6);

lambda=vpa(ConL.lambda,6); % множитель Лагранжа

Sol141=vpa(eval(SolL),6); % аналитическое решение

disp('Уравнение экстремали:')

fprintf('y(x)=%s\n',char(Sol141))

disp('Множитель Лагранжа')

fprintf('lambda=%s\n',char(lambda))

Система уравнений относительно C1, C2, lambda

.367879*C2+2.71828*C1-.500000*lambda=1

2.71828*C2+.367879*C1-.500000*lambda=2

2.35040*C2+2.35040*C1-1.*lambda=2

Уравнение экстремали:

y(x)=.892300*exp(x)+.466841*exp(-1.*x)-.597260

Множитель Лагранжа

lambda=1.19452

Вычислите значения функционалов на обоих решениях. Постройте графики: сплошной линией − для задания (разд. 6), а штриховой − для задания работы (разд. 4.2) (для сравнения).

F21=subs(F,{y,Dy},{Sol21,diff(Sol21,x)});

J21=eval(int(F21,x,x1,x2))

F141=subs(F,{y,Dy},{Sol141,diff(Sol141,x)});

J141=eval(int(F141,x,x1,x2))

y141=subs(Sol141,x,xpl); % вычислили функцию

plot(xpl,y21,'--b', xpl,y141,'-r') % рисуем

set(get(gcf,'CurrentAxes'),...

'FontName','Times New Roman Cyr','FontSize',12)

title('\bfГрафики экстремалей') % заголовок

xlabel('\itx') % метка оси OX

ylabel('\ity\rm(\itx\rm)') % метка оси OY

J21 = 4. 750 3

J141 = 4. 920 5

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