Considera il problema y'(x) = x²+y², y(−1) = −1. Trova, approssimativamente, quanto vale y(1.8).
Conviene sempre tracciare il campo direzionale per affrontare problemi relativi alle equazioni differenziali. Proviamo a tracciarlo con WolframAlpha, poi vedremo come farlo con R.
slope field of dy/dx = x^2+y^2 Il campo direzionale senza "scala". Quello in [-1,2]×[-1,3] → |
slope field of dy/dx = x^2+y^2, -1<x<2, -1<x<3 |
Dal campo direzionale tracciato a destra possiamo dedurre con sicurezza che y(1.8) è quasi 3. Non è facile risolvere
l'equazione differenziale. Anche WolframAlpha di fronte a
y'(x) = x^2+y(x)^2, y(-1) = -1, y(1.8)
avrei ottenuto y(1.8) = -14.0983 che osservando il campo direzionale capisco subito non essere il valore in 1.8 della soluzione
dell'equazione differenziale; del resto y' è sempre positivo, per cui y deve crescere, e quindi (anche senza osservare il grafico)
deduco che
Con R possiamo utilizzare un programma per risolvere l'equazione.
Dy = function(x,y) x^2+y^2 BF=4;HF=3 Plane(-2,2, -3,3); diredif(-2,2, -3,3, 20,20) # Tracciato il campo direzionale, traccio la soluzione soledif(-1,-1, 2.5, 1e6, "brown"); soledif(-1,-1, -2.5, 1e6, "brown") # Calcolo il valore di y(1.8). Lo approssimo inizialmente con 1e5 passi A = soledifv(-1,-1, 1.8, 1e5); A # 2.65262 B = A; A = soledifv(-1,-1, 1.8, 2e5); c(A, A-B) # 2.652755615 0.000135672 B = A; A = soledifv(-1,-1, 1.8, 4e5); c(A, A-B) # 2.652823 6.784461e-05 B = A; A = soledifv(-1,-1, 1.8, 8e5); c(A, A-B) # 2.652857 3.392446e-05 Ad ogni passo la variazione si dimezza. Quindi aggiungo A+A-B # ad A la variazione precedente in quanto 1/2+1/4+... = 1 # 2.652891
Per altri commenti: Modelli differenziali.