Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Samoylova / vika_5a

.docx
Скачиваний:
19
Добавлен:
22.03.2015
Размер:
101.65 Кб
Скачать

To get started, select MATLAB Help or Demos from the Help menu.

>> clear all

format long

disp('Решаем пример 5a')

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

Решаем пример 5a

>> F=2*Dy^2+2*y^2+y*cos(x)-5*x; % вводим подинтегральную функцию

>> x1=0; y1=2; x2=2; y2=2;

>> fprintf('Подынтегральная функция: F=%s\n',char(F))

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

dFdy = diff(F,y);

dFdy1 = diff(F,Dy); % левая часть естественного граничного условия

fprintf('Естественное граничное условие: %s=0\n',char(dFdy1))

d_dFdy1_dx=diff(dFdy1,x);

d_dFdy1_dy=diff(dFdy1,y);

d_dFdy1_dy1 = diff(dFdy1,Dy);

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

Euler = simple(dFdy-dFy1dx);

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

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

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

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

end

SolLeft = subs(Sol,x,sym(x1)); % подставляем x1

SolRight = subs(Sol,x,sym(x2)); % подставляем x2

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

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

Con=solve(EqLeft,EqRight);

C1=Con.C1;

C2=Con.C2;

Sol1a = vpa(eval(Sol),14); % подставляем C1, C2

xpl = linspace(x1,x2);

y1a = subs(Sol1a,x,xpl);

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

Граничные условия: y(0)=2; y(2)=2

Естественное граничное условие: 4*Dy=0

>> dydx = diff(Sol,x); % производная dy/dx

RightNat = subs(dFdy1,{y,Dy},{Sol,dydx}); % подствили y, y'

SolRightNat = subs(RightNat,x,sym(x2)); % подставили x2

EqRightNat = [char(vpa(SolRightNat,14)) '=0'];

fprintf('Производная от общего решения уравнения Эйлера:\n%s\n',char(dydx))

fprintf('Естественное граничное условие:\n%s\n',EqRightNat)

Производная от общего решения уравнения Эйлера:

-exp(-x)*C2+exp(x)*C1+1/8*sin(x)

Естественное граничное условие:

-.54134113294644*C2+29.556224395723*C1+.45464871341284=0

>> Con=solve(EqLeft,EqRightNat);

C1=Con.C1

C2=Con.C2

Sol5a = vpa(eval(Sol),14); % подставляем C1, C2

fprintf('Уравнение экстремали:\ny=%s\n',char(Sol5a))

C1 =

.23114865999233550505170714814294e-1

C2 =

2.1018851340007664494948292851857

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

y=2.1018851340008*exp(-1.*x)+.23114865999234e-1*exp(x)-.12500000000000*cos(x)

>> y5a = subs(Sol5a,x,xpl);

plot ( xpl, y1a, '--b', xpl, y5a, '-r' )

title ( '\bfExample 5a' ) % заголовок

xlabel('x')

ylabel('y(x)') % метки осей

Соседние файлы в папке Samoylova