Модифицированный метод Эйлера.

Для определения Модифицированный метод Эйлера. - student2.ru воспользуемся обычной формулой Эйлера, а для определения Модифицированный метод Эйлера. - student2.ru будет естественным использовать уточненную формулу, т.е.

Модифицированный метод Эйлера. - student2.ru (Л4.3)

Пример соответствующей M-функции (ниже задано Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru ):

function consol

s=input('s=');g=input('g=');L=input('L=');n=input('n=');

h=L/n;c=0.02*(s+g);ej=1/c;

x=0:h:L;z=zeros(size(x));y=z;

for i=1:n

z(i+1)=z(i)+h*f(x(i),z(i));

y(i+1)=y(i)+h*(z(i)+z(i+1))/2;

end

ixyz=[(0:n);x;y;z];

fprintf('\n'),fprintf('%3s %4s %6s %6s','i','x','y','z')

fprintf('\n'),fprintf('%3d %4.1f %6.4f %6.4f\n',ixyz)

plot(x,y,'.-',x,z,'*-'),grid on

legend('y=y(x)','z=y''(x)',0),title('modificyrovannyj metod Eilera')

function dzdx=f(x,z)

dzdx=m(x)/ej*sqrt((1+z^2)^3);

end

function M=m(x)

M=1/sqrt((1+(c*x)^2)^3);

end

end

Результаты счета:

s=12

g=3

L=1

n=10

i x y z

0 0.0 0.0000 0.0000

1 0.1 0.0015 0.0300

2 0.2 0.0060 0.0600

3 0.3 0.0135 0.0900

4 0.4 0.0240 0.1200

5 0.5 0.0375 0.1500

6 0.6 0.0540 0.1800

7 0.7 0.0735 0.2100

8 0.8 0.0960 0.2400

9 0.9 0.1215 0.2700

10 1.0 0.1500 0.3000

>>

Модифицированный метод Эйлера. - student2.ru

2. Использование встроенной функции ode45, предназначенной для решения задачи Коши для систем обыкновенных дифференциальных уравнений 1-го порядка вида Модифицированный метод Эйлера. - student2.ru .

В данной функции реализуются одношаговые методы Рунге-Кутта 4-го и 5-го порядков. Это классический подход, рекомендуемый для начальной пробы решения. Во многих случаях (если система уравнений не является жесткой) можно получить удовлетворительные результаты. Таким образом, данную функцию применяют довольно часто, особенно тогда, когда неизвестны характеристики задачи.

Предварительно представим систему (Л4.2) в виде

Модифицированный метод Эйлера. - student2.ru , (Л4.3)

где Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru ,

Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru .

При обращении к ode45 входными параметрами будут дескриптор имени функции, реализующей вычисление вектор-функции Модифицированный метод Эйлера. - student2.ru , массив, содержащий значения левого и правого конца диапазона изменения переменной Модифицированный метод Эйлера. - student2.ru , а также вектор начальных значений Модифицированный метод Эйлера. - student2.ru . Выходными параметрами будут массивы Модифицированный метод Эйлера. - student2.ru и Модифицированный метод Эйлера. - student2.ru , где

Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru .

Пример соответствующей M-функции (ниже задано Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru ):

function consol_ode45

s=input('s=');

g=input('g=');

c=0.02*(s+g);

EJ=1/c;

x0xL=input('[x0 xL]=');

z0=input('[z10 z20]=');

[X Z]=ode45(@F,x0xL,z0);

n=length(X);

fprintf('\n'),fprintf('%3s %6s %6s %6s','i','x','y','y'''),fprintf('\n')

for i=1:n

fprintf('%3d %6.4f %6.4f %6.4f\n',i,X(i),Z(i,:))

end

plot(X,Z(:,1),'.-',X,Z(:,2),'*-'),grid on

legend('y=y(x)','z=y''(x)',0),title('ode45')

function dz=F(x,z)

dz=zeros(2,1);

dz(1)=z(2);

dz(2)=M(x)/EJ*sqrt((1+z(2)^2)^3);

end

function m=M(x)

m=1/sqrt((1+(c*x)^2)^3);

end

end

Результаты счета:

s=12

g=3

[x0 xL]=[0 1]

[y0 z0]=[0 0]

i x y y'

1 0.0000 0.0000 0.0000

2 0.0002 0.0000 0.0001

3 0.0003 0.0000 0.0001

4 0.0005 0.0000 0.0002

5 0.0007 0.0000 0.0002

6 0.0015 0.0000 0.0005

7 0.0023 0.0000 0.0007

8 0.0032 0.0000 0.0010

9 0.0040 0.0000 0.0012

10 0.0082 0.0000 0.0025

11 0.0124 0.0000 0.0037

12 0.0166 0.0000 0.0050

13 0.0208 0.0001 0.0062

14 0.0417 0.0003 0.0125

15 0.0626 0.0006 0.0188

16 0.0836 0.0010 0.0251

17 0.1045 0.0016 0.0313

18 0.1295 0.0025 0.0388

19 0.1545 0.0036 0.0463

20 0.1795 0.0048 0.0538

21 0.2045 0.0063 0.0613

22 0.2295 0.0079 0.0688

23 0.2545 0.0097 0.0763

24 0.2795 0.0117 0.0838

25 0.3045 0.0139 0.0913

26 0.3295 0.0163 0.0988

27 0.3545 0.0188 0.1063

28 0.3795 0.0216 0.1138

29 0.4045 0.0245 0.1213

30 0.4295 0.0277 0.1288

31 0.4545 0.0310 0.1363

32 0.4795 0.0345 0.1438

33 0.5045 0.0382 0.1513

34 0.5295 0.0421 0.1588

35 0.5545 0.0461 0.1663

36 0.5795 0.0504 0.1738

37 0.6045 0.0548 0.1813

38 0.6295 0.0594 0.1888

39 0.6545 0.0643 0.1963

40 0.6795 0.0693 0.2038

41 0.7045 0.0744 0.2113

42 0.7295 0.0798 0.2188

43 0.7545 0.0854 0.2263

44 0.7795 0.0911 0.2338

45 0.8045 0.0971 0.2413

46 0.8295 0.1032 0.2488

47 0.8545 0.1095 0.2563

48 0.8795 0.1160 0.2638

49 0.9045 0.1227 0.2713

50 0.9284 0.1293 0.2785

51 0.9522 0.1360 0.2857

52 0.9761 0.1429 0.2928

53 1.0000 0.1500 0.3000

>>

>> Модифицированный метод Эйлера. - student2.ru

3. Использование встроенной функции ode15s, предназначенной для решения задачи Коши для систем обыкновенных дифференциальных уравнений 1-го порядка вида Модифицированный метод Эйлера. - student2.ru .

В данной функции реализуется многошаговый метод переменного порядка (от одного до пяти), использующий формулы численного дифференцирования «назад». Это адаптивный метод, рекомендуемый к применению в случае, когда ode45 не обеспечивает решения (система уравнений жесткая). При этом, входные и выходные параметры при обращении к ode15s полностью совпадают с соответствующими параметрами функции ode45 .

Пример соответствующей M-функции (ниже задано Модифицированный метод Эйлера. - student2.ru , Модифицированный метод Эйлера. - student2.ru ):

function consol_ode15s

s=input('s=');

g=input('g=');

c=0.02*(s+g);

EJ=1/c;

x0xL=input('[x0 xL]=');

z0=input('[z10 z20]=');

[X Z]=ode15s(@F,x0xL,z0);

n=length(X);

fprintf('\n'),fprintf('%3s %6s %6s %6s','i','x','y','y'''),fprintf('\n')

for i=1:n

fprintf('%3d %6.4f %6.4f %6.4f\n',i,X(i),Z(i,:))

end

plot(X,Z(:,1),'.-',X,Z(:,2),'*-'),grid on

legend('y=y(x)','z=y''(x)',0),title('ode15s')

function dz=F(x,z)

dz=zeros(2,1);

dz(1)=z(2);

dz(2)=M(x)/EJ*sqrt((1+z(2)^2)^3);

end

function m=M(x)

m=1/sqrt((1+(c*x)^2)^3);

end

end

Результаты расчета:

s=12

g=3

[x0 xL]=[0 1]

[y0 z0]=[0 0]

i x y y'

1 0.0000 0.0000 0.0000

2 0.0021 0.0000 0.0006

3 0.0041 0.0000 0.0012

4 0.0062 0.0000 0.0019

5 0.0152 0.0000 0.0046

6 0.0242 0.0001 0.0073

7 0.0332 0.0002 0.0100

8 0.0422 0.0003 0.0127

9 0.0690 0.0007 0.0207

10 0.0957 0.0014 0.0287

11 0.1225 0.0023 0.0367

12 0.1492 0.0033 0.0448

13 0.2492 0.0093 0.0748

14 0.3492 0.0183 0.1048

15 0.4492 0.0303 0.1348

16 0.5492 0.0453 0.1648

17 0.6492 0.0632 0.1948

18 0.7492 0.0842 0.2248

19 0.8492 0.1082 0.2548

20 0.9492 0.1352 0.2848

21 1.0000 0.1500 0.3000

>>

Модифицированный метод Эйлера. - student2.ru

Наши рекомендации