Un farmaco ha inizialmente una concentrazione plasmatica di 138 mg/ml.  Dopo 20' la concentrazione in mg/ml è 84, dopo 40' è 52, dopo 60' è 30, dopo 80' è 18.  Sapendo che l'andamento della concentrazione è approssimativamente esponenziale, schizza il grafico della concentrazione in funzione del tempo a partire dalla rappresentazione dei dati sperimentali.  Cerca di individuare una formula che esprima la concentrazione in funzione del tempo.

Vediamo come affrontare il quesito sia col software online WoframAlpha sia con R.

Con WoframAlpha (vedi) è molto semplice affrontare il problema.

Posso realizzare facilmente il grafico coi comandi seguenti, ottenendo la figura sottostante a sinistra:

plot {{0, 138), {20, 84), {40, 52), {60, 30), {80, 18)}
 

Posso poi cercare una funzione esponenziale che approssima i punti col comando seguente:

exp fit {(0, 138}, (20, 84}, (40, 52}, (60, 30}, (80, 18}}

Otteniamo sia "formula" che "grafico" (quello sopra a destra):

138.237 e^(-0.0250027*x)

Il dato 138 era arrotondato agli interi, quindi possiamo accontentarci. Se volessimo avere il punto inziale di ordinata 138.0 potremmo introdurre nel comando altri punti (0,138):

exp fit {(0, 138),(0,138),(0,138),(0,138),(0,138),(0,138),(20, 84), (40, 52), (60, 30), (80, 18)}
138.04* e^(-0.0249664 x)

La formula cercata è   138 · e-0.0250


Il grafico, realizzato utilizzando R, che rappresenta i punti sperimentali, e li congiunge con una spezzata:

source("http://macosa.dima.unige.it/r.R")   # se non già caricato
t = c( 0, 20, 40, 60, 80)
C = c(138,84, 52, 30, 18)
BF=4; HF=3; Plane(0,85, 0,140); POINT(t,C,"brown")
polyli(t,C, "brown")

    La funzione è una esponenziale decrescente, del tipo C: t → 138·at con 0 < a < 1. So che il grafico, oltre che per (0,138), passa per (80,18). Quindi occorre che 138·a80=18, ovvero che a80=3/23.
(1) Posso usare il computer per risolverla rispetto ad a; facciamolo con R, tenendo conto che a deve essere compreso tra 0 ed 1:
g = function(a) a^80; solution(g,3/23, 0,1)
# 0 . 9748604
(2) Ovvero posso procedere così:
80*log(a) = log(3/23)   log(a) = log(3/23)/80   a = exp(log(3/23)/80) = 0 . 9748604.
    Naturalmente, questa è una soluzione approssimata in quanto approssimati erano i dati. Posso prendere a = 0.975.
(3) Ovvero si potrebbe usare una tecnica di regressione (vedi).
(4) O si potrebbe usare un programma di approssimazione più generale (vedi), che dà gli stessi risultati della regressione:

yy2 = function(U,V,x) U*V^x; Fun = function(x) U0*V0^x
dif = 1e300
m1=0; M1=1000; m2=0; M2=1; F_RUN2(x,y,1e5); cat(U0,V0," d:",NUMBER(dif^0.5),"\n")
# 141.5879 0.9736378  d: 5.40196029231507 
m1=130; M1=150; m2=0.9; M2=1; F_RUN2(x,y,1e5); cat(U0,V0," d:",NUMBER(dif^0.5),"\n")
# 138.3163 0.9753105  d: 1.61828404438379 
m1=135; M1=145; m2=0.97; M2=0.99; F_RUN2(x,y,1e5); cat(U0,V0," d:",NUMBER(dif^0.5),"\n")
# 138.2208 0.9753055  d: 1.61501928725431 
m1=138; M1=139; m2=0.975; M2=0.976; F_RUN2(x,y,1e5); cat(U0,V0," d:",NUMBER(dif^0.5),"\n")
# 138.2351 0.9753068  d: 1.61483535999011 
m1=138.2; M1=138.3; m2=0.9753; M2=0.9754; F_RUN2(x,y,1e5); cat(U0,V0," d:",NUMBER(dif^0.5),"\n")
# 138.2373 0.9753073  d: 1.61483061279149 

Ct = function(t) 138.2373*0.9753073^t
BF=4; HF=3; Plane(0,85, 0,140); POINT(t,C,"brown")
graph1(Ct, 0,85, "brown")