L'altezza raggiunta dal proiettile alla distanza è data da
L'approssimazione consiste nell'assumere un andamento lineare della
funzione nell'intorno di e
, ovvero
si approssima
Possiamo dunque valutare la bontà dell'approssimazione tramite
Implementiamo le funzioni in R:
g = 9.8 alphahat = acos(-1)/4 vhat = 100 d=500 ybal <- function(x,alpha=alphahat,v=vhat) { tan(alpha) * x - g/2*x^2/(v^2*cos(alpha)^2) } dybal <- function(alpha=alphahat,v=vhat,dalpha,dv,x) { sqrt(((x-g*x^2*sin(alpha)/(cos(alpha)*v^2))/(cos(alpha)^2)*dalpha) ^2 + (g*x^2/(cos(alpha)^2*v^3)*dv) ^2) } approx = function(alpha=alphahat,v=vhat,dalpha,dv) { dy = abs(ybal(alpha=alpha+dalpha,v=v+dv,x=d)- ybal(alpha=alpha-dalpha,v=v-dv,x=d)) dys = 2*dybal(alpha=alpha,dalpha=dalpha,v=v,dv=dv,x=d) abs((dy-dys)/pmax(dy,0.0001)) } alphapprox =function(x,alpha=alphahat,v=vhat) { approx(alpha=alpha,v=v,dalpha=x,dv=0) } vapprox =function(x,alpha=alphahat,v=vhat) { approx(alpha=alpha,v=v,dalpha=0,dv=x) } |
Dai grafici
curve(alphapprox(x),0,0.4) curve(vapprox(x),0,50) |
possiamo valutare che un'approssuimazione migliore del 10 % si avrà per
Possiamo verificare questi risultati tramite una simulazione:
simbali <- function(dalpha,dv,n=10000,alpha=alphahat,v=vhat,x=d) { # generiamo un vettore con n valori di h asam = rnorm(n,mean=alpha,sd=dalpha) vsam = rnorm(n,mean=v,sd=dv) hsam = ybal(alpha=asam,v=vsam,x=x) # media e varianza attesi: yexp = ybal(alpha=alpha,v=v,x=x) dyexp = dybal(alpha=alpha,dalpha=dalpha,v=v,dv=dv,x=x) # confronto fra distribuzione simulata e # distribuzione attesa nell'appros. lineare binsize = dyexp/5 curve(dnorm(x,mean=yexp,sd=dyexp)*binsize*n, yexp-5*dyexp,yexp+5*dyexp,col="red") hist(pmax(hsam,yexp-10*dyexp), breaks=seq(yexp-10*dyexp,yexp+10*dyexp,binsize),add=T) } |
Nel caso in cui è valida l'approssimazione lineare, ad esempio
simbali(dalpha=0.05,dv=2) |
ci aspettiamo che la distribuzione di sia una gaussiana, la cui
varianza è ottenuta dalla formula di propagazione. Per valori di
o
superiori ai limiti dati ci
aspettiamo evidenti differenze sia nel valore atteso che nella
varianza, ad esempio:
simbali(dalpha=0.3,dv=40) |