A lato è rappresentato [in μmoli/(m²·s), micromoli per m² al secondo]
il tasso di assimilazione di anidride carbonica di una foglia di fagiolo rosso esposta a un intenso
e costante livello luminoso che hanno rilevato alcuni scienziati.
I tempi sono 5, 8, 11,
, 89 ore. T rappresenta il valore numerico di questi dati:T=c(17.7,17.9,16.7,15.5,14.2,13.7,14.3,15.0,15.6, 15.9,15.5,13.7,12.6,11.0,9.6,9.1,9.4,10.5,11.2, 10.3,9.3,8.5,8.0,8.1,8.2,8.3,8.5,7.9,7.3)Usando del software, traccia una curva che passi per i punti, calcola l'anidride carbonica assimilata nel tempo considerato e traccia il grafico del tasso istantaneo di variazione. |
I dati sono ricavati da un articolo (Environmental effects on circadian rhythms in photosynthesis and stomatal opening) di Hennesey et al., Planta, 1993. Procediamo usando vari software: degli script, R.
Il grafico con questo script. Per trovare l'anidride carbonica assimilata devo calcolare l'integrale. Uso lo script area introducendo: y: 0, 17.7, 17.9, 16.7, 15.5, 14.2, 13.7, 14.3, 15.0, 15.6, 15.9, 15.5, 13.7, 12.6, 11.0, 9.6, 9.1, 9.4, 10.5, 11.2, 10.3, 9.3, 8.5, 8.0, 8.1, 8.2, 8.3, 8.5, 7.9, 7.3, 0 x: 5, 5, 8, 11, 14, 17, 20, 23, 26, 29, 32, 35, 38, 41, 44, 47, 50, 53, 56, 59, 62, 65, 68, 71, 74, 77, 80, 83, 86, 89,89 Ottengo 993 che arrotondo a 990 |
La sequenza 5, 8, 11, ..., 89, invece che battendo i valori uno ad uno, posso ottenerla con lo script calcolatrice. Cliccando [N] con input 29 ottengo 1,...,29. Con 3 in [Q] e [data*Q] ottengo 3,...,87. Metto questi dati in input, metto 2 in [Q]; con [data+Q] ottengo 5,...,89.
Per ottenere il grafico del tasso istantaneo di variazione
(derivata) introduco 17.7, 17.9, ..., 7.9, 7.3 nello script repeated differences. Poi impiego il risultato per ottenere il grafico a lato con questo script. |
# Usiamo R (vedi). source("http://macosa.dima.unige.it/r.R") # se non ho già caricato il file # Rappresento i punti e traccio la spline passante per essi h = seq(5,89,3) f = c(17.7,17.9,16.7,15.5,14.2,13.7,14.3,15.0,15.6,15.9,15.5,13.7,12.6, 11.0,9.6,9.1,9.4,10.5,11.2,10.3,9.3,8.5,8.0,8.1,8.2,8.3,8.5,7.9,7.3) BF=5; HF=3; Plane(0,100, 0,20); POINT(h,f, "brown") abovex("h"); abovey("micorm./(s*m^2)") graph1( splinefun(h,f),5,89,"seagreen" )# Suppongo che i valori sian ben approssimati. # Altrimenti dovrei tracciare una curva che li approssimi. # Ecco l'integrale, che rappresenta l'anidride carbonica assimilata; # per calcolare l'integreale di una spline: INTEGRAL = function(x,y) areaPol( c(x[length(x)],x[1],x), c(0,0,y) ) # Il calcolo, e la rappresentazione grafica: L = spline(h,f,1000); INTEGRAL(L$x,L$y) # 993.4234 che arrotondo a 990 zero = function(x) 0; Diseq(zero,F, 5,89, "seagreen") # Il grafico del tasso istantaneo di variazione (derivata): Plane(5,90, -1,1); splinefunD(h,f, 1, "blue") # # Per avere un andamento più liscio, e valutare meglio la deriata, posso fare delle medie mobili: n =length(h); D1 = f; nD = n D2=D1[1]; for( i in 2:(nD-1) ) D2[i]=(D1[i-1]+D1[i]+D1[i+1])/3; D2=c(D2,D1[nD]) f1=D2 BF=5; HF=3; Plane(0,100, 0,20); POINT(h,f1, "brown") graph1( splinefun(h,f1),5,89,"seagreen" ) Plane(5,90, -1,1); splinefunD(h,f1, 1, "blue") # Ho tolto le piccole oscillazioni: # Il grafico taglia l'asse orizzontale in corrispondenza dei max/min
I dati sono ripresi anche in manuale matematico per biologi (molto diffuso nel 2019), per introdurre il concetto di derivata e i metodi di integrazione, ma analizzati matematicamente in un un modo decisamente buffo (quando, come abbiamo visto, era banale analizzarli anche con dei semplici script). I dati vengono approssimati con la funzione:
A = function(t) 18-0.12*t+exp(-0.0001*t)*sin(t/4.2)
In realtà
viene considerata sempre la funzione