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

Samoylova / vika_3

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

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

>> clear all

format long

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

syms x y Dy D2y D3y D4y % описали переменные

Решаем пример 3

>> F=D2y^2-4*Dy*D2y+Dy^2+2*y*sin(x);

>> x1=0; y1=2; Dy1=1; x2=1; y2=0; Dy2=-1;

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

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

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

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

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

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

>> dFdy = diff(F,y)

dFdy1 = diff(F,Dy)

dFdy2 = diff(F,D2y)

dFdy =

2*sin(x)

dFdy1 =

-4*D2y+2*Dy

dFdy2 =

2*D2y-4*Dy

>> d_dFdy1_dx = diff(dFdy1,x);

d_dFdy1_dy = diff(dFdy1,y);

d_dFdy1_dy1 = diff(dFdy1,Dy);

d_dFdy1_dy2 = diff(dFdy1,D2y);

dFy1dx = d_dFdy1_dx + d_dFdy1_dy*Dy + d_dFdy1_dy1*D2y + d_dFdy1_dy2*D3y

dFy1dx =

2*D2y-4*D3y

>> d_dFdy2_dx = diff(dFdy2,x);

d_dFdy2_dy = diff(dFdy2,y);

d_dFdy2_dy1 = diff(dFdy2,Dy);

d_dFdy2_dy2 = diff(dFdy2,D2y);

dFy2dx = d_dFdy2_dx + d_dFdy2_dy*Dy + d_dFdy2_dy1*D2y + d_dFdy2_dy2*D3y;

d_dFdy2dx_dx=diff(dFy2dx,x);

d_dFdy2dx_dy=diff(dFy2dx,y);

d_dFdy2dx_dy1 = diff(dFy2dx,Dy); % d((dFy'')/dx)/dy'

d_dFdy2dx_dy2 = diff(dFy2dx,D2y); % d((dFy'')/dx)/dy''

d_dFdy2dx_dy3 = diff(dFy2dx,D3y); %d((dFy'')/dx)/dy'''

d2Fy2dx2 = d_dFdy2dx_dx + d_dFdy2dx_dy*Dy + d_dFdy2dx_dy1*D2y + d_dFdy2dx_dy2*D3y + d_dFdy2dx_dy3*D4y

d2Fy2dx2 =

-4*D3y+2*D4y

>> Euler = simple(dFdy-dFy1dx+d2Fy2dx2)

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

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

Euler =

2*sin(x)-2*D2y+2*D4y

Уравнение Эйлера-Пуассона:

2*sin(x)-2*D2y+2*D4y=0

>> Sol = dsolve ( deqEuler, 'x' ) % решаем уравнение

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

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

end

Sol =

exp(-x)*C2+exp(x)*C1-1/2*sin(x)+C3*x+C4

>> dydx = diff(Sol,x) % нашли производную

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

slDY=subs(dydx,x,sym(x1)); % подставляем x1 в y'(x)

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

srDY=subs(dydx,x,sym(x2)); % подставляем x2 в y'(x)

elY = [char(vpa(slY,14)) '=' char(sym(y1))] % приравниваем y1

elDY = [char(vpa(slDY,14)) '=' char(sym(Dy1))] % приравниваем Dy1

erY = [char(vpa(srY,14)) '=' char(sym(y2))] % приравниваем y2

erDY = [char(vpa(srDY,14)) '=' char(sym(Dy2))] % приравниваем Dy2

Con = solve(elY,elDY,erY,erDY); % решаем систему уравнений

C1 = Con.C1

C2 = Con.C2

C3 = Con.C3

C4 = Con.C4

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

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

dydx =

-exp(-x)*C2+exp(x)*C1-1/2*cos(x)+C3

elY =

C2+C1+C4=2

elDY =

-1.*C2+C1-.50000000000000+C3=1

erY =

.36787944117144*C2+2.7182818284590*C1-.42073549240395+C3+C4=0

erDY =

-.36787944117144*C2+2.7182818284590*C1-.27015115293407+C3=-1

C1 =

6.3238534064715820077926323269381

C2 =

-20.717584736547729344151948995542

C3 =

-25.541438143019311351944581322480

C4 =

16.393731330076147336359316668604

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

y(x)=-20.717584736548*exp(-1.*x)+6.3238534064716*exp(x)-.50000000000000*sin(x)-25.541438143019*x+16.393731330076

>> xpl = linspace(x1,x2); % задаём массив аргументов

y3=subs(Sol3,x,xpl); % вычисляем значения функции

plot ( xpl, y3, '-r' ) % рисуем

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

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

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

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