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

  1. Сформулируйте элементарную задачу вариационного исчисления.

  2. Выведите дифференциальное уравнение Эйлера.

  3. Где используется в выводе дифференциального уравнения Эйлера основная лемма вариационного исчисления?

  4. В чем состоит условие Лежандра экстремума функционала?

5. Исследование экстремалей функционалов

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

Задание 1. Рассмотрите пример. Найти экстремаль функционала

(1)

Исследовать полученную экстремаль на необходимые условия экстремума. Вычислить значение функционала на найденной экстремали и для сравнения на прямой, соединяющей точки M1(x1,y1) и M2(x2,y2). Построить график решения.

В этом примере подынтегральная функция F(x,y,y') является функцией общего вида, поэтому надо составить уравнение Эйлера вида и решить его. Затем построить график решения.

Исследуйте на выполнение условий экстремума и вычислите значение функционала на экстремали и отрезке прямой M1M2.

Примените для решения задачи MATLAB.

Очистите память. Напечатайте заголовок решаемой задачи. Задайте свою строку для вывода (например, свою фамилию). Опишите символические переменные. Для решения уравнения Эйлера используйте принятые в MATLAB обозначения производных: Dy для y' и D2y для y''. Аргумент обозначьте x, а функцию − y.

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

disp('Решаем задание ') % выводим заголовок задачи

syms x y Dy D2y % описали символические переменные

Введите подынтегральную функцию и граничные условия, напечатайте их. Чтобы напечатать символ ', нужно его удвоить. При выполнении своего варианта задания вы должны поставить свои исходные данные: подынтегральную функцию F и граничные условия x1, y1, x2, y2.

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

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

y1=1;

x2=1;

y2=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)

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

Подынтегральная функция F(x,y,y')=x^2+y^2+Dy^2

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

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

Для вывода дифференциального уравнения Эйлера надо найти частные производные Fy и Fy'. Напечатайте их.

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

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

fprintf('Fy=%s\n',char(dFdy))

fprintf('Fy''=%s\n',char(dFdy1))

Fy=2*y

Fy'=2*Dy

В уравнение Эйлера входит полная производная dFy'/dx. Вычислите её по обычной формуле дифференцирования сложной функции:

(2)

Напечатайте её. Напечатайте величину Fy'y', необходимую для проверки условий экстремума по признаку Лежандра.

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

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

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

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

fprintf('dFy''/dx=%s\n',char(dFy1dx))

disp('Условие Лежандра:')

fprintf('Fy''y''=%s\n',char(d_dFdy1_dy1))

dFy'/dx=2*D2y

Условие Лежандра:

Fy'y'=2

Составьте левую часть дифференциального уравнения Эйлера и упростите её. Преобразуйте символическую переменную Euler в строку.

Euler=simple(dFdy-dFy1dx); % уравнение Эйлера

deqEuler=[char(Euler) '=0']; % в строку; добавили =0

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

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

2*y-2*D2y=0

После составления уравнения Эйлера решите его. Команда dsolve позволяет находить как общее решение дифференциального уравнения, так и частное его решение, удовлетворяющее заданным начальным или граничным условиям.

Найдите общее решение уравнения Эйлера.

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

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

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

else

disp('Общее решение уравнения Эйлера:')

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

end

Общее решение уравнения Эйлера:

y(x)=C1*exp(x)+C2*exp(-x)

Сформируйте теперь уравнения для граничных условий. Подставьте в найденное аналитическое решение Sol граничные точки x1 и x2 и приравняйте их соответственно y1 и y2.

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

disp('Уравнения для граничных условий:')

fprintf('%s\n',EqLeft,EqRight)

Уравнения для граничных условий:

C1*exp(-1)+C2*exp(1) = 1

C1*exp(1)+C2*exp(-1) = 2

Решите полученную систему конечных уравнений − найдите значения произвольных постоянных C1 и C2. Присвойте найденные решения символическим константам, полученным при решении дифференциального уравнения. Вычислите аналитическое решение Sol21. Такое вычисление сводится к тому, что в него будут подставлены найденные значения констант C1 и C2.

Напечатайте найденное уравнение экстремали.

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

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

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

Sol21=vpa(eval(Sol),6); % подставили C1,C2

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

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

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

y(x)=.698768*exp(x)+.273311*exp(-1.*x)

Вычислите значения функционала (1) на найденной экстремали и на прямой, соединяющей точки M1 и M2. Подставьте в подынтегральную функцию F аналитические выражения для этих линий и их производных, а затем проинтегрируйте. Напечатайте результаты.

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

Jextr=eval(int(Fextr,x,x1,x2))

ylin=(x-x1)*(y2-y1)/(x2-x1)+y1;

Flin=subs(F,{y,Dy},{ylin,diff(ylin,x)});

Jlin=eval(int(Flin,x,x1,x2))

Jextr = 4. 750 3

Jlin = 5. 833 3

В данном примере условие Лежандра говорит о сильном минимуме, что подтверждается полученным результатом: значение функционала на экстремали меньше, чем на другой допустимой функции. Постройте график. Задайте массив аргументов для рисования графика функции и вычислите значения функции. Нарисуйте график, подпишите заголовок и координатные оси.

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

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

figure % фигура

plot(xpl,y21,'-r') % рисуем график красной линией

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

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

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

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

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

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