Matematica e statistica Versione didascalica: parte 2 • • • Sito web del corso http://www.labmat.it/didattica Docente: Prof. Sergio Invernizzi, Università di Trieste e-mail: [email protected] 2.7. Applicazioni numeriche delle derivate 2.7.1. Il metodo delle tangenti di Newton f ( x) 0 x0 x1 x0 f ( x0 ) f '( x0 ) ......... xn 1 xn f ( xn ) f '( xn ) 2.7.1. Il metodo delle tangenti di Newton > y1 <- function(x) exp(x)-2. > y2 <- function(x) exp(x) > y3 <- function(x) x - y1(x)/y2(x) > y3(2) [1] 1.270671 > newton <- function(x) y3(y3(y3(y3(y3(x))))) > newton(2) [1] 0.6931472 > log(2) [1] 0.6931472 > y1 <- function(x) x^2-2 > y2 <- function(x) 2*x > newton(2) [1] 1.414214 > sqrt(2) [1] 1.414214 > y1 <- function(x) sin(x)-x^2 > y2 <- function(x) cos(x)-2*x > 1 -> a > y3(a) -> a; a [1] 0.891396 > y3(a) -> a; a [1] 0.8769848 > y3(a) -> a; a [1] 0.8767263 > y3(a) -> a; a [1] 0.8767262 > y3(a) -> a; a [1] 0.8767262 > y3(a) -> a; a [1] 0.8767262 > y1(a) [1] 0 2.7.2. Interpolazione: Lemma di Rolle Se: • a<b • f(a) = 0 • f(b) = 0 Allora esiste c che verifica • a<c<b • f '(c) = 0 2.7.2.a. Interpolazione costante (di Lagrange) f ( x) f (a) f ( x) f (a) ( x a) valore vero = valore approssimato + errore 2.7.2.a. Interpolazione costante (di Lagrange) f ( x) f (a ) f ( x) f (a) ( x a ) (t ) f (t ) { f (a) (t a)} (a) f (a ) { f (a) ( a a)} 0 ( x) f ( x) { f (a ) ( x a)} 0 0 '(c) f '(c) f ( x) f (a) f '(c)( x a ) 2.7.2.b. Interpolazione lineare (di Lagrange) f ( x) r ( x) f (a ) f (b ) f ( a ) ba f ( x) r ( x) ( x a)( x b) valore vero = valore approssimato + errore ( x a) 2.7.2.b. Interpolazione lineare (di Lagrange) f ( x) r ( x) f (a) f (b ) f ( a ) ba ( x a) f ( x) r ( x ) ( x a )( x b) (t ) f (t ) {r (t ) (t a)(t b)} (a) f (a ) {r (a) (a a)( a b)} 0 (b) f (b) {r (b) (b a )(b b)} 0 ( x) f ( x) {r ( x) ( x a)( x b)} 0 0 '(c1 ) '(c2 ) 0 "(c) f "(c) 2 f ( x) r ( x) 12 f "(c)( x a )( x b) 2.7.3. Funzioni crescenti e decrescenti • f (x) è crescente in un intervallo I se comunque presi due valori u < v nell’intervallo si ha f (u) f (v). • f (x) è decrescente in un intervallo I se comunque presi due valori u < v nell’intervallo si ha f (u) f (v). • f (x) è costante in un intervallo I se comunque presi due valori u < v nell’intervallo si ha f (u) = f (v). Applicazione dell’interpolazione costante f ( x) f (a ) f '(c)( x a ) f (v) f (u ) f '( )(v u ) uv quantità f (v) f (u ) f '( )( unapositiva ) • f '(x) 0 in ogni x di un intervallo I f (x) è crescente nell’intervallo I • f '(x) 0 in ogni x di un intervallo I f (x) è decrescente nell’intervallo I • f '(x) = 0 in ogni x di un intervallo I f (x) è costante nell’intervallo I 2.7.4. Funzioni convesse e concave • f (x) è convessa in un intervallo I se comunque presi due valori u < v nell’intervallo I si ha f (x) r (x) per tutti gli x del sottointervallo [u, v] • f (x) è concava in un intervallo I se comunque presi due valori u < v nell’intervallo I si ha f (x) r (x) per tutti gli x del sottointervallo [u, v] • f (x) è lineare in un intervallo I se comunque presi due valori u < v nell’intervallo I si ha f (x) = r (x) per tutti gli x del sottointervallo [u, v] Qui la r(x) è la retta che passa per (u, f(u)) e (v, f(v)), cioè la funzione lineare che in x = u ed x = v assume gli stessi valori di f. Applicazione dell’interpolazione lineare f ( x) r ( x) 12 f "(c)( x a)( x b) f ( x) r ( x) 12 f "( )( x u )( x v) u xv f ( x) r ( x) 12 f "( )( una quantità negativa ) • f "(x) 0 in ogni x di un intervallo I f (x) è convessa nell’intervallo I • f "(x) 0 in ogni x di un intervallo I f (x) è concava nell’intervallo I • f "(x) = 0 in ogni x di un intervallo I f (x) è lineare nell’intervallo I Mnemotecnica Dinamica di popolazioni, I • X = X(t) popolazione al tempo t, ovviamente X(t) > 0 • Tasso di crescita costante: X '/ X = a, ossia X ' = aX • a > 0 popolazione crescente, < 0 decrescente, = 0 costante • X " = aX ' = a aX = a²X > 0 X = X(t) convessa (sia che cresca, sia che decresca) • Si ottengono informazioni su X(t) senza risolvere la equazione (senza conoscere la formula per X(t) = ...) • Si parla di analisi qualitativa del problema. • Si dimostra che X(t) = X(0) exp(a t) Dinamica di popolazioni, II • X = X(t) popolazione al tempo t, ovviamente X(t) > 0 • Tasso di crescita decrescente linearmente: X '/ X = a – bX, ossia X ' = aX – bX2 = X (a – bX) • Negli intervalli di tempo in cui X < a/b la popolazione è crescente • Negli intervalli di tempo in cui X > a/b la popolazione è decrescente • X " = aX ' – 2bXX ' = X '(a – 2bX) • Negli intervalli di tempo in cui X < (a/b)/2 la popolazione è crescente, e la crescita è convessa. • Negli intervalli di tempo in cui (a/b)/2 < X < a/b la popolazione cresce, ma la crescita è concava. • Negli intervalli di tempo in cui X > a/b la popolazione decresce, in modo convesso. - fare il grafico! - • Metodo di Eulero in avanti, o forward (standard) (derivata = quoziente di Newton destro): per il futuro x '(t ) f ( x(t )), x(t1 ) x1 x(t t ) x(t ) t f ( x(t )) tn t1 (n 1) t , x(tn ) xn , (n 1, 2, 3,...) xn xn 1 t f ( xn 1 ), (n 2, 3,...) x1 x(t1 ) (valore iniziale assegnato) essendo • Variante: Metodo di Eulero indietro, o backward (derivata = quoziente di Newton sinistro): per il passato x '(t ) 1.14 x(t ) 0.08 [ x(t )]2 x(0) 0.123 Metodo di Eulero forward > > > > > > > > > > > > > > > a <- 1.14 b <- 0.08 f <- function(x) a*x-b*x^2 u <- function(x) (20.0550*exp(1.14*x))/(161.642+1.40737*exp(1.14*x)) h <- 0.4 t0 <- 0. x0 <- 0.123 t <- c(1:25)*NA x <- c(1:25)*NA t[1] <- t0 x[1] <- x0 for (n in c(2:25)) { t[n] <- t[n-1]+h; x[n] <- x[n-1]+ h*f(x[n-1]) } plot(t,x,type="b",col="red") plot(u,0,10,add=TRUE,col="blue") Metodo di Eulero forward • Metodo Leap Frog, o della cavallina (derivata = differenza centrale) x '(t ) f ( x(t )) x(t t ) x(t t ) 2 t f ( x(t )) tn t1 (n 1) t , x(tn ) xn , (n 1, 2,3,...) (n 3, 4,...) xn xn 2 2 t f ( xn 1 ) x1 x(t1 ) (valore iniziale assegnato) essendo e dove x2 x1 t f ( x1 ) (secondo valore calcolato con il metodo di Eulero forward) x '(t ) 1.14 x(t ) 0.08 [ x(t )]2 x(0) 0.123 Metodo di Eulero Leap Frog > > > > > > x[1] <- x0 x[2] <- x[1] + h*f(x[1]) for (n in c(3:25)) { x[n] <- x[n-2]+ 2*h*f(x[n-1]) } plot(t,x,col="red",type="b") plot(u,0,10,add=TRUE,col="blue") Metodo di Eulero Leap Frog Attenzione! • Per questi tipi di modelli (equazioni differenziali) devono sempre essere usati integratori professionali! • No fai-da-te! • Problemi di “stabilità”