Metoda Eulera

Równania różniczkowe i całkowe. Równania różnicowe. Transformata Laplace'a i Fouriera oraz ich zastosowanie w równaniach różniczkowych.
janusz47
Użytkownik
Użytkownik
Posty: 7910
Rejestracja: 18 mar 2009, o 16:24
Płeć: Mężczyzna
Podziękował: 30 razy
Pomógł: 1670 razy

Metoda Eulera

Post autor: janusz47 »

Metoda Eulera

Metoda Eulera to najprostsza metoda numeryczna rozwiązywania zagadnienia początkowego:

\(\displaystyle{ \frac{dy}{dt} = f(t, y), \ \ y(a)=y(0) }\) w przedziale \(\displaystyle{ [a, b].}\)

Na czym polega ta metoda?

Dzielimy przedział \(\displaystyle{ [a, b] }\) na \(\displaystyle{ N }\) równych podprzedziałów \(\displaystyle{ t_{i}= a + ih, \ \ i=0,1,...,N, }\)

z długością kroku \(\displaystyle{ h = \frac{b-a}{N}. }\)

Startujemy od warunku początkowego \(\displaystyle{ y_{0},}\) i generujemy ciąg wartości: \(\displaystyle{ y_{1}, y_{2},..., y_{N},}\) aproksymujących dokładne rozwiązanie w punktach \(\displaystyle{ t_{1}, t_{2},...,t_{N}.}\)

Zakładamy, że funkcja \(\displaystyle{ y(t) }\) jest co najmniej dwukrotnie rózniczkowalną. Rozwijając w szrereg Taylora wokół punktów \(\displaystyle{ t_{i}, \ \ i=0,1,2, ..., N-1. }\)

mamy

\(\displaystyle{ y(t_{i+1})= y(t_{i}+h)= y(t_{i})+ h\cdot y'(t_{i})+ \frac{h^2}{2}y^{''}(\zeta), \ \ \zeta \in [t_{i}, t_{i}+h].}\)

Odrzucając ostatni składnik - składnik błędu:

\(\displaystyle{ y(t_{i}+h) \approx y(t_{i}) + h\cdot f(t_{i},y_{i}) \ \ (1)}\)

Jeśli oznaczymy \(\displaystyle{ y_{i} \approx y(t_{i}) }\) to równanie \(\displaystyle{ (1) }\) możemy napisać w postaci:

\(\displaystyle{ y_{i+1} = y_{i} +h\cdot f(t_{i},y_{i}), \ \ i= 0,1,2,..., N.}\)

Jest to równanie metody Eulera.

Algorytm metody:

\(\displaystyle{ h \leftarrow \frac{b-a}{N} }\)

\(\displaystyle{ y(a) \leftarrow y_{0} }\)

\(\displaystyle{ dla \ \ i = 0,1,...,N-1, }\)

\(\displaystyle{ y_{i+1} \rightarrow y_{i} +h\cdot f(t_{i},y_{i}). }\)

Z analizą błędu metody i analizą jej zbieżności można zapoznać się na przykład w podręczniku:

JANINA I MICHAŁ JANKOWSCY Przegląd metod i algorytmów numerycznych.Część 1.WNT Warszawa 1981.

Program w MATLAB

Kod: Zaznacz cały

function euler(f,a,b,y0,n) 
% Rozwiązanie zagadnienia początkowego y'=f(x,y), y(a)=y0 
% Metodą Eulera. 
fprintf('\n') 
disp('Metoda Eulera') 
disp('_________________________________________ ') 
disp(' ti         f(ti,yi)         yi           ') 
disp('__________________________________________') 
fprintf('\n') 
h=(b-a)/n; 
y=y0; 
fprintf('%6.2f %12.6f\n',a,y) 
for i=1:n 
 t=a+(i-1)*h; 
 m=feval(f,t,y); 
 y=y+h*m; 
  t=t+h; 
  fprintf('%6.2f %12.6f %12.6f\n',t,m,y) 
 end 
Przykład

Kod: Zaznacz cały

function f=f1(t,y)
f=2*t-y;
 euler('f1',0,1,-1,10)

Metoda Eulera
_________________________________________ 
 ti         f(ti,yi)         yi           
__________________________________________

  0.00    -1.000000
  0.10     1.000000    -0.900000
  0.20     1.100000    -0.790000
  0.30     1.190000    -0.671000
  0.40     1.271000    -0.543900
  0.50     1.343900    -0.409510
  0.60     1.409510    -0.268559
  0.70     1.468559    -0.121703
  0.80     1.521703     0.030467
  0.90     1.569533     0.187420
  1.00     1.612580     0.348678
ODPOWIEDZ