Source PostScript (eulermod.pps)

Retour Texte non formaté
%% syntaxe : a f x0 y0 h baseeulermod --> depose les points, calcules par %% la methode d'Euler modifiee (avec un correcteur), de la courbe sur %% [a, b] de la fonction h solution de l'equa diff y' = f (x, y) %% verifiant h (x0) = y0 %% Plus precisement : %% predicteur : tyn+1 = yn + h y'n %% correcteur : yn+1 = yn + (h/2) (ty'n+1 + y'n) %% ou y'n = f (xn, yn) et ty'n+1 = f (xn+1, tyn+1) %% attention : on peut avoir a < x0, mais dans ce cas h doit etre negatif %% autre syntaxe : a f x0 y0 n baseeulermod ou n est le nombre de points %% calcules. Il y aura alors n+1 points deposes sur la pile : (x0, y0) %% plus les n suivants /baseeulermod { 11 dict begin /v@r exch def /y0 exch def /x0 exch def /@f exch def %% y'= @f (x, y) /a exch def /tyn+1 0 def %% valeur temporaire de yn+1 /yn+1 0 def /yn y0 def /xn x0 def v@r isinteger { %% si v@r est entier /n v@r def %% c'est que c'est le nombre de points /h a x0 sub n div def } { %% sinon, v@r n'est pas entier /h v@r def %% et c'est le pas /n a x0 sub h div truncate cvi def } ifelse %% sur [x0, a] x0 y0 n { /tyn+1 yn h xn yn @f mul add store /yn+1 yn h 2 div xn h add tyn+1 @f xn yn @f add mul add store /yn yn+1 store /xn xn h add store xn yn+1 } repeat end } def %% syntaxe : a b f x0 y0 h Eulermod --> depose les points, calcules par %% la methode d'Euler modifiee (avec un correcteur), de la courbe sur %% [a, b] de la fonction h solution de l'equa diff y' = f (x, y) %% verifiant h (x0) = y0 %% Plus precisement : %% predicteur : tyn+1 = yn + h y'n %% correcteur : yn+1 = yn + (h/2) (ty'n+1 + y'n) %% ou y'n = f (xn, yn) et ty'n+1 = f (xn+1, tyn+1) /Eulermod { 6 dict begin /@h exch def %% le pas /y@ exch def /x@ exch def /@@f exch def %% y'= @f (x, y) /@b exch def /@a exch def %% sur [a, x0] @a x@ lt { [ @a {@@f} x@ y@ @h neg baseeulermod ] reversep aload pop x@ @b lt { pop pop } if } if %% sur [x0, b] x@ @b lt { @b {@@f} x@ y@ @h baseeulermod } if end } def %% syntaxe : f x0 y0 h eulermod --> depose les points, calcules par %% la methode d'Euler, de la courbe sur [xmin, xmax] de la fonction h solution %% de l'equa diff y' = f (x, y) verifiant h (x0) = y0 /eulermod { xmax 5 1 roll xmin 6 1 roll Eulermod } def %% %% syntaxe : a f x0 y0 h baseeulermod --> depose les points, calcules par %% %% la methode d'Euler modifiee (avec un correcteur), de la courbe sur %% %% [a, b] de la fonction h solution de l'equa diff y' = f (x, y) %% %% verifiant h (x0) = y0 %% %% Plus precisement : %% %% predicteur : tyn+1 = yn + h y'n %% %% correcteur : yn+1 = yn + (h/2) (ty'n+1 + y'n) %% %% ou y'n = f (xn, yn) et ty'n+1 = f (xn+1, tyn+1) %% %% attention : on peut avoir a < x0, mais dans ce cas h doit etre negatif %% /baseeulermod { %% 6 dict begin %% /h exch def %% le pas %% /y0 exch def %% /x0 exch def %% /@f exch def %% y'= @f (x, y) %% /a exch def %% %% /tyn+1 0 def %% valeur temporaire de yn+1 %% /yn+1 0 def %% /yn y0 def %% /xn x0 def %% %% %% sur [x0, a] %% x0 y0 %% a x0 sub h div truncate cvi { %% /tyn+1 yn h xn yn @f mul add store %% /yn+1 yn h 2 div xn h add tyn+1 @f xn yn @f add mul add store %% /yn yn+1 store %% /xn xn h add store %% xn yn+1 %% } repeat %% end %% } def %% %% %% syntaxe : a b f x0 y0 h Eulermod --> depose les points, calcules par %% %% la methode d'Euler modifiee (avec un correcteur), de la courbe sur %% %% [a, b] de la fonction h solution de l'equa diff y' = f (x, y) %% %% verifiant h (x0) = y0 %% %% Plus precisement : %% %% predicteur : tyn+1 = yn + h y'n %% %% correcteur : yn+1 = yn + (h/2) (ty'n+1 + y'n) %% %% ou y'n = f (xn, yn) et ty'n+1 = f (xn+1, tyn+1) %% /Eulermod { %% 6 dict begin %% /@h exch def %% le pas %% /y@ exch def %% /x@ exch def %% /@@f exch def %% y'= @f (x, y) %% /@b exch def %% /@a exch def %% %% %% sur [a, x0] %% @a x@ lt { %% [ %% @a {@@f} x@ y@ @h neg baseeulermod %% ] %% reversep aload pop %% x@ @b lt { %% pop pop %% } if %% } if %% %% %% sur [x0, b] %% x@ @b lt { %% @b {@@f} x@ y@ @h baseeulermod %% } if %% %% end %% } def %% %% %% syntaxe : f x0 y0 h eulermod --> depose les points, calcules par %% %% la methode d'Euler, de la courbe sur [xmin, xmax] de la fonction h solution %% %% de l'equa diff y' = f (x, y) verifiant h (x0) = y0 %% /eulermod { %% xmax 5 1 roll %% xmin 6 1 roll %% Eulermod %% } def