Modelli per lo studio ed il controllo
Transcript
Modelli per lo studio ed il controllo
Relazione di teoria dei sistemi Modelli per lo studio ed il controllo Studio sulla popolazione del Nasello (Merluccius Merluccius) e sul suo sfruttamento nel mare Adriatico centro settentrionale Docente: Alessandro Casavola Studente: Claudio Rinaldi indice: Introduzione…………………………………………………………………… pag. 3 Modelli per il controllo della pesca…………………………………… pag. 5 I dati……………………………………………………………………………… pag. 7 Calibrazione del modello…………………………………………………… pag. 8 Studio del rateo di prelievo proporzionale massimo sostenibile… pag. 12 Studio della stabilità dell’equilibrio…………………………………… 13 pag. Conclusioni…………………………………………………………………… pag. 14 Programmi matlab………………………………………………………… pag. 14 Bibliografia…………………………………………………………………… pag. 24 2 Introduzione: Merluccius merluccius Linneo, nome italiano : nasello, merluzzo argentato classificazione: pesce osseo, Ordine Gadiformi distribuzione geografica : Mar Mediterraneo, Atlantico orientale, Mar Nero meridionale CARATTERI DISTINTIVI Ha il corpo allungato e la parte superiore della testa appiattita. La colorazione è grigio acciaio sul dorso, argentea lungo i fianchi e bianca sul ventre; negli adulti la bocca è nerastra. La taglia massima è intorno ai 110 cm, quella più comune nel Mediterraneo è di 30-40 cm. NOTE BIOLOGICHE E' ampiamente distribuito in particolare tra 50 e 1000 metri di profondità, più frequentemente tra 100 e 300 metri. La riproduzione avviene per un lungo periodo dell'anno, soprattutto a fine inverno tra i 100 e i 150 metri di profondità; si tratta di un depositare parziale, cioè la femmina emette 4 o 5 volte consecutive prima che gli ovari entrino in fase di riposo. Uova, larve e stadi giovanili sono caratterizzati da una fase pelagica in prossimità della costa che dura alcuni mesi: successivamente, alla taglia di 4-5 cm, i giovanili scendono sul fondo. Lo spostamento a maggiori profondità è concomitante con l'aumento dell'età degli individui. La maturità sessu ale viene raggiunta in genere a 2 anni, ad una taglia di 20-25 cm. Si tratta di una specie a lunga vita, può 3 infatti superare i 20 anni di età. Per ciò che concerne l'alimentazione il nasello è una specie ca rnivora, che si nutre di crostacei di piccoli pelagici quali sardine e sgombri allo stadio adulto. DIFFUSIONE E PESCA Il Nasello è molto comune ed uniformemente distribuito nei mari italiani.Merluccius merluccius è presente in tutto il Mediterraneo, nella parte meridionale del Mar Nero ed in Atlantico, lungo tutte le coste europee, dalla Penisola scandinava alla Mauritania (fig.1). Questa specie è stata, sin dall'antichità, una importante fonte di cibo per le popolazioni dell'Europa occidentale. Il nasello è oggetto di sfruttamento soprattutto da parte della pesca a strascico, ma viene pescato anche con i palangari di fondo e a volte, nei mesi estivi, può capitare anche nelle reti da posta. In base al Regolamento (CE) N. 1626/94 del 27 giugno 1994 che istituisce misure tecniche per la conservazione delle risorse della pesca nel Mediterraneo, la taglia minima di cattura per questa specie è di 20 cm; precedentemente la normativa italiana (D.P.R. N. 1639 del 2 ottobre 1968) fissava una taglia minima di cattura di 11 cm. Il Nasello nel 1986 e nel 1995 ha raggiunto rispettivamente il 7° ed il 6° posto della speciale classifica delle prime 50 specie prodotte in Italia. Le aree di pesca principali del nasello in Italia sono il Mare di Sicilia, il medio e basso Adriatico e il Tirreno. Fig.1 4 Modelli per il controllo della pesca: Il controllo di una specie ittica soggetta a sfruttamento è uno fra i processi più complessi da modellizzare in quanto è governato da innumerevoli fattori non solo biologici ma anche politici ed economici. In questa relazione si tenterà di affrontare il problema dal punto di vista biologico trascurando gli altri aspetti che renderebbero il problema di una complessità che esula dallo sc opo finale di questo elaborato che si propone di illustrare l’applicazione di un modello matematico ad un problema reale. I modelli matematici studiati per il controllo della pesca devono affrontare principalmente i seguenti problemi: - Non linearità delle popolazioni ittiche. - Fluttuazioni casuali nel reclutamento. - Grande incertezza sulla corrente dimensione della popolazione. - Disponibilità di dati con intervalli annuali. MODELLO DI HORWOOD-SHEPHERD: Uno dei modelli più fedeli per riprodurre la dinamica di una specie ittica è stato proposto da Horwood e Shepherd nel 1981. Tale modello e del tipo a classi di età e si articola in un certo numero di equazioni differenziali tempo discreto : x1 (t + 1) = ξ(t ) R(b(t )) xi (t + 1) = xi −1 (t ) si −1 (t ) x p (t + 1) = x p (t) s p (t ) + x p −1 (t )s p −1 (t ) La prima equazione rappresenta il la classe più giovane chiamata reclutamento; tale classe è quella più difficile da modellizzare infatti tale classe è influenzata da innumerevoli fattori ambientali dunque casuali. Vi sono numerosi modi con cui tale classe è stata rappresentata nel modello di Horwood e Shepherd abbiamo una variabile adimensionale casuale con distribuzione log-normale che moltiplica una funzione non lineare R(b) (milioni di pesci) della biomassa delle uova b(t): P b (t ) = ∑ i=1 R (t ) = α * b (t ) 1 + (b ( t ) / k ) β p i x i ( t ) w is 5 dove Pi è la frazione della classe d’età che depone uova wis è il peso del pesce che depone uova α , β , k sono parametri che vanno stimati in modo da minimizzare i valori della funzione R(b(t)) rispetto ai dati sperimentali in possesso. Si , rateo di sopravvivenza, è una funzione dipendente dalla variabile f(t) detta sforzo di pesca . Si si presenta nel seguente modo: si (t) = e−m−qi f (t) ove mi è la mortalità naturale della classe iesima, q i è un coefficiente adimensionale che rappresenta la catturabilità del pesce appartenente all’iesima classe. MODELLO DI BEVERTON-HOLT: Un secondo modello utilizzabile per lo studio di una popolazione di pesci può essere quello a classe unica di Beverton-Holt. Anche questo modello è stato studiato appositamente per la gestione della pesca. Il modello è di tipo non lineare tempo discreto dato dalla seguente equazione: X (t +1) = ( Rm* K ) * X (t) Rm* X (t) − X (t) + K Ove Rm è il rateo di crescita massimo, K è la capacità portante della popolazione cioè il valore a cui tenderebbe in assenza di fattori di disturbo. E’ subito evidente dall’equazione che si tratta di un modello che fa dipendere il rateo di crescita (termine fra parentesi) dalla densità della specie. La maggior parte delle popolazioni animali presenta infatti la caratteristica di un rateo di crescita variabile nel tempo con una crescita quasi sempre inversamente proporzionale alla densità della popolazione stessa. Nel problema da noi trattato aggiungeremo all’equazione precedente il termine relativo al prelievo per pesca. Il prelievo è di tipo proporzionale ed è dato dalla seguente: mp = X (t) * exp(− f (t )) L’obbiettivo che si vuole raggiungere mediante questi modelli è quello di determinare la popolazione di un pesce in uno stato di equilibrio dinamico tale da assicurare il massimo prelievo annuo proporzionale sostenibile. La scelta del modello da adottare è nella maggior parte dettata da fattori pratici quali la disponibilità e l’accuratezza dei dati disponibili. E’ subito evidente che il modello di Horwood –Shepherd per quanto assai più accurato richiede una mole di dati considerevole non disponibile se non acquisita per mezzo di specifiche campagne di campionamento. La mia scelta è dunque stata per il modello a singola classe d’età di B everton-Holt 6 I dati: I dati da me reperiti presso il laboratorio di biologia marina di Fano(PS) riguardano stime della popolazione effettuate negli anni dal 1994 al 2000. Questi dati sono stati calcolati mediante campagne di pesca effettuate nel mare Adriatico centro settentrionale in collaborazione con il laboratorio di biologia marina di Spalato (Croazia) su 50 stazioni sistematicamente distribuite su tutta la superficie del mare studiato (Fig.2). Le modalità di pesca sono state effettuate in tutte le stazioni mediante reti standard con stessi tempi di pesca e passate successive a profondità variabili do 0 a oltre i 400 metri. Il calcolo della popolazione è stato determinato in base alle quantità p escate nelle 50 stazioni ricavando il valore della densità media di questo pesce (kg/km 2) per tutto il mare Adriatico centro settentrionale. La popolazione del pesce è stata ricavata mediante moltiplicazione per l’area della superficie totale del mare oggetto della campagna pari a 60350 km2 . I dati relativi alla quantità pescata nei vari anni è stata ricavata dai dati ISTAT che si basano sulle quantità di pescato dichiarate dai vari consorzi ittici nazionali. 1994 1995 1996 1997 1998 1999 2000 2001 Popolazione (q) 26391 34206 22281 18769 22402 19463 11683 10634 Pescato (q) 4359.7 4198.5 3588 2887.2 2309.3 2104.5 1908 2454 fig.2 7 Calibrazione del modello: La calibrazione è la fase fondamentale della costruzione di un modello matematico. Nella calibrazione si procede alla determinazione dei valori numerici dei parametri del modello in modo da minimizzare la differenza tra la sua risposta ed i dati sperimentali. Nel nostro caso i parametri sono la capacità portante K e il rateo di crescita massimo Rm. Il modello di Beverton-Holt è di tipo dinamico e quindi non permette una semplice soluzione analitica basata sullo studio dei gradienti come sarebbe possibile invece nel caso dei modelli di tipo statico. E’ necessario cosi applicare un metodo di ricerca diretta che si basi sulla conoscenza per punti della funzione errore E(K,Rm). E (P ) = ∑ (y N i =1 exp i − yi ) = ∑ (y 2 N i =1 exp i − f ( xi , K , Rm) ) 2 L’algoritmo di ricerca più efficiente è il metodo del simplesso che procede verso il minimo valutando la funzione E(K,Rm) in un numero finito di punti disposti a reticolo (i vertici del simplesso) scartando ad ogni passo il punto peggiore, nel quale la funzione è massima, e sostituendolo con un nuovo punto che si ritiene più vicino all’ottimo cercato. IL METODO: 1. Vengono dati in entrata dei valori di inizializzazione ai parametri Rm e K. 2. Si effettua una simulazione. 3. Si valuta l’errore fra l’uscita del modello ed i dati sperimentali. 4. Si determina il funzionale di errore E(K,Rm). 5. Si cambiano i parametri in modo da minimizzare E(K,Rm), processo di aggiustamento affidato all’algoritmo del simplesso. 6. -Si procede in modo iterativo effettuando una nuova simulazione fino a che non si verifichino le condizioni di arresto. E( P ) = 1 N exp N exp ∑ε 2 i i =1 8 IL PROGRAMMA DI CALIBRAZIONE E’ COSI’ STRUTTURATO: PROGRAMMA PRINCIPALE • Caricamento dei dati sperimentali • Definizione del modello di simulazione • Definizione dei parametri del simplesso al simplesso • Chiamata • Valutazione della varianza delle stime Parametri Ottimali SIMPLESSO OTTIMIZZATO Richiesta di valutazione dell'errore per la scelcorrente di P Dati Sperimentali E(P) FUNZIONE DI ERRORE (controlla la simulazione) (valuta il funzionale di errore) Risultato della simulazione Controllo della Simulazione MODELLO SIMULINK e( ffettua la simulazione) fig.3 RISULTATO DELLA CALIBRAZIONE: Attraverso il programma matlab n°1 di calibrazione ho ottenuto i seguenti valori della capacità portante e del rateo di crescita massimo: Rm = 1,1834 K = 94483 q Il programma crea il seguente grafico (fig.4) in cui sono riportati i valori sperimentali (punti blu), andamento della popolazione secondo la simulazione con i parametri ottimali (linea rossa), quantità del pescato(linea blu), andamento dello sforzo di pesca negli anni (grafico 2). 9 fig.4 CONSIDERAZIONI SUL RATEO DI CRESCITA: Mediante programma matlab n°2 è stato ricavato l’andamento del rateo di crescita della popolazione in assenza di pesca in funzione del tempo e della popolazione stessa. E’ così visibile come il rateo di crescita diminuisca all’avvicinarsi al valore della capacità portante in maniera monotona. Dal secondo grafico si può vedere il variare del rateo di crescita in funzione del tempo a partire da popolazioni di entità assai esigua. Si sono distinte tre fasi: 1. La prima fase (circa 125 anni) è di crescita veloce con rateo di crescita massimo e costante. 2. Segue una seconda fase (circa 100 anni) con un calo del rateo di crescita costante che si porta al valore unitario. 3. Nella terza fase (100 anni) il rateo di crescita tende in modo asintotico al valore unitario. 10 fig.5 11 Valutazione del rateo di prelievo massimo sostenibile: L’obbiettivo che vogliamo raggiungere è quello di determinare la quantità massima di pesce p escabile annualmente mantenendo inalterata la popolazione totale del pesce. Attraverso il programma matlab n°3 si è ricavato il seguente grafico dell’isoclina di equilibrio (linea rossa) la linea tratteggiata indica la mezzeria cioè il caso in cui la popolazione rimane costante da un anno al successivo. Dal grafico risulta evidente che la quantità di pesce pescabile quando ci si trova in situazioni con popolazioni di bassa o alta entità è piuttosto esigua se si vuole mantenere inalterata negli anni la popolazione totale. Il programma matlab n°4 trova appunto l’entità della popolazione in cui si ha massima la quantità di pesce pescabile Dmax (doppia freccia nel grafico) data dal valore massimo della differenza x(t+1)-x(t). fig.6 Il programma n° 4 ci da così i seguenti valori ottimali a cui far tendere la popolazione Nid ed il valore massimo pescabile annualmente Dmax: Nid = 45’250 q Dmax = 3’975 q 12 Studio della stabilità: Ultima cosa da fare sarà quella di esaminare il comportamento del modello all’equilibrio in pr esenza del fattore di disturbo dato dalla pesca. Il modello di Beverton-Holt, per la forma della sua risposta funzionale (vedi fig 6), non può dare luogo ad oscillazioni, cicli limite o caos. Il tipo di prelievo è di tipo proporzionale e quindi è impossibile che generi instabilità anche se ci trovassimo nel caso di un modello differente come quello della logistica. Unico caso in cui sia possibile il generarsi di instabilità è il caso di popol azioni depensate. La popolazione raggiunge così l’equilibrio con andamento monotono. Il programma n°5 calcola prima di tutto lo sforzo di pesca f(t) da applicare se si vuole portare la popolazione del pesce al valore di equilibrio Nid trovato con il programma n°3. Trovato F(t) crea il grafico sottostante in cui viene rappresentato con la linea rossa tratteggiata il comportamento del modello in assenza di pesca e con la linea blu continua il comportamento in presenza di pesca. Dal grafico si evidenzia il fatto che la velocità con cui mi porto in condizioni di equilibrio è fortemente influenzata dal fattore pesca infatti mentre in assenza di pesca mi porto alla capacità portante in 65 anni, in presenza di pesca mi occorreranno approssimativamente 100 anni. fig7 13 Conclusioni: Per concludere si deve dire che l’accuratezza del modello di Beverton-Holt come di qualsiasi modello matematico è funzione della quantità e della qualità dei dati disponibili. Nel presente c aso i dati non sono sicuramente sufficienti a garantire l’attendibilità dei risultati ottenuti. Dai risultati ottenuti si può comunque notare come la pesca sia un fattore determinante per l’influenza che ha sul rateo di crescita della popolazione del pesce preso in esame. In particolare si può utilizzare la pesca stessa come mezzo per il controllo ed il mantenimento della popolazione ad un livello ottimale di equilibrio che garantisca il massimo sfruttamento. Programmi matlab: Programma n°1a function [Rm,k,scarto]= calibra_Rm(Rm_0,k_0) format long global xt t_exp x_calc n f C % Inizia la calibrazione Rm=Rm_0; k=k_0; load pop_mt.txt; dati_pop=eval('pop_mt'); t_exp=dati_pop(:,1); C=dati_pop(:,3); xt=dati_pop(:,2); [n,g]=size(C); for i=1:n f(i,1)= C(i)/xt(i); end % Assegnazione iniziale dei valori dei parametri globali r,k Par=[Rm k]; 14 NomeModello='Err_popm'; options=foptions; options(1)=1; options(2)=0.001; options(3)=0.0001; options(14)=1000; [ParCal,options]=simplex('Err_popm',Par,options); scarto=Err_popm(ParCal) Rm=fix(10000*ParCal(1))/10000; k=fix(ParCal(2)) Programma 1b: function scarto=Err_popm(Par) format long global x0 xt t_exp x_calc f n C Rm=Par(1); k=Par(2); for i=1:n x_cal(i,1)=(xt(i)*Rm*k)/(Rm*xt(i)-xt(i)+k)-xt(i)*(1-exp(-f(i))); end figure(2) subplot(2,1,1) plot(t_exp,xt,'.',t_exp,x_cal,'r',t_exp,C,'b') title('Andamento della popolazione') xlabel('anni') ylabel('qintali ') drawnow subplot(2,1,2) plot(t_exp,f,'k') title('Sforzo di pesca') xlabel('anni') ylabel('f ') scarto=sum((xt - x_cal).^2); 15 Programma 1c function [x,options] = SIMPLEX(funfcn,x,options,grad,P1,P2,P3,P4,P5,P6,P7,P8,P9,P10) %SIMPLEX versione 1.5 %Trova il minimo di una funzione a pi variabili utilizzando il metodo del simplesso % con la fase di espansione ottimizzata. % %Sintassi minima: X=SIMPLEX('FUN',X0) parte dalle condizioni iniziali X0 e % trova il minimo della funzione descritta in FUN (usualmente un M-file di nome FUN.M). % La funzione FUN deve ritornare un valore scalare. % %Sintassi completa: [X,OPTIONS]=SIMPLEX('FUN',X0,OPTIONS,[],P1,P2,..,P10) % OPTIONS: un vettore di parametri opzionali (vedere FOPTIONS()). % OPTIONS(1): permette di visualizzare i risultati intermedi % 0 non visualizza i risultati intermedi % 1 visualizza i risultati intermedi % 2 visualizza i risultati intermedi in forma ridotta % (numero di iterazioni e valore del funzionale di errore) % OPTIONS(2) la precisione richiesta per il valore di X alla soluzione. % OPTIONS(3) la precisione richiesta per il valore del funzionale di errore % % alla soluzione. OPTIONS(6): considera il file STARTV per i vertici iniziali del simplesso % 0 costruisce il simplesso di partenza da X0. % 1 reinizializza i vertici del simplesso dai dati memorizzati in STARTV % 2 terminata l'ottimizzazione salva i vertici del simplesso in STARTV % 3 utilizza STARTV sia per l'inizializzazione del simplesso iniziale % % sia per salvare il simplesso finale. OPTIONS(14) il numero massimo di iterazioni dopo il quale la ricerca % del minimo si blocca. Se % si deve bloccare. % alla soluzione. negativa indica dopo quanti minuti la ricerca % P1,P2,....,P10 sono delle variabili da passare direttamente a FUN(). % Sviluppato da Aldo Buttini (11 settembre 93) x; funfcn; if nargin<3, options=[]; end options=foptions(options); prnt=options(1); tol=options(2); tol2=options(3); evalstr = [funfcn]; if ~any(funfcn<48) 16 evalstr=[evalstr, '(x']; for i=1:nargin - 4 evalstr = [evalstr,',P',num2str(i)]; end evalstr = [evalstr, ')']; end n = prod(size(x)); if (~options(14)) options(14) = 200*n; end % Inizializza il simplesso if (options(6)==1 | options(6)==3) if prnt disp('Ripristino del simplesso di partenza') end %Riprendi il simplesso memorizzato load STARTV; else %Inizializza il simplesso partendo dalla condizione iniziale if prnt disp('Calcolo del simplesso di partenza') end xin = x(:); v = 0.8*xin; x(:) = v; fv = eval(evalstr); for j = 1:n y = xin; if y(j) ~= 0 y(j) = 1.2*y(j); else y(j) = 0.1; end v = [v y]; x(:) = y; f = eval(evalstr); fv = [fv f]; end [fv,j] = sort(fv); v = v(:,j); end cnt = n+1; 17 if prnt clc format compact format long e home cnt disp('Iniziale') disp(' ') v fv end alpha=1.5;beta=0.5;gamma=2;fib_max=0; contatori=[0 0 0 0 0]; [n,np1] = size(v); onesn = ones(1,n); ot = 2:n+1; on = 1:n; tStart=clock; fOverTime=0; fOverCnt=0; fContinua=1; %Loop principale. while fContinua %cnt < options(14) vbar=(sum(v(:,on)')/n)'; % calcolo baricentro %Riflessione primaria vr=vbar+alpha*(vbar-v(:,n+1)); x(:) = vr; fr = eval(evalstr);cnt=cnt+1;%riflessione tramite il baricentro vk = vr; fk = fr; how = 'RIFLESSIONE';azione=1; if fr<fv(n) & fr~=NaN if fr<fv(1) %Espansione vr2=vbar+gamma*(vrvbar);x(:)=vr2;fr2=eval(evalstr);cnt=cnt+1; how='ESPANSIONE';azione=2; if fr2<fv(1) & fr2~=NaN %Espansione ottimizzata search=1;rapp=1.5;ifib=2; while search %cerca intervallo vr3=vr2+rapp*(vr2-vr);x(:)=vr3;fr3=eval(evalstr);cnt=cnt+1; if fr3>fr2 & fr3~=NaN search=0; else 18 vr=vr2;fr=fr2; vr2=vr3;fr2=fr3; ifib=ifib+1; end end %Il minimo compreso fra vr e vr3 => riduzione dell'intervallo if ifib>2 %Calcolo vr2b in modo che lungo la direzione di ricerca si trovino nell'ordine vr,vr2,vr2b,vr3. vr2b=vr+rapp*(vr2-vr);x(:)=vr2b;fr2b=eval(evalstr);cnt=cnt+1; rapp=0.5; for if=ifib:-1:3 if fr2b<fr2 vr=vr2; vr2=vr2b;fr2=fr2b; vr2b=vr3-rapp*(vr3-vr);x(:)=vr2b;fr2b=eval(evalstr); else vr3=vr2b; vr2b=vr2;fr2b=fr2; vr2=vr+rapp*(vr3-vr);x(:)=vr2;fr2=eval(evalstr); end cnt=cnt+1; end if fr2b<fr2 vr2=vr2b;fr2=fr2b; end end vk=vr2;fk=fr2;how='ESPANSIONE OTTIMIZZATA';azione=3; end end else if max(max(abs(v(:,ot)-v(:,onesn)))) <= tol & max(abs(fv(1)-fv(ot))) <= tol2, break, end vt = v(:,n+1); ft = fv(n+1); if fr < ft vt = vr; ft = fr; end vc=vbar+beta*(vt-vbar);x(:)= vc;fc=eval(evalstr);cnt=cnt+1; if fc<fv(n+1) vk = vc; fk = fc; how = 'CONTRAZIONE';azione=4; else for j = 2:n 19 v(:,j)=(v(:,1)+v(:,j))/2;x(:)=v(:,j);fv(j)=eval(evalstr); end cnt = cnt + n-1; vk = (v(:,1) + v(:,n+1))/2; x(:) = vk; fk = eval(evalstr);cnt=cnt+1; how = 'RIDUZIONE';azione=5; end; end v(:,n+1)=vk; fv(n+1)=fk; [fv,j]=sort(fv); v=v(:,j); contatori(azione)=contatori(azione)+1; if prnt==1 home;clc cnt disp(how) v fv elseif prnt==2 home;clc fprintf('Contatore: %g Funzionale di errore minimo: %g\n',cnt,fv(1)); end; %Controlla la condizione di file loop if options(14)>=0 if cnt > options(14) fContinua=0; fOverCnt=1; end else if etime(clock,tStart)>-options(14)*60 fContinua=0; fOverTime=1; end end end x(:) = v(:,1); if prnt, format, end options(10)=cnt; options(8)=min(fv); if (options(6)==2 | options(6)==3) %Salva il simplesso 20 save STARTV v fv; end if fOverCnt if options(1) >= 0 disp(['Attenzione: stato raggiunto il massimo numero di iterazioni previste (',num2str(options(14)),')']) disp( ' (Aumentare OPTIONS(14)).') end elseif fOverTime if options(1) >= 0 disp(['Attenzione: stato superato il limite massimo di tempo (' ,num2str(- options(14)),' minuti)']) disp( ' (Diminuire OPTIONS(14)).') end end %if prnt % fprintf('Numero riflessioni : %g\n',contatori(1)) % fprintf('Numero espansioni : %g\n',contatori(2)) % fprintf('Numero espansioni ottimizzate : %g\n',contatori(3)) % fprintf('Numero contrazioni : %g\n',contatori(4)) % fprintf('Numero riduzioni : %g\n',contatori(5)) %end Programma n°2 % Crea i grafici con l'andamento del rateo di crescita in funzione % del tempo e della popolazione r=input('inserisci il tasso di crescita '); k=input('inserisci la capacità portante '); T=1:5:500; [z,ki]=size(T); x=zeros(1,ki); R=zeros(1,ki); x(1,1)=100; R(1,ki)=1; for j=1:ki-1 x(j+1)=x(j)*r*k/(r*x(j)-x(j)+k); R(j)=x(j+1)/x(j); end subplot(2,1,1) 21 plot (x,R,'r') xlabel('Popolazione') ylabel('Rateo di crescita') title('Andamento del rateo di crescita') subplot(2,1,2) plot (T,R,'r') xlabel('Tempo') ylabel('Rateo di crescita') Programma n°3 %Disegna il grafico x(t)/x(t+1) n=100; r=1.1604; k=37770; x=zeros(1,n); p=zeros(1,n); y=zeros(1,n); x(1,1)=10; p(1,n)=k; y(1,n)=k; for i=1:n-1 x(i+1)=x(i)*r*k/(r*x(i)-x(i)+k); p(i)=x(i+1); y(i)=x(i); end plot(x,p,'r',x,y,'--k') title('pop') xlabel('x(t)') ylabel('x(t+1)') Programma n°4 % Calcola la popolazione Nid a cui si può chiedere il massimo raccolto annuo Cmax r=1.1605; k=37770; N=0:100:230000; 22 Cm=0; [z,n]=size(N); for i=2:n Y=r*k*N(i)/(r*N(i)-N(i)+k); d=Y-N(i); if d>Cm Cm=d; Nid=N(i); end end Cmax=Cm Nid Programma n°5 % Andamento della popolazione nel tempo con calcolo dello sforzo di pesca per %stabilizzare la popolazione ad un valore Nid scelto. r=1.1605; k=37770; f=0.01; D=20; No=input('valore Nid a cui far tendere la popolazione '); while D>10 N=r*k*No/(r*No-No+k)-No*(1-exp(-f)); D=N-No; f=f+0.0001; end f T=1:200; [z,n]=size(T); x=zeros(1,n); y=zeros(1,n); m=zeros(1,n); x(1,1)=1000; y(1,1)=1000; for i=1:n-1 x(i+1)=(r*k*x(i)/(r*x(i)-x(i)+k))- x(i)*(1-exp(-f)); y(i+1)=(r*k*y(i)/(r*y(i)-y(i)+k)); end Pm=k; plot(T,y,'--r',T,x,'b',T,Pm,'--k') xlabel('tempo') ylabel('popolazione') 23 Bibliografia: Matematical Bioeconomics – The optimal management of renewable resources : Colin W. Clark. Automatica, vol. 27, No.4 - Fishery Management as a Problem in Feedback Control: O.L.R.Jacobs, D.J.Ballance and J.W.Horwood. Elsevier - ecological modelling 127 – Destabilising effect of periodic harvest on population dynamics: Nguyen Phong Chau. Annexe appendix L , E -Preliminary utilization of trawl survey data for hake (M.Merluccius L.) population dinamics in the Adriatic sea – C.Flamingni. 24