Informatica per Scienze Geologiche LT a a 2017

  • Slides: 21
Download presentation
Informatica per Scienze Geologiche LT a. a. 2017 -2018 Introduzione all’utilizzo di metodologie informatiche

Informatica per Scienze Geologiche LT a. a. 2017 -2018 Introduzione all’utilizzo di metodologie informatiche nella Geologia Docente: Prof. Carla Braitenberg, Dipartimento Matematica e Geoscienze, Via Weiss 1, Università di Trieste E-mail: berg@units. it Tel. 040 5582258

Funzioni create dall’utente • E’ utile richiamare blocchi di programmi che vengono utilizzati frequentemente

Funzioni create dall’utente • E’ utile richiamare blocchi di programmi che vengono utilizzati frequentemente dall’esterno, senza doverli riprogrammare. Si definisce una funzione, con input e output, che svolge una certa operazione. Chiamata della funzione output input

Funzioni create dall’utente • Vediamo la chiamata alla funzione in dettaglio • >>function [out

Funzioni create dall’utente • Vediamo la chiamata alla funzione in dettaglio • >>function [out 1, out 2, out 3] = nomefunz(input 1, input 2) Una funzione ha un output. Se piu’ di uno, le variabili vanno raggruppate in parentesi quadre. Il nome della funzione e’ anche il nome dello script di matlab. Una funzione ha uno o piu’ input -Una volta chiusa la funzione, le variabili vengono cancellate dalla memoria. - i nomi delle variabili in output devono avere corrispondenza nell’interno della funzione - non e’ necessario richiamare tutte le variabili in output. -- possiamo definire una funzione anche senza output. Una funzione che crea un plot non ha variabili in output

Esempio di funzione che non restitutisce valori in output. Plot di tre sinusoidi sovrapposte.

Esempio di funzione che non restitutisce valori in output. Plot di tre sinusoidi sovrapposte. Chiamata da command line: plotsines(1/20, 1/40, 1/70) • • • function plotsines(f 1, f 2, f 3) switch nargin case 0 plotsines(1/20, 1/50, 1/100) otherwise x=linspace(0, 1000); y=sin(x*pi*f 1)+sin(x*pi*f 2)+sin(x*pi*f 3); figure plot(x, y) xlabel('x'); ylabel('y'); end

Call function from command line or from script: type on command line: plotsines(1/20, 1/50,

Call function from command line or from script: type on command line: plotsines(1/20, 1/50, 1/100) Be sure that the script plosines. m is in your working folder.

Operatori logici per controllare il flusso del programma- if/elseif • Matlab in comune con

Operatori logici per controllare il flusso del programma- if/elseif • Matlab in comune con altri programmi mette a disposizione un controllo logico. If condizione comandi end If condizione comandi elseif condizione comandi else comandi end Per definire la condizione utilizziamo i simboli elencati nella pagina successiva.

Condizioni logiche in Matlab • • Uguale == Non uguale ~= Maggiore > Maggiore

Condizioni logiche in Matlab • • Uguale == Non uguale ~= Maggiore > Maggiore uguale >= Operatori logici: And & oppure && Or | oppure || Negazione: ~

Ripetiamo l’esempio delle tre sinusoidi Salviamo il seguente script con nome plotsines_flexible. m •

Ripetiamo l’esempio delle tre sinusoidi Salviamo il seguente script con nome plotsines_flexible. m • • • • %plotsines_flexible % funzione mette in grafico tre sinusoidi function plotsines_flexible(f 1, f 2, f 3) x=linspace(0, 1000); if nargin==1 y=sin(x*pi*f 1); elseif nargin==2 y=sin(x*pi*f 1)+sin(x*pi*f 2); elseif nargin==3 y=sin(x*pi*f 1)+sin(x*pi*f 2)+sin(x*pi*f 3); end plot(x, y) xlabel('x'); ylabel('y'); end

Cicli di ripetizione • For n= 1: 100 • comandi • End • La

Cicli di ripetizione • For n= 1: 100 • comandi • End • La variabile del loop e’ un vettore. Nell’interno del blocco e’ uno scalare. Non e’ necessario che i valori del vettore siano conscutivi. • Il blocco dei comandi: – Tutti i comandi compresi fra la riga del for e la riga di end

Cicli di ripetizione - while • >> while • Un loop generico e’ fattibile

Cicli di ripetizione - while • >> while • Un loop generico e’ fattibile con while. Non necessita di conoscere il numero di iterazioni, ma poniamo una condizione logica. N=0 while N<10 • >> while condizione N=N+1 end • comandi disp(‘finito!’) • >> end • I comandi vengono eseguiti mentre la condizione viene soddisfatta.

Grafici cartesiani • x=-pi: pi/100: pi; • y=cos(4*x). *sin(10*x). *exp(-abs(x)); • plot(x, y, 'k-');

Grafici cartesiani • x=-pi: pi/100: pi; • y=cos(4*x). *sin(10*x). *exp(-abs(x)); • plot(x, y, 'k-');

Grafico semi-logaritmico • • x=-pi: pi/100: pi; y=cos(4*x). *sin(10*x). *exp(-abs(x)); plot(x, y, 'k-'); semilogx(x,

Grafico semi-logaritmico • • x=-pi: pi/100: pi; y=cos(4*x). *sin(10*x). *exp(-abs(x)); plot(x, y, 'k-'); semilogx(x, y, 'k');

Grafico semilogaritmico • • • x=0: 1: 40; Y=10*exp(-abs(x)); figure plot(x, y, 'k-'); figure

Grafico semilogaritmico • • • x=0: 1: 40; Y=10*exp(-abs(x)); figure plot(x, y, 'k-'); figure semilogy(x, y, 'k');

Esempio da prima: • • x=0: 1: 40; y=10*exp(-abs(x)); figure subplot(2, 1, 1) plot(x,

Esempio da prima: • • x=0: 1: 40; y=10*exp(-abs(x)); figure subplot(2, 1, 1) plot(x, y) subplot(2, 1, 2) semilogy(x, y, 'k')