Di fronte al problema differenziale y'(x) = (x+1)/(y(x)−1), y(1)=2, voglio
calcolare slope field of dy/dx = (x+1)/(y-1), -3 < x < 1, -1 < y < 3 |
Osservando il campo direzionale capisco subito che il problema non ha soluzione: il grafico di una funzione che risolva l'equazione differenziale
e passi per dy/dx = (x+1)/(y-1), y(1)=2 y(x) = sqrt(x^2 + 2 x - 2) + 1 solve 1 = sqrt(-2 + 2 x + x^2) + 1 x = sqrt(3) - 1 = ≈ 0.73205 Il grafico della funzione che risolve il problema è però solo la parte superiore della curva:
per y=1 l'equazione differenziale non è definita.
L'intera curva, facendo proseguire il grafico verso destra, si chiama curva integrale: è la curva che passa per |
Posso tracciare l'intera curva, ed anche la sua simmetrica rispetto all'asse y, sempre con WolframAlpha;
plot y = sqrt(x^2+2*x-2)+1, y = -sqrt(x^2+2*x-2)+1, y=-1, y=3, -3 < x < 1, -1 < y < 3
Studiamo il problema usando R (vedi)
con le istruzioni seguenti. Ottengo l'immagine a destra e il valore 0.1663.
source("http://macosa.dima.unige.it/r.R") # se non già caricato BF=3.5; HF=2.2; Plane(-3,1, -1,3); Dy <- function(x,y) (x+1)/(y-1) diredif(-3,1, -1,3, 20,20) POINT(1,2, "brown"); soledifv(1,2, 0, 1e4) # 0.166319 |
Ecco, sotto, la rappresentazione grafica di come è stato ottenuto 0.166319 e la curva soluzione passante per
# Con soledifv ho ottenuto il valore per 1e4 passi # Vediamo (in verde) la corrispondente rappresentazione grafica soledif(1,2, 0, 1e4, "seagreen"); POINT(0,soledifv(1,2, 0, 1e4),"blue") # Con soledifc individuo gli estremi dei primi segmentini della curva # soluzione che cambiano il segno della pendenza. Li cerco per 1e6 passi. soledifvc(1,2, 0,1e6) # 0.732047 0.9997516 0.732046 1.006724 # 0.732046 1.006724 0.732045 1.006467 # 0.732031 0.9968065 0.73203 0.9973489 # 0.732027 1.000401 0.732026 0.9960806 # Il primo cambio segno l'ho tra 0.732047 e 0.732046. Il grafico della soluzione: soledif(1,2, 0.732, 1e6, "brown") # La parte della "curva integrale" simmetrica ad esso: soledif(1,0, 0.732, 1e6, "brown") # L'estremo sinistro del grafico della soluzione: Point(0.732,1, "red")