---------- ---------- ---------- ---------- ---------- ---------- ---------- ---------- # Vediamo, per esteso, un esercizio non facile da risolvere a mano (e neanche con # WoframAlpha, che, come gran parte del software di calcolo simbolico, non è affidabi- # lissimo per lo studio di funzioni in quanto occorre usare dei trucchi per operare con # le potenze ad esponente dispari e per evitare che siano fatte semplificazioni non le- # cite, del tipo, per intenderci, √-1 / √-1 → 1). # # Sudiare il grafico della funzione x → (x/4)2/3 - (x-4)1/3 individuando # punti di minimo e massimo (relativi) e cambi di concavità # # Innazi tutto mi pongo il problema che per il software z^a è definito solo per z ≥ 0; # allora uso rad3 che in questa versione di R è definita ovunque: g = function(x) rad3((x/4)^2) - rad3(x-4) # eventualmente dopo aver caricato: source("http://macosa.dima.unige.it/r.R") # # Faccio prima lo studio graficamente, senza "calcoli" # (qui ho messo HF=2.7; BF=2.7 per avere una finestra piccola) # Inizio con un intervallo ampio, e poi mi restringo graficoF( g, -100,100, 1) # Ottengo il primo grafico sotto a sinistra. # Per avere conferma che per x che cresce o decresce g(x) tende a crescere oltre ogni # limite facciamo delle prove numeriche (provo con 10, 100, 1000, ... e -10, -100, # -1000, ..., e arrorondo gli output per scriverli accorciati) n=1:12; round(g(10^n)) # [1] 0 4 30 163 809 3869 18205 85035 395850 1839861 8545238 39675026 n=1:12; round(g(-10^n)) # [1] 4 13 50 206 901 4069 18636 85963 397850 1844170 8554521 39695026 # Si vede che in entrambi i casi gli output si moltiplicano circa per 100 al moltipli- # carsi dell'input per 1000. OK [posso dire che cresce come |x|^(2/3), cosa capibile # dall'espressione di g(x) in quanto 2^3 > 1/3 (vedi in fondo i grafici in un intervallo # più ampio)]. Formalizzando, il limite per x → Inf e per x → -Inf è Inf. # Posso dunque restringere l'intervallo degli input: graficoF( g, -10,100, 1) # Ottengo il secondo grafico. # Ho segnato in rosso quelli che, a prima vista, potrebbero essere i punti cercati. # Vediamo prima la parte sinistra del grafico di g. graficoF( g, -2,12, 1) # Ottengo il grafico sopra a destra. # Il grafico viene fatto per punti: il tratto verticale punteggiato non significa che # ivi la funzione non sia continua. Posso verificarlo con degli zoom: graficoF( g, 3.9,4.1, 1) # Ottengo il grafico soprastante a sinistra. # # Intuisco, guardando l'espressione di g(x), che per x=0 e x=4 (dove x/4 e x-4 cambia- # no segno) ho dei punti critici, in cui ci sono un minimo relativo e un cambio di con- # cavità (flesso). Per studiare che cosa accade a destra di 12 mi converrà effettuare # il calcolo delle derivate. Vediamo che cosa possiamo fare a sinistra senza di esse. # h = minmax(g, -2,2); h; g(h) # [1] -1.589587e-14 "praticamente" 0 # [1] 1.587401 # Provo a mettere 1.587401 in WolframAlpha, e vedo che è un'approssimazione di 2^(2/3) # Verifico: g(0) = rad3(4), ovvero 4^(1/3), ovvero (2^2)^(1/3) = 2^(2*1/3) = 2^(2/3) # Dunque A = (0,rad3(4)) è un punto di minimo relativo # # Per x=4 g(x)=1. Come intuisco dal grafico dunque in C = (4,1) ho un flesso verticale. # # Troviamo B e D: j = minmax(g, 1,3); j; g(j); k = minmax(g, 5,10); k; g(k) # [1] 2 # [1] 1.889882 # [1] 8 # [1] 0 # Se metto 1.889882 in WolframAlpha vedo che è un'approssimazione di 3/2^(2/3) # [=3*2^(1/3)/2]. Posso (come sopra) verificare la cosa. B = (2,3*rad3(2)/2) è un punto # di massimo relativo. Invece D = (8,0) è un punto di minimo relativo. # # Studiamo la parte del grafico a destra del punto D. # C'è un punto di flesso obliquo? Sopra ho segnato un ipotetico punto E di tal genere. # Per verificare la cosa devo calcolare le derivate prima e vedere dove questa cresce o # decresce (o devo calcolare la derivata seconda). Faccio entrambe le cose con R. # Ne approffitto anche per studiare in questo modo i problemi già risolti sopra. # Posso calcolare la derivata di g con derivata(g,"x"); per salvarla come funzione # posso fare: dfg <- function(x) eval(derivata(g,"x")) derivata(g,"x") # Error: 'rad3' non presente nelle tavole delle derivate # rad3 l'ho definita io; mi conviene spezzare la funzione a destra e sinistra di 4, # dove l'input di rad3(x-4) cambia segno. g1 = function(x) ((x/4)^2)^(1/3)+(4-x)^(1/3) g2 = function(x) ((x/4)^2)^(1/3)-(x-4)^(1/3) # Verifico graficamente la cosa. HF=2.7; BF=2.7 graficoF( g, -2,12, 1) grafico( g1, -2,4, "red") grafico( g2, 4,12, "blue") # OK dg1 <- function(x) eval( derivata(g1,"x") ) soluz(dg1,0, 1,3) # [1] 2 dg2 <- function(x) eval( derivata(g2,"x") ) soluz(dg2,0, 5,10) # [1] 8 # Ho ritrovato B e D. Ma sono proprio gli stessi valori? piu( minmax(g, 1,3) ); piu(soluz(dg1,0, 1,3)) # 1.99999998773738 2 # Il secondo metodo è più preciso in quanto l'algoritmo per trovare il minimo e il # massimo senza ricorrere alla derivate (pur essendo più generale) è più approssimativo # (ma sono differenze che dal punto di vista applicativo sono in genere trascurabili). # # Per trovare E posso studiare dove cresce/decresce D(g) maxmin(dg2,10,100) # [1] 31.52936 # Oppure posso studiare dove si azzera la derivata 2^a d2g2 <- function(x) eval( derivata2(g2,"x") ) soluz(d2g2,0, 10,100) # [1] 31.52936 # Ho trovato lo stesso valore. In realtà i due procedimenti non danno gli stessi valori: piu( maxmin(dg2,10,100) ); piu( soluz(d2g2,0, 10,100) ) # 31.5293616373527 31.5293611968877 # Anche in questo caso il secondo metodo dà un risultato più preciso. # La y corrispondente è: g( soluz(d2g2,0, 10,100) ) # [1] 0.9412041 # Dunque E = (31.52936, 0.9412041) # # Volendo potrei calcolare le derivate a mano, o con R. Con derivata(g2,"x") ho: # ((x/4)^2)^((1/3)-1)*((1/3)*(2*(1/4*(x/4))))-(x-4)^((1/3)-1)*(1/3) che posso sempli- # ficare in (x/4)^(-1/3)/6 - (x-4)^(-2/3)/3 ... o posso usare WolgramAlpha. Se # metto: solve ( d/dx d/dx ((x/4)^2)^(1/3)-(x-4)^(1/3) ) = 0 # ottengo 31.52936119688764498693379 # # Ecco come è stato ottenuto il grafico con le soluzioni: HF=2.7; BF=2.7*2 graficoF( g, -1,40, 1) grafico ( g, 3,5, 1) a = 0; b = 2; c = 4; d = 8; e = soluz(d2g2,0, 10,100) PUNTO( c(a,b,c,d,e), g( c(a,b,c,d,e) ), "red") # altro: coltrat="red"; grigliaV(2); grigliaV(4); grigliaV(8) scrivi(0,1.4,"A"); scrivi(2,2.1,"B"); scrivi(5.5,1,"C") scrivi(8,0.2,"D"); scrivi(31.53,0.75,"E") (l'esempio è tratto da "Complementi ed esercizi di Analisi Matematica" di Aldo Ghizzetti) # # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # Confronto di g con: f = function(x) abs(x)^(2/3) graficoF (g, -1e5,1e5, "black"); graficoF (f, -1e5,1e5, "brown") # Si vede che per x che tende a Inf e a -Inf entrambe le curve salgono oltre ogni # limite e con la concavità verso il basso.