Programmi utilizzati durante il corso ed esercizi

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Programmi utilizzati durante il corso ed esercizi"

Transcript

1 Università di Roma La Sapienza Programmi utilizzati durante il corso ed esercizi Dott. Francesco Battista a.a Laboratorio di Calcolo di Aerodinamica Laurea in Ingegneria Aerospaziale

2 Chapter 1 Prefazione Questo libretto è stato creato per raccogliere alcuni dei programmi che vengono mostrati durante il Laboratorio di Calcolo di Aerodinamica. Esso è in continuo aggiornamento quindi si consiglia di controllare di tanto in tanto sul sito se vi è una versione aggiornata. La maggior parte dei codici mostrati sono senza errori, alcuni, non indicati, presentano errori il cui scopo è mostrare esplicitamente la corretta sintassi. Si consiglia vivamente perciò di utilizzare questo libretto come linea guida per la scrittura dei programmi e non come una dispensa tradizionale: la semplice lettura dei codici non è di alcuna utilià. I passi da seguire sono i seguenti: leggete la traccia dell esercizio provate a risolvere l esercizio scrivendo il programma in autonomia ovvero senza vederne la soluzione sul libretto compilate il programma: il successo di questo passo vi permette di passare al passo successivo in quanto il vostro programma non presenta errori sintattici, altrimenti cercate di correggere l errore. Ricordate in caso di errore il compilatore vi indica posizione e tipo di errore quindi leggete con attenzione i messaggi del compilatore. eseguite il programma. A questo punto l unica domanda che dovete porvi è: il programma esegue le istruzioni richieste dall esercizio? Se sì, non vi sono errori, altrimenti bisogna rivedere il programma e le istruzioni in esso contenute. confrontate il vostro programma con quello riportato in questo libretto, ricordate Non esiste un unico modo per eseguire ognuno degli esercizi in questo libretto!! quindi non necessariamente i vostri programmi devono essere uguali a quelli riportati nel libretto. Alcuni codici per il corretto funzionamento necessitano di un file di input che in questo libretto non è riportato. Infine si ricorda ancora una volta che questo libretto è solo un aiuto allo studio che raccoglie tutti i programmi che sono stati discussi in modo approfondito durante le lezioni. Buon Lavoro 2

3 Chapter 2 I primi programmi Questo primo capitolo è dedicato ai primi programmi visti a lezione. Sono da ritenersi utili per avere degli esempi della sintassi di base necessaria per poter scrivere programmi più complicati. 2.1 Scrivere a schermo il saluto Ciao Mondo : definizione delle sezioni (esecutiva e conclusiva) fondamentali ed imprescindibili di un programma. 1! File : hello. f90 2! The first program in Fortran 90 3! This code print a message on the screen 4 PROGRAM hello 5 6! Executive section 7 WRITE (*,*) Hello world! 8 9! End section 10 STOP 11 END PROGRAM hello 2.2 Scrivere un numero, scelto dall utente, a schermo: definizione della sezione dichiarativa. 1! File : assegnazione. f90 2! This program reads and prints a number on the screen 3 PROGRAM assegnazione 4 5! declaration section 6 IMPLICIT NONE 7 INTEGER :: i 8 9! execution section 10 WRITE (*,*) write and integer on the screen 11 READ (*,*) i WRITE (*,*) You write,i 14 15! end section 3

4 16 STOP 17 END PROGRAM assegnazione 2.3 Scrivere due numeri scelti dall utente a schermo ed effettuare calcoli aritmetici con essi scrivendo a schermo il risultato: assegnazione del valore ad una variabile Operazione eseguita n 2 = 10 n 1 1! File : assegnazione2. f90 2 PROGRAM assegnazione2 3 4! Sezione dichiarativa 5 IMPLICIT NONE 6 INTEGER :: num1, num2 7 8! Sezione esecutiva 9 WRITE (*,*) Inserisci due interi ( separati da spazio ) e premi INVIO 10 READ (*,*) num1, num WRITE (*,*) Hai scritto :,num1, num num2 = num1 * WRITE (*,*) Le nuove variabili sono :,num1, num ! Sezione conclusiva 19 STOP 20 END PROGRAM assegnazione Operazione eseguita n 2 = 10 + n 1 1! File : assegnazione3. f90 2 PROGRAM assegnazione3 3 4! Sezione dichiarativa 5 IMPLICIT NONE 6 INTEGER :: num1, num2 7 8! Sezione esecutiva 9 WRITE (*,*) Inserisci due interi ( separati da spazio ) e premi INVIO 10 READ (*,*) num1, num WRITE (*,*) Hai scritto :,num1, num num2 = num WRITE (*,*) Le nuove variabili sono :,num1, num ! Sezione conclusiva 4

5 19 STOP 20 END PROGRAM assegnazione Operazione eseguita n 1 = 10 + n 1 1! File : assegnazione4. f90 2 PROGRAM assegnazione4 3 4! Sezione dichiarativa 5 IMPLICIT NONE 6 INTEGER :: num1, num2 7 8! Sezione esecutiva 9 WRITE (*,*) Inserisci due interi ( separati da spazio ) e premi INVIO 10 READ (*,*) num1, num WRITE (*,*) Hai scritto :,num1, num num1 = num WRITE (*,*) Le nuove variabili sono :,num1, num ! Sezione conclusiva 19 STOP 20 END PROGRAM assegnazione Operazione eseguita n = n 1 1! File : assegnazione5. f90 2 PROGRAM assegnazione5 3 4! Sezione dichiarativa 5 IMPLICIT NONE 6 INTEGER :: num1, num2 7 8! Sezione esecutiva 9 WRITE (*,*) Inserisci due interi ( separati da spazio ) e premi INVIO 10 READ (*,*) num1, num WRITE (*,*) Hai scritto :,num1, num num = num WRITE (*,*) Le nuove variabili sono :,num1, num ! Sezione conclusiva 19 STOP 20 END PROGRAM assegnazione Operazione eseguita n 2 = n 1 + n 2 5

6 1! File : assegnazione6. f90 2 PROGRAM assegnazione6 3 4! Sezione dichiarativa 5 IMPLICIT NONE 6 INTEGER :: num1, num2 7 8! Sezione esecutiva 9 WRITE (*,*) Inserisci due interi ( separati da spazio ) e premi INVIO 10 READ (*,*) num1, num WRITE (*,*) Hai scritto :,num1, num num2 = num1 + num WRITE (*,*) Le nuove variabili sono :,num1, num ! Sezione conclusiva 19 STOP 20 END PROGRAM assegnazione6 2.4 Dato il raggio (numero reale) scrivere l area ed il perimetro del cerchio: definizione di varibili ed utilizzo delle stesse. 1! File : cerchio. f90 2! Questo programma legge un reale dallo schermo 3! e calcola l area e la circonferenza del cerchio 4! di cui il reale e il raggio 5 PROGRAM cerchio 6 7! Sezione dichiarativa 8 IMPLICIT NONE 9 REAL :: radius 10 REAL, PARAMETER :: pi = ! Sezione esecutiva 13 WRITE (*,*) Qual il raggio del cerchio? 14 READ (*,*) radius WRITE (*,*) Il perimetro del cerchio e :,2. * pi * radius 17 WRITE (*,*) L area del cerchio e :, pi * radius ** ! Sezione conclusiva 20 STOP 21 END PROGRAM cerchio 2.5 Dati due interi calcolarne il massimo. 6

7 2.5.1 Utilizzo della funzione max(a,b). 1! File : massimo1. f90 2! Calcolo del massimo dati due numeri 3 PROGRAM massimo 4 5! Sezione dichiarativa 6 IMPLICIT NONE 7 INTEGER :: num1, num2, massimo 8 9! Sezione esecutiva 10 WRITE (*,*) Inserisci due interi ( separati da spazio ) 11 READ (*,*) num1, num massimo = max (num1, num2 ) WRITE (*,*) Il massimo e :, massimo 16 17! Sezione conclusiva 18 STOP 19 END PROGRAM massimo Utilizzo della sintassi if-then-else. 1! File : massimo. f90 2! Calcolo del massimo dati due numeri 3 PROGRAM massimo 4 5! Sezione dichiarativa 6 IMPLICIT NONE 7 INTEGER :: num1, num2, massimo 8 9! Sezione esecutiva 10 WRITE (*,*) Inserisci due interi ( separati da spazio ) 11 READ (*,*) num1, num IF ( num1.gt. num2 ) then 14 massimo = num1 15 ELSE 16 massimo = num2 17 ENDIF WRITE (*,*) Il massimo e :, massimo 20 21! Sezione conclusiva 22 STOP 23 END PROGRAM massimo 2.6 Dato un intero scelto dall utente dire se è pari o dispari: utilizzo della struttura if-then-else e della funzione mod(a,b). 7

8 1! file even_ odd. f90 2! This code reads one integer and say if it is even or odd 3 PROGRAM even_ odd 4! sezione dichiarativa 5 IMPLICIT NONE 6 INTEGER i1 7 CHARACTER (4) num 8! sezione esecutiva 9 WRITE (*,*) Insert one integer, then press ENTER 10 READ (*,*) i1 11 if ( mod (i1,2).eq.0) then 12 num = even 13 else 14 num = odd 15 endif 16 write (*,*) the inserted number is,num 17! sezione conclusiva 18 STOP 19 END 2.7 Data una sequenza di 3 numeri (interi) calcolarne la somma e scriverla a schermo: utilizzo dell istruzione ciclica do-loop 1! file : somma. f90 2! Show the cicle statements use 3 PROGRAM somma 4! Declaration section 5 IMPLICIT NONE 6 INTEGER :: amount, num1, summ, i 7! Execution section 8 amount =3 9 WRITE (*,*) Insert, amount, integer and press each time ENTER : 10 summ =0 11 DO i=1, amount 12 READ (*,*) num1 13 summ = summ + num1 14 ENDDO 15 WRITE (*,*) The sum reads :, summ 16! End section 17 STOP 18 END 2.8 Dato un intero, scelto dall utente, calcolare il fattoriale del numero stesso: utilizzo dell istruzione ciclica do-loop 1! file : fattoriale. f90 2! This program reads a number and compute the factorial 3 PROGRAM fattoriale 4! sezione dichiarativa 5 IMPLICIT NONE 8

9 6 INTEGER :: n, m 7 INTEGER :: fact 8! sezione esecutiva 9 WRITE (*,*) Write the number on the screen and press ENTER 10 READ (*,*) n 11 fact =n 12 DO m=1,n fact = fact *(n-m) 14 ENDDO 15 if (n.eq.0) fact =1 16 WRITE (*,*) The factorial of, n, is:,fact 17! sezione esecutiva 18 STOP 19 END PROGRAM fattoriale 2.9 Data una sequenza di interi (di 0 e 1) scelta dall utente dire da quanti zeri é formata la sequenza di zeri, consecutivi, più lunga: utilizzo dell istruzione ciclica indefinita do-loop 1! file : sequenza. f90 2! This program is an example of the undefined DO - LOOP 3 PROGRAM sequenza 4! declaration section 5 IMPLICIT NONE 6 INTEGER :: bit, cont, maxleng 7 cont = 0 8 maxleng = 0 9! execution section 10 WRITE (*,*) Insert a 0,1,2 sequence ( press ENTER each time ) 11 DO 12 WRITE (*,*) Insert a number (no 0 or 1 to end ): 13 READ (*,*) bit 14 IF ( bit.ne. 1. and. bit.ne. 0) EXIT 15 IF ( bit. eq. 0) THEN 16 cont = cont IF ( cont. gt. maxleng ) maxleng = maxleng ELSE 19 cont = 0 20 ENDIF 21 ENDDO 22 WRITE (*,*) The most length sequence of only 0 counts & 23,maxleng, zeros 24! end section 25 STOP 26 END 2.10 Dati due numeri interi scelti dall utente calcolare il massimo comune denominatore: utilizzo delle istruzioni if-then-else, do-loop e della funzione mod(a,b) 1! file : mcd. f90 2! This program prints the greater common divisor of two integers 9

10 3 PROGRAM mcd 4! sezione dichiatativa 5 IMPLICIT NONE 6 INTEGER :: a, b, m 7! sezione esecutiva 8 WRITE (*,*) Insert two number separated by a space : 9 READ (*,*) a, b m=a 12 IF (b.lt.a) m=b 13 DO 14 IF ( mod (b,m).eq.0. and. mod (a,m).eq.0) EXIT 15 m = m ENDDO 17 WRITE (*,*) The greater common divisor is,m 18! sezione conclusiva 19 STOP 20 END 2.11 Dati due numeri interi scelti dall utente calcolare il massimo: Utilizzo della sotto-unità subroutine 1! File : massimo. f90 2! Calcolo del massimo dati due numeri 3 PROGRAM massimo 4! Sezione dichiarativa 5 IMPLICIT NONE 6 INTEGER :: num1, num2, mas 7! Sezione esecutiva 8 WRITE (*,*) Inserisci due interi ( separati da spazio ) 9 READ (*,*) num1, num2 10 call calc (num1,num2, mas ) 11 WRITE (*,*) Il massimo e :,mas 12! Sezione conclusiva 13 STOP 14 END PROGRAM massimo 15! 16! 17 SUBROUTINE calc (x,y, z) 18 IMPLICIT NONE 19 INTEGER :: x,y,z 20 IF (x.gt.y) then 21 z = x 22 ELSE 23 z = y 24 ENDIF 25 RETURN 26 END SUBROUTINE calc 10

11 Utilizzo della sotto-unità function 1! File : massimo. f90 2! Calcolo del massimo dati due numeri 3 PROGRAM massimo 4! Sezione dichiarativa 5 IMPLICIT NONE 6 INTEGER :: num1, num2, mas, calc 7! Sezione esecutiva 8 WRITE (*,*) Inserisci due interi ( separati da spazio ) 9 READ (*,*) num1, num2 10 mas = calc (num1, num2 ) 11 WRITE (*,*) Il massimo e :,mas 12! Sezione conclusiva 13 STOP 14 END PROGRAM massimo 15! 16! 17 FUNCTION calc (x, y) 18 IMPLICIT NONE 19 INTEGER :: x,y, calc 20 IF (x.gt.y) then 21 calc = x 22 ELSE 23 calc = y 24 ENDIF 25 RETURN 26 END FUNCTION calc 2.12 Creare una stringa (nome di un file) concatenando tre stringhe: la versione a il tempo 10 l estensione.dat. La stringa finale sarà a00010.dat 1! File : name_file. f90 2! Gestire e creare una stringa corrispondende 3! al nome di un file 4 PROGRAM name_ file 5 IMPlICIT NONE 6 CHARACTER (30) :: name 7 CHARACTER (1) :: ver 8 CHARACTER (6) :: time 9 CHARACTER (4) :: ext 10 INTEGER :: it it = ext =. dat 11

12 15 ver = a 16 WRITE (time, (i6.6) ) it 17 name = ver // time // ext WRITE (*,*) Apro il file,name STOP 22 END PROGRAM name_ file 2.13 Leggere un numero da un file chiamato input.dat e scrivere il numero a schermo 1! File : name_file. f90 2! Gestire e creare una stringa corrispondende 3! al nome di un file 4 PROGRAM read_ file 5 IMPlICIT NONE 6 CHARACTER (30) :: name_ file 7 CHARACTER (7) :: ver 8 CHARACTER (4) :: ext 9 REAL :: pi ext =. dat 12 ver = input 13 name_file = trim ( ver )// ext WRITE (*,*) Apro il file, name_file 16 OPEN ( UNIT =1, FILE = name_file, STATUS = old,action = read ) 17 READ (1,*) pi 18 CLOSE (1) WRITE (*,*) Il contenuto del file,name_file, e, pi 21 WRITE (*,10) name_file, pi FORMAT ( Il contenuto del file,a9, e, F7.4) 24 STOP 25 END PROGRAM read_ file 12

13 Chapter 3 Soluzione di ODE 3.1 Calcolare e la soluzione esatta della seguente equazione differenziale ordinaria: nel punto x=10, tramite l uso di una subroutine. 1 PROGRAM main 2 IMPLICIT NONE 3 REAL :: y,x,alpha,y0 4 5 x =1.0 6 alpha =3.0 7 y0 =1.0 8 CALL exact_sol (y,x,y0, alpha ) 9 dy = 3y dx (3.1) y(0) = y 0 = 1 (3.2) 10 WRITE (*,*) La soluzione al tempo t=,x, e uguale a y=,y STOP 13 END PROGRAM main 14! SUBROUTINE exact_sol (y,x,y0,a) 17 IMPLICIT NONE 18 REAL, INTENT (IN):: y0,x,a 19 REAL, INTENT ( OUT ):: y y = y0*exp (-x*a) RETURN 24 END SUBROUTINE exact_ sol 13

14 3.2 Calcolare e la soluzione esatta della seguente equazione differenziale ordinaria: dal punto x=0 al punto x=10, tramite l uso di una subroutine. 1 PROGRAM main 2 IMPLICIT NONE 3 INTEGER, PARAMETER :: Nx =10 4 INTEGER :: i 5 REAL :: y,x,alpha,y0 6 REAL :: Dx, x_max, x_min 7 8 x_max =2. 9 x_min =0. 10 Dx =( x_max - x_min )/( Nx) 11 alpha = y0 = do i=0, Nx 15 x= x_min +Dx*i 16 CALL exact_sol (y,x,y0, alpha ) WRITE (*,*) x,y 19 enddo WRITE (*,*) Fine della simulazione STOP 24 END PROGRAM main dy = 3y dx (3.3) y(0) = y 0 = 1 (3.4) 25! SUBROUTINE exact_sol (y,x,y0,a) 28 IMPLICIT NONE 29 REAL, INTENT (IN):: y0,x,a 30 REAL, INTENT ( OUT ):: y y = y0*exp (-x*a) RETURN 35 END SUBROUTINE exact_ sol 3.3 Calcolare e la soluzione esatta e la soluzione approssimata con il metodo di eulero della seguente equazione differenziale ordinaria: dal punto x=0 al punto x=10. Scrivere infine la soluzione su un file. dy = 3y dx (3.5) y(0) = y 0 = 1 (3.6) 14

15 1 PROGRAM main 2 IMPLICIT NONE 3 INTEGER, PARAMETER :: Nx =10 4 INTEGER :: i 5 REAL :: y,x,alpha,y0 6 REAL :: Dx, y_old, y_new 7 REAL :: rhs, x_max, x_min 8 REAL :: error, err_max 9 10 error = err_max = call input ( x_min, x_max, alpha,y0) 14 Dx =( x_max - x_min )/ float (Nx) 15 y_old =y call write_sol ( x_min,y0,y0) do i=1, Nx 20 x= x_min +Dx*i 21 CALL exact_sol (y,x,y0, alpha ) y_new = y_old + Dx*rhs ( y_old, alpha ) call write_sol (x,y, y_new ) y_old = y_new error = abs ( y_new -y) 30 err_max = max ( err_max, error ) 31 enddo WRITE (*,*) Dx, errore,dx, error 34 WRITE (*,*) Fine della simulazione STOP 37 END PROGRAM main 38! 39! 40 SUBROUTINE exact_sol (y,x,y0,a) 41 IMPLICIT NONE 42 REAL, INTENT (IN):: y0,x,a 43 REAL, INTENT ( OUT ):: y y = y0*exp (-x*a) RETURN 48 END SUBROUTINE exact_ sol 49! 50 SUBROUTINE input ( x_min, x_max, alpha,y0) 51 IMPLICIT NONE 52 REAL, INTENT ( OUT ):: y0, alpha, x_min, x_max OPEN ( UNIT =1, FILE = input. dat, STATUS = old,action = read ) 55 READ (1,*) x_min 56 READ (1,*) x_max 15

16 57 READ (1,*) y0 58 READ (1,*) alpha 59 CLOSE (1) RETURN 62 END SUBROUTINE input 63! 64 FUNCTION rhs (y, a) 65 IMPLICIT NONE 66 REAL, INTENT (IN) :: a,y 67 REAL :: rhs rhs =-a*y RETURN 72 END FUNCTION rhs 73! 74 SUBROUTINE write_sol (x,ye,ya) 75 IMPLICIT NONE 76 REAL, INTENT (IN)::x,ye,ya OPEN ( UNIT =1, FILE = output. dat, STATUS = unknown,action = write,access = append ) 79 WRITE (1,*) x,ye,ya 80 CLOSE (1) RETURN 83 END SUBROUTINE write_ sol 84! 3.4 Risolvere il problema della sezione 3.3 con il metodo di Heun 1 PROGRAM main 2 IMPLICIT NONE 3 INTEGER, PARAMETER :: Nx =10 4 INTEGER :: i 5 REAL :: y,x,alpha,y0 6 REAL :: Dx, y_old, y_new, y_ast 7 REAL :: rhs, x_max, x_min 8 REAL :: error, err_max 9 10 error = err_max = call input ( x_min, x_max, alpha,y0) 14 Dx =( x_max - x_min )/ float (Nx) 15 y_old =y call write_sol ( x_min,y0,y0) do i=1, Nx 20 x= x_min +Dx*i 21 CALL exact_sol (y,x,y0, alpha ) y_ast = y_old + Dx*rhs ( y_old, alpha ) 16

17 24 y_new = y_old + Dx *.5*( rhs ( y_old, alpha )+ rhs ( y_ast, alpha )) error = abs ( y_new -y) 28 err_max = max ( err_max, error ) call write_sol (x,y, y_new ) y_old = y_new 33 enddo WRITE (*,*) ERRORE MAX,Dx, err_max 36 WRITE (*,*) Fine della simulazione STOP 39 END PROGRAM main 40! 41! 42 SUBROUTINE exact_sol (y,x,y0,a) 43 IMPLICIT NONE 44 REAL, INTENT (IN):: y0,x,a 45 REAL, INTENT ( OUT ):: y y = y0*exp (-x*a) RETURN 50 END SUBROUTINE exact_ sol 51! 52 SUBROUTINE input ( x_min, x_max, alpha,y0) 53 IMPLICIT NONE 54 REAL, INTENT ( OUT ):: y0, alpha, x_min, x_max OPEN ( UNIT =1, FILE = input. dat, STATUS = old,action = read ) 57 READ (1,*) x_min 58 READ (1,*) x_max 59 READ (1,*) y0 60 READ (1,*) alpha 61 CLOSE (1) RETURN 64 END SUBROUTINE input 65! 66 FUNCTION rhs (y, a) 67 IMPLICIT NONE 68 REAL, INTENT (IN) :: a,y 69 REAL :: rhs rhs =-a*y RETURN 74 END FUNCTION rhs 75! 76 SUBROUTINE write_sol (x,ye,ya) 77 IMPLICIT NONE 78 REAL, INTENT (IN)::x,ye,ya 79 17

18 80 OPEN ( UNIT =1, FILE = output. dat, STATUS = unknown,action = write, POSITION = append ) 81 WRITE (1,*) x,ye,ya 82 CLOSE (1) RETURN 85 END SUBROUTINE write_ sol 86! 3.5 Risolvere il problema della sezione 3.3 con il metodo di Runge-Kutta al IV ordine 1 PROGRAM main 2 IMPLICIT NONE 3 INTEGER, PARAMETER :: Nx = INTEGER, PARAMETER :: nrk =4 5 INTEGER :: i,l 6 REAL :: y,x,alpha,y0 7 REAL :: Dx, y_old, y_new, y_ast 8 REAL :: rhs, x_max, x_min 9 REAL :: error, err_max 10 REAL, DIMENSION (1: nrk ) :: crk1, crk2 11 REAL, DIMENSION (0: nrk ) :: k 12 REAL :: rhsrk crk1 = (/0.,.5,.5, 1./) 15 crk2 = (/1., 2., 2., 1./) error = err_max = call input ( x_min, x_max, alpha,y0) 21 Dx =( x_max - x_min )/ float (Nx) 22 y_old =y call write_sol ( x_min,y0,y0) do i=1, Nx 27 x= x_min +Dx*i 28 CALL exact_sol (y,x,y0, alpha ) rhsrk =0. 31 y_new = y_old 32 k (0) =0. 33 do l=1, nrk 34 y_old = y_new + crk1 ( l) * Dx * k(l -1) 35 k(l) = rhs ( y_old, alpha ) 36 rhsrk = rhsrk + k( l)* crk2 ( l) 37 enddo y_new = y_new + Dx /6.* rhsrk error = abs ( y_new -y) 43 err_max = max ( err_max, error ) 44 18

19 45 call write_sol (x,y, y_new ) y_old = y_new 48 enddo WRITE (*,*) ERRORE MAX,Dx, err_max 51 WRITE (*,*) Fine della simulazione STOP 54 END PROGRAM main 55! 56! 57 SUBROUTINE exact_sol (y,x,y0,a) 58 IMPLICIT NONE 59 REAL, INTENT (IN):: y0,x,a 60 REAL, INTENT ( OUT ):: y y = y0*exp (-x*a) RETURN 65 END SUBROUTINE exact_ sol 66! 67 SUBROUTINE input ( x_min, x_max, alpha,y0) 68 IMPLICIT NONE 69 REAL, INTENT ( OUT ):: y0, alpha, x_min, x_max OPEN ( UNIT =1, FILE = input. dat, STATUS = old,action = read ) 72 READ (1,*) x_min 73 READ (1,*) x_max 74 READ (1,*) y0 75 READ (1,*) alpha 76 CLOSE (1) RETURN 79 END SUBROUTINE input 80! 81 FUNCTION rhs (y, a) 82 IMPLICIT NONE 83 REAL, INTENT (IN) :: a,y 84 REAL :: rhs rhs =-a*y RETURN 89 END FUNCTION rhs 90! 91 SUBROUTINE write_sol (x,ye,ya) 92 IMPLICIT NONE 93 REAL, INTENT (IN)::x,ye,ya OPEN ( UNIT =1, FILE = output. dat, STATUS = unknown,action = write, POSITION = append ) 96 WRITE (1,*) x,ye,ya 97 CLOSE (1) RETURN 100 END SUBROUTINE write_ sol 19

20 101! 3.6 Risolvere il problema di una particella inerziale sottoposta a gravità ed a resistenza di Stokes: dv p dt = v p τ p + g (3.7) v p (0) = 0 (3.8) Il sistema precedente ha la seguente soluzione esatta: ) v p (t) = (1 e t/τp g τ p (3.9) Si usi un metodo di integrazione accurato al primo ordine. 1 PROGRAM main 2 IMPLICIT NONE 3 INTEGER, PARAMETER :: Nt = INTEGER :: n 5 REAL :: v,t,tau,v0,g 6 REAL :: Dt, v_old, v_new 7 REAL :: rhs, t_max, t_min 8 REAL :: error, err_max 9 10 error = err_max = CALL input ( t_min, t_max,tau,g,v0) 14 Dt =( t_max - t_min )/ float (Nt) 15 v_old =v CALL write_sol ( t_min,v0,v0, error ) DO n=1, Nt 20 t= t_min +Dt*n 21 CALL exact_sol (v,t,v0,tau,g) v_new = v_old + rhs (Dt, v_old,tau,g) error = abs ( v_new -v) 27 err_max = max ( err_max, error ) CALL write_sol (t,v,v_new, error ) v_old = v_new 32 ENDDO WRITE (*,*) ERRORE MAX,Dt, err_max 35 WRITE (*,*) Fine della simulazione STOP 38 END PROGRAM main 39! 20

21 40! 41 SUBROUTINE exact_sol (v,t,v0,tau,g) 42 IMPLICIT NONE 43 REAL, INTENT (IN):: v0,t,tau,g 44 REAL, INTENT ( OUT ):: v v = (v0 -g* tau )* exp (-t/ tau )+g* tau RETURN 49 END SUBROUTINE exact_ sol 50! 51 SUBROUTINE input ( t_min, t_max,tau,g,v0) 52 IMPLICIT NONE 53 REAL, INTENT ( OUT ):: v0,tau,g,t_min, t_max OPEN ( UNIT =1, FILE = input. dat, STATUS = old,action = read ) 56 READ (1,*) t_min 57 READ (1,*) t_max 58 READ (1,*) v0 59 READ (1,*) tau 60 READ (1,*) g 61 CLOSE (1) 62 RETURN 63 END SUBROUTINE input 64! 65 FUNCTION rhs (dt,v,tau,g) 66 IMPLICIT NONE 67 REAL, INTENT (IN) :: dt,tau,g,v 68 REAL :: rhs rhs = (- v/ tau + g) * dt RETURN 73 END FUNCTION rhs 74! 75 SUBROUTINE write_sol (x,ye,ya, err ) 76 IMPLICIT NONE 77 REAL, INTENT (IN)::x,ye,ya, err OPEN ( UNIT =1, FILE = output. dat, STATUS = unknown,action = write, POSITION = append ) 80 WRITE (1,*) x,ye,ya, err 81 CLOSE (1) RETURN 84 END SUBROUTINE write_ sol 85! 3.7 Al problema della sezione precedente, 3.6 si aggiunga l equazione per la posizione della particella: dx p dt = v p (3.10) x p (0) = 0 (3.11) 21

22 La soluzione esatta per questa nuova equazione : ( )] x p (t) = τ p g [t + τ p e t/τp 1 (3.12) 1 PROGRAM main 2 IMPLICIT NONE 3 INTEGER, PARAMETER :: Nt = INTEGER :: n 5 REAL :: x,v,t,tau,x0,v0,g 6 REAL :: Dt, v_old, v_new 7 REAL :: x_old, x_new 8 REAL :: rhs_x, rhs_v, t_max, t_min 9 REAL :: error, err_max error = err_max = CALL input ( t_min, t_max,tau,g,v0,x0) 15 Dt =( t_max - t_min )/ float (Nt) 16 v_old =v CALL write_sol ( t_min,v0,v0,x0,x0) DO n=1, Nt 21 t= t_min +Dt*n 22 CALL exact_sol (v,x,t,v0,tau,g) v_new = v_old + rhs_v (Dt, v_old,tau,g) 25 x_new = x_old + rhs_x ( Dt, v_old ) CALL write_sol (t,v,v_new,x, x_new ) v_old = v_new 30 x_old = x_new 31 ENDDO WRITE (*,*) ERRORE MAX,Dt, err_max 34 WRITE (*,*) Fine della simulazione STOP 37 END PROGRAM main 38! 39! 40 SUBROUTINE exact_sol (v,x,t,v0,tau,g) 41 IMPLICIT NONE 42 REAL, INTENT (IN):: v0,t,tau,g 43 REAL, INTENT ( OUT ):: v,x x = tau *g*(t+ tau *( exp (-t/ tau ) -1.)) 46 v = (1. - exp (-t/ tau ))*g* tau RETURN 49 END SUBROUTINE exact_ sol 50! 51 SUBROUTINE input ( t_min, t_max,tau,g,v0,x0) 52 IMPLICIT NONE 22

23 53 REAL, INTENT ( OUT ):: x0,v0,tau,g,t_min, t_max OPEN ( UNIT =1, FILE = input. dat, STATUS = old,action = read ) 56 READ (1,*) t_min 57 READ (1,*) t_max 58 READ (1,*) x0 59 READ (1,*) v0 60 READ (1,*) tau 61 READ (1,*) g 62 CLOSE (1) 63 RETURN 64 END SUBROUTINE input 65! 66 FUNCTION rhs_v (dt,v,tau,g) 67 IMPLICIT NONE 68 REAL, INTENT (IN) :: dt,tau,g,v 69 REAL :: rhs_v rhs_v = (- v/ tau + g) * dt RETURN 74 END FUNCTION rhs_v 75! 76 FUNCTION rhs_x ( dt, v) 77 IMPLICIT NONE 78 REAL, INTENT (IN) :: dt,v 79 REAL :: rhs_x rhs_x = v * Dt RETURN 84 END FUNCTION rhs_x 85! 86 SUBROUTINE write_sol (x,ye,ya,xe,xa) 87 IMPLICIT NONE 88 REAL, INTENT (IN)::x,ye,ya,xe,xa OPEN ( UNIT =1, FILE = output. dat, STATUS = unknown,action = write, POSITION = append ) 91 WRITE (1,*) x,ye,ya,xe,xa 92 CLOSE (1) RETURN 95 END SUBROUTINE write_ sol 96! 23

24 Chapter 4 Soluzione di PDE 4.1 Scrivere un programma per il calcolo della soluzione dell equazione di convezione lineare se ne confronti il risultato approssimato con quello analitico. Il sistema differenziale da risolvere : u t + a u = 0 x [0, 1] [0, 10] (4.1) u(0, t) = 0 (4.2) u(x, 0) = u 0 (x) = max [0, (x 0.25)(0.5 x)] (4.3) Scrivere il risultato su diversi file per diversi istanti temporali ed integrare il sistema con un metodo esplicito accurato al primo ordine nel tempo e nello spazio. 1!. file : eulero_upwind. f90 2!. This program applies the eulero integration to the 3!. linear convection partial differential equation 4 PROGRAM main 5!. 6 IMPLICIT NONE 7 INTEGER :: it, j 8 INTEGER :: itmin, itmax, itout 9 INTEGER, PARAMETER :: Nx =100, Ng =1 10!. 11 REAL, DIMENSION (1 - Ng:Nx+Ng):: v_new, v_old, v_exact,x 12 REAL :: delta_t, delta_x, a_conv,rhs, rhs_uw, rhs_uw2 13 REAL :: error, error_max,time,v0 14!. 15! metric definition 16 CALL griglia (Nx,Ng,x, delta_x ) 17!. 18! some initializations 19 DO j=1 -ng,nx+ng 20 v_old (j)=v0(x(j)) 21 ENDDO 22 error =0. 23 error_ max = !. 25! read on file input. dat 26 CALL input ( itmin, itmax, itout, a_conv, delta_t ) 27!. 24

25 28! compute maximun number of iterations and open write unit 29!. 30 write (*,*) cfl, delta_t * a_conv / delta_x 31 CALL write_disk (x,v_old, v_old,0,nx,ng) 32 DO it = itmin, itmax 33 DO j=1, nx 34 rhs = rhs_uw ( v_old (j),v_old (j -1),a_conv, delta_x ) 35 v_new ( j) = v_old ( j) + delta_t * rhs 36 ENDDO 37 time = it* delta_t 38!. boundary conditions 39 DO j=1 -ng,0 40 v_new (j) =0. 41 ENDDO 42!. update the solution 43 DO j=1 -ng,nx+ng 44 v_old (j)= v_new (j) 45 ENDDO 46!. compute the error 47 CALL exact_sol (Nx,Ng,x,time, a_conv, v_exact ) error =0. 50 DO j=1, Nx 51 error = error + abs ( v_new (j)-v_exact (j)) 52 ENDDO 53 error_max = max ( error_max, error / float (Nx)) 54!. write on disk 55 if ( mod (it, itout ).eq.0) CALL write_disk (x,v_new, v_exact,it,nx,ng) 56 ENDDO WRITE (*,*) dt, error =,delta_t, error_max 59 WRITE (*,*) solution stored in file velocity. dat 60 WRITE (*,*) Simulation ended! 61 STOP 62 END 63!. 64!. 65!. 66!. 67 FUNCTION rhs_uw (vj,vjm,a,dx) 68 IMPLICIT NONE 69 REAL :: rhs_uw,vj,vjm,a,dx rhs_uw =-a*(vj - vjm )/Dx RETURN 74 END 75!. 76!. 77 FUNCTION v0( x) 78 IMPLICIT NONE 79 REAL :: v0,x,fx fx =(.25 - x)*(x -.5) v0=max (0., fx) 25

26 84 85 RETURN 86 END 87!. 88!. 89 SUBROUTINE exact_sol (Nx,Ng,x,time, a_conv, v_exact ) IMPLICIT NONE 92 INTEGER :: Nx,Ng,j 93 REAL, DIMENSION (1 - ng:nx+ng):: x, v_exact 94 REAL :: v0, appo, time, a_conv DO j=1 -ng,nx+ng 97 appo =x(j)-a_conv * time 98 v_exact (j)=v0( appo ) 99 ENDDO RETURN 102 END 103!. 104!. 105 SUBROUTINE write_disk (x,v,u,it,nx,ng) IMPLICIT NONE 108 INTEGER :: it,nx,ng,j 109 REAL, DIMENSION (1 - ng:nx+ng):: x,v,u 110 CHARACTER (32) :: opfile opfile = bcl dat 113 WRITE ( opfile (4:11),1000) it 114!!!!! WRITE ( opfile (4:11), (i8.8) ) it 115 opfile =./ DATA / // opfile FORMAT ( i8.8) OPEN ( UNIT =13, FILE = opfile, STATUS = unknown,action = write ) 119 DO j=1 -Ng,Nx 120 WRITE (13,*) x(j),v(j),u(j) 121 ENDDO 122 CLOSE (13) RETURN 125 END 126!. 127!. 128 SUBROUTINE griglia (Nx,Ng,x, delta_x ) 129 IMPLICIT NONE 130 INTEGER Nx,Ng,j 131 REAL, DIMENSION (1 - ng:nx+ng):: x 132 REAL L, delta_x 133 L = delta_x =L/ float (Nx +1) DO j=1 -ng,nx+ng 137 x( j) =j* delta_x 138 ENDDO

27 140 RETURN 141 END 142!. 143!. 144 SUBROUTINE input ( itmin, itmax, itout, a_conv, delta_t ) 145 IMPLICIT NONE 146 INTEGER :: itmin, itmax, itout 147 REAL :: a_conv, delta_t 148 OPEN ( UNIT =1, FILE = input. dat,status = old,action = read ) 149 READ (1,*) itmin 150 READ (1,*) itmax 151 READ (1,*) itout 152 READ (1,*) a_conv 153 READ (1,*) delta_t 154 CLOSE (1) 155 RETURN 156 END SUBROUTINE input 4.2 Integrare il sistema della sezione precedente, 4.1, con un metodo esplicito accurato al primo ordine nel tempo e al secondo ordine nello spazio. 1!. file : eulero_upwind2. f90 2!. This program applies the eulero integration to the 3!. linear convection partial differential equation 4 PROGRAM main 5!. 6 IMPLICIT NONE 7 INTEGER :: it, j 8 INTEGER :: itmin, itmax, itout 9 INTEGER, PARAMETER :: Nx =100, Ng =2 10!. 11 REAL, DIMENSION (1 - Ng:Nx+Ng):: v_new, v_old, v_exact,x 12 REAL :: delta_t, delta_x, a_conv,rhs, rhs_uw, rhs_uw2 13 REAL :: error, error_max,time,v0 14!. 15! metric definition 16 CALL griglia (Nx,Ng,x, delta_x ) 17!. 18! some initializations 19 DO j=1 -ng,nx+ng 20 v_old (j)=v0(x(j)) 21 ENDDO 22 error =0. 23 error_ max = !. 25! read on file eulero_ stokes. dat 26 CALL input ( itmin, itmax, itout, a_conv, delta_t ) 27!. 28! compute maximun number of iterations and open write unit 29!. 30 write (*,*) cfl, delta_t * a_conv / delta_x 31 CALL write_disk (x,v_old, v_old,0,nx,ng) 32 DO it = itmin, itmax 27

28 33 DO j=1, nx 34 rhs = rhs_uw2 ( v_old (j),v_old (j -1),v_old (j -2),a_conv, delta_x ) 35 v_new ( j) = v_old ( j) + delta_t * rhs 36 ENDDO 37 time = it* delta_t 38!. boundary conditions 39 DO j=1 -ng,0 40 v_new (j) =0. 41 ENDDO 42!. update the solution 43 DO j=1 -ng,nx+ng 44 v_old (j)= v_new (j) 45 ENDDO 46!. compute the error 47 CALL exact_sol (Nx,Ng,x,time, a_conv, v_exact ) error =0. 50 DO j=1, Nx 51 error = error + abs ( v_new (j)-v_exact (j)) 52 ENDDO 53 error_max = max ( error_max, error / float (Nx)) 54!. write on disk 55 if ( mod (it, itout ).eq.0) CALL write_disk (x,v_new, v_exact,it,nx,ng) 56 ENDDO WRITE (*,*) dt, error =,delta_t, error_max 59 WRITE (*,*) solution stored in file velocity. dat 60 WRITE (*,*) Simulation ended! 61 STOP 62 END 63!. 64!. 65!. 66!. 67 FUNCTION rhs_uw2 (vj,vjm,vjmm,a,dx) 68 IMPLICIT NONE 69 REAL :: rhs_uw2,vj,vjm,vjmm,a,dx rhs_uw2 =-a *(3.* vj -4.* vjm + vjmm ) /(2.* Dx) RETURN 74 END 75!. 76!. 77 FUNCTION v0( x) 78 IMPLICIT NONE 79 REAL :: v0,x,fx fx =(.25 - x)*(x -.5) v0=max (0., fx) RETURN 86 END 87!. 88!. 28

29 89 SUBROUTINE exact_sol (Nx,Ng,x,time, a_conv, v_exact ) IMPLICIT NONE 92 INTEGER :: Nx,Ng,j 93 REAL, DIMENSION (1 - ng:nx+ng):: x, v_exact 94 REAL :: v0, appo, a_conv, time DO j=1 -ng,nx+ng 97 appo =x(j)-a_conv * time 98 v_exact (j)=v0( appo ) 99 ENDDO RETURN 102 END 103!. 104!. 105 SUBROUTINE write_disk (x,v,u,it,nx,ng) IMPLICIT NONE 108 INTEGER it,nx,ng,j 109 REAL, DIMENSION (1 - ng:nx+ng):: x,v,u 110 CHARACTER (32) opfile opfile = acl dat 113 WRITE ( opfile (4:11),1000) it 114 opfile =./ DATA / // opfile FORMAT ( i8.8) OPEN ( UNIT =13, FILE = opfile, STATUS = unknown,action = write ) 118 DO j=1 -Ng,Nx 119 WRITE (13,*) x(j),v(j),u(j) 120 ENDDO 121 CLOSE (13) RETURN 124 END 125!. 126!. 127 SUBROUTINE griglia (Nx,Ng,x, delta_x ) 128 IMPLICIT NONE 129 INTEGER :: Nx,Ng,j 130 REAL, DIMENSION (1 - ng:nx+ng):: x 131 REAL :: L, delta_x 132 L = delta_x =L/ float (Nx) DO j=1 -ng,nx+ng 136 x( j) =j* delta_x 137 ENDDO RETURN 140 END 141!. 142!. 143 SUBROUTINE input ( itmin, itmax, itout, a_conv, delta_t ) 144 IMPLICIT NONE 29

30 145 INTEGER :: itmin, itmax, itout 146 REAL :: a_conv, delta_t 147 OPEN ( UNIT =1, FILE = input. dat,status = old,action = read ) 148 READ (1,*) itmin 149 READ (1,*) itmax 150 READ (1,*) itout 151 READ (1,*) a_conv 152 READ (1,*) delta_t 153 CLOSE (1) 154 RETURN 155 END SUBROUTINE input 4.3 Scrivere un programma per il calcolo della soluzione dell equazione del calore se ne confronti il risultato approssimato con quello analitico. Il sistema differenziale da risolvere : u t = ν 2 u x 2 [0, 1] [0, 10] (4.4) u(0, t) = 100 (4.5) u(1, t) = 100 (4.6) 400 u(x, 0) = u 0 (x) = u(0, t) + [v(1, t) v(0, t)] x sin((2 m 1)πx) (2 m 1)π (4.7) La cui soluzione esatta : u(x, t) = u(0, t) + [v(1, t) v(0, t)] x m=1 m=1 400 (2 m 1)π sin((2 m 1)πx) exp( ν (2 m 1)2 π 2 t) Scrivere il risultato su diversi file per diversi istanti temporali ed integrare il sistema con un metodo esplicito accurato al primo ordine nel tempo e al secondo ordine nello spazio. 1!. file : FTCS. f90 2!. This program applies the eulero explicit time integration 3!. and a second order spatial discretization to the 4!. Fourier partial differential equation 5 PROGRAM main 6!. 7 IMPLICIT NONE 8 INTEGER :: it, j 9 INTEGER :: itmin, itmax, itout 10 INTEGER, PARAMETER :: Nx =20, Ng =1 11!. 12 REAL, DIMENSION (1 - Ng:Nx+Ng):: v_new, v_old, v_exact,x 13 REAL :: delta_t, delta_x,nu, rhs_cent,rhs,va,vb 14 REAL :: error, error_max,time,v0 15!. 16! metric definition 17 CALL griglia (Nx,Ng,x, delta_x ) 18!. 19! read on file eulero_ stokes. dat 20 CALL input ( itmin, itmax, itout,nu, delta_t,va,vb) 21!. 30

31 22! some initializations 23 call exact_sol (Nx,Ng,x,0.,nu,va,vb, v_exact ) DO j=1, nx 26 v_old (j) =0.! v_exact (j) 27 ENDDO 28 v_old (0) =1. 29 v_old (Nx +1) = error =0. 32 error_ max = !. 34! compute maximun number of iterations and open write unit 35!. 36 write (*,*) cfl, delta_t *nu/ delta_x **2 37 CALL write_disk (x,v_old, v_old,0,nx,ng) 38 DO it = itmin, itmax 39 DO j=1, nx 40 rhs = rhs_cent ( v_old (j +1),v_old (j),v_old (j -1),nu, delta_x ) 41 v_new ( j) = v_old ( j) + delta_t * rhs 42 ENDDO 43 time = it* delta_t 44!. boundary conditions 45 DO j=1 -ng,0 46 v_new ( j) = v_new (Nx +1+ j) = ENDDO 49!. update the solution 50 DO j=1 -ng,nx+ng 51 v_old (j)= v_new (j) 52 ENDDO 53!. compute the error 54 CALL exact_sol (Nx,Ng,x,time,nu,va,vb, v_exact ) error =0. 57 DO j=1, Nx 58 error = error + abs ( v_new (j)-v_exact (j)) 59 ENDDO 60 error_max = max ( error_max, error / float (Nx)) 61!. write on disk 62 if ( mod (it, itout ).eq.0) CALL write_disk (x,v_new, v_exact,it,nx,ng) 63 ENDDO WRITE (*,*) dt, error =,delta_t, error_max 66 WRITE (*,*) Simulation ended! 67 STOP 68 END 69!. 70!. 71!. 72!. 73 FUNCTION rhs_cent (vjp,vj,vjm,a,dx) 74 IMPLICIT NONE 75 REAL :: rhs_cent,vjp,vj,vjm,a,dx rhs_cent =a*( vjp -2.* vj+vjm )/Dx **2 31

32 78 79 RETURN 80 END 81!. 82!. 83 SUBROUTINE exact_sol (Nx,Ng,x,time,nu,va,vb, v_exact ) IMPLICIT NONE 86 INTEGER :: Nx,Ng,j, MW, m 87 REAL, DIMENSION (1 - ng:nx+ng):: x, v_exact 88 REAL :: appo, va, vb, vs, appo2,time,nu 89 REAL, PARAMETER :: pi= acos ( -1.) MW = DO j=1 -ng,nx+ng 94 vs = va + ( vb - va) * x( j) 95 appo2 = DO m = 1, MW 97 appo = (2 * m -1) * pi 98 appo2 = appo / appo * sin ( appo * x( j)) & 99 * exp (-nu* appo **2* time ) 100 ENDDO v_exact ( j) = - appo2 + vs 103 ENDDO RETURN 106 END 107!. 108!. 109 SUBROUTINE write_disk (x,v,u,it,nx,ng) IMPLICIT NONE 112 INTEGER :: it,nx,ng,j 113 REAL, DIMENSION (1 - ng:nx+ng):: x,v,u 114 CHARACTER (32) :: opfile opfile = acl dat 117 WRITE ( opfile (4:11),1000) it 118 opfile =./ DATA / // opfile FORMAT ( i8.8) OPEN ( UNIT =13, FILE = opfile, STATUS = unknown,action = write ) 122 DO j=1 -Ng,Nx+ng 123 WRITE (13,*) x(j),v(j),u(j) 124 ENDDO 125 CLOSE (13) RETURN 128 END 129!. 130!. 131 SUBROUTINE griglia (Nx,Ng,x, delta_x ) 132 IMPLICIT NONE 133 INTEGER :: Nx,Ng,j 32

33 134 REAL, DIMENSION (1 - ng:nx+ng):: x 135 REAL :: L, delta_x 136 L = delta_x =L/ float (Nx +1) DO j=1 -ng,nx+ng 140 x( j) =j* delta_x 141 ENDDO RETURN 144 END 145!. 146!. 147 SUBROUTINE input ( itmin, itmax, itout,nu, delta_t,va,vb) 148 IMPLICIT NONE 149 INTEGER :: itmin, itmax, itout 150 REAL :: nu, delta_t,va,vb 151 OPEN ( UNIT =1, FILE = input. dat,status = old,action = read ) 152 READ (1,*) itmin 153 READ (1,*) itmax 154 READ (1,*) itout 155 READ (1,*) nu 156 READ (1,*) delta_t 157 READ (1,*) va 158 READ (1,*) vb 159 CLOSE (1) 160 RETURN 161 END SUBROUTINE input 4.4 Scrivere un programma per il calcolo della soluzione dell equazione del calore, sistema differenziale presentato nella $ 4.3, con un metodo implicito applicando il metodo di Jacobi per la soluzione del sistema lineare, 1!. file : jacobi_btcs. f90 2!. This program uses the Jacobi method to integrate 3!. the heat equation with an implicit method. 4 PROGRAM main 5!. 6 IMPLICIT NONE 7 INTEGER :: it, j 8 INTEGER :: itmin, itmax, itout 9 INTEGER, PARAMETER :: Nx =20, Ng =1 10!. 11 REAL, DIMENSION (1 - Ng:Nx+Ng):: v_new, v_old, v_exact,x 12 REAL :: delta_t, delta_x,nu, rhs_cent,rhs,va,vb 13 REAL :: error, error_max,time,v0 14!. 15! metric definition 16 CALL griglia (Nx,Ng,x, delta_x ) 17!. 18! read on file eulero_ stokes. dat 19 CALL input ( itmin, itmax, itout,nu, delta_t,va,vb) 20!. 33

34 21! some initializations 22 call exact_sol (Nx,Ng,x,0.,nu,va,vb, v_exact ) 23 DO j=1 -ng,nx+ng 24 v_old (j)= v_exact (j) 25 ENDDO 26 error =0. 27 error_ max = !. 29 write (*,*) cfl, delta_t *nu/ delta_x **2 30 CALL write_disk (x,v_old, v_old,0,nx,ng) 31 DO it = itmin, itmax call jacobi (Nx,Ng, v_old, v_new, delta_x, delta_t,nu) 34 time = it* delta_t 35 36!. boundary conditions 37 DO j=1 -ng,0 38 v_new ( j) = va 39 v_new (Nx +1+ j) = vb 40 ENDDO 41 42!. update the solution 43 DO j=1 -ng,nx+ng 44 v_old (j)= v_new (j) 45 ENDDO 46 47!. compute the error 48 CALL exact_sol (Nx,Ng,x,time,nu,va,vb, v_exact ) error =0. 51 DO j=1, Nx 52 error = error + abs ( v_new (j)-v_exact (j)) 53 ENDDO 54 error_max = max ( error_max, error / float (Nx)) 55!. write on disk 56 if ( mod (it, itout ).eq.0) CALL write_disk (x,v_new, v_exact,it,nx,ng) 57 ENDDO WRITE (*,*) dt, error =,delta_t, error_max 60 WRITE (*,*) Simulation ended! 61 STOP 62 END 63!. 64!. 65!. 66!. 67 SUBROUTINE jacobi (nx,ng, v_old, v_new, delta_x,dt,nu) 68!. 69 IMPLICIT NONE 70 INTEGER :: nx,ng,i,j,m, itmax 71 REAL, DIMENSION (1 - ng:nx+ng),intent ( OUT ):: v_new 72 REAL, DIMENSION (1 - ng:nx+ng),intent (IN):: v_old 73 REAL, DIMENSION (1 - ng:nx+ng):: v_it 74 REAL :: tol, error,appo, delta_x, cfl, dt, nu tol =1. E

35 77 m=0 78 cfl = Dt*nu/ delta_x ** DO j=1 -ng,nx+ng 82 v_it (j)= v_old (j) 83 ENDDO DO 86 error =0. 87 DO j=1, nx 88 v_new (j)=( v_old (j)+ cfl *( v_it (j -1) + v_it (j +1) )) /(1.+ cfl *2.) 89 error = error + abs ( v_new (j)-v_it (j)) 90 ENDDO 91 if ( error / float (Nx).lt.tol ) then 92 exit 93 else 94 DO j=1, nx 95 v_it (j)= v_new (j) 96 ENDDO 97 endif 98 m = m ENDDO 100 write (*,*) it=,m, error =,error 101!. 102 RETURN 103 END SUBROUTINE jacobi 104!. 105!. 106 SUBROUTINE exact_sol (Nx,Ng,x,time,nu,va,vb, v_exact ) IMPLICIT NONE 109 INTEGER :: Nx,Ng,j, MW, m 110 REAL, DIMENSION (1 - ng:nx+ng):: x, v_exact 111 REAL :: appo, va, vb, vs, appo2,time,nu 112 REAL, PARAMETER :: pi= acos ( -1.) MW = DO j=1 -ng,nx+ng 117 vs = va + ( vb - va) * x( j) 118 appo2 = DO m = 1, MW 120 appo = (2 * m -1) * pi 121 appo2 = appo2 + 4./ appo * sin ( appo * x( j)) & 122 * exp (-nu* appo **2* time ) 123 ENDDO v_exact ( j) = - appo2 + vs 126 ENDDO RETURN 129 END SUBROUTINE exact_ sol 130!. 131!. 132 SUBROUTINE write_disk (x,v,u,it,nx,ng) 35

36 IMPLICIT NONE 135 INTEGER :: it,nx,ng,j 136 REAL, DIMENSION (1 - ng:nx+ng):: x,v,u 137 CHARACTER (32) :: opfile opfile = acl dat 140 WRITE ( opfile (4:11),1000) it 141 opfile =./ DATA / // opfile FORMAT ( i8.8) OPEN ( UNIT =13, FILE = opfile, STATUS = unknown,action = write ) 145 DO j=1 -Ng,Nx+ng 146 WRITE (13,*) x(j),v(j),u(j) 147 ENDDO 148 CLOSE (13) RETURN 151 END SUBROUTINE write_ disk 152!. 153!. 154 SUBROUTINE griglia (Nx,Ng,x, delta_x ) 155 IMPLICIT NONE 156 INTEGER :: Nx,Ng,j 157 REAL, DIMENSION (1 - ng:nx+ng):: x 158 REAL :: L, delta_x 159 L = delta_x =L/ float (Nx +1) DO j=1 -ng,nx+ng 163 x( j) =j* delta_x 164 ENDDO RETURN 167 END SUBROUTINE griglia 168!. 169!. 170 SUBROUTINE input ( itmin, itmax, itout,nu, delta_t,va,vb) 171 IMPLICIT NONE 172 INTEGER :: itmin, itmax, itout 173 REAL :: nu, delta_t,va,vb 174 OPEN ( UNIT =1, FILE = input. dat,status = old,action = read ) 175 READ (1,*) itmin 176 READ (1,*) itmax 177 READ (1,*) itout 178 READ (1,*) nu 179 READ (1,*) delta_t 180 READ (1,*) va 181 READ (1,*) vb 182 CLOSE (1) 183 RETURN 184 END SUBROUTINE input 36

37 4.5 Scrivere un programma per il calcolo della soluzione dell equazione del calore, sistema differenziale presentato nella $ 4.3, con un metodo implicito applicando il metodo di Gauss-Seidel per la soluzione del sistema lineare, 1!. file : gauss_seidel_btcs. f90 2!. This program uses the Gauss - Seidel method to integrate 3!. the heat equation with an implicit method. 4 PROGRAM main 5!. 6 IMPLICIT NONE 7 INTEGER :: it, j 8 INTEGER :: itmin, itmax, itout 9 INTEGER, PARAMETER :: Nx =20, Ng =1 10!. 11 REAL, DIMENSION (1 - Ng:Nx+Ng):: v_new, v_old, v_exact,x 12 REAL :: delta_t, delta_x,nu, rhs_cent,rhs,va,vb 13 REAL :: error, error_max,time,v0 14!. 15! metric definition 16 CALL griglia (Nx,Ng,x, delta_x ) 17!. 18! read on file eulero_ stokes. dat 19 CALL input ( itmin, itmax, itout,nu, delta_t,va,vb) 20!. 21! some initializations 22 call exact_sol (Nx,Ng,x,0.,nu,va,vb, v_exact ) 23 DO j=1 -ng,nx+ng 24 v_old (j)= v_exact (j) 25 ENDDO 26 error =0. 27 error_ max = !. 29 write (*,*) cfl, delta_t *nu/ delta_x **2 30 CALL write_disk (x,v_old, v_old,0,nx,ng) 31 DO it = itmin, itmax call gauss_seidel (Nx,Ng, v_old, v_new, delta_x, delta_t,nu) 34 time = it* delta_t 35 36!. boundary conditions 37 DO j=1 -ng,0 38 v_new ( j) = va 39 v_new (Nx +1+ j) = vb 40 ENDDO 41 42!. update the solution 43 DO j=1 -ng,nx+ng 44 v_old (j)= v_new (j) 45 ENDDO 46 47!. compute the error 48 CALL exact_sol (Nx,Ng,x,time,nu,va,vb, v_exact ) error =0. 51 DO j=1, Nx 37

38 52 error = error + abs ( v_new (j)-v_exact (j)) 53 ENDDO 54 error_max = max ( error_max, error / float (Nx)) 55!. write on disk 56 if ( mod (it, itout ).eq.0) CALL write_disk (x,v_new, v_exact,it,nx,ng) 57 ENDDO WRITE (*,*) dt, error =,delta_t, error_max 60 WRITE (*,*) Simulation ended! 61 STOP 62 END 63!. 64!. 65!. 66!. 67 SUBROUTINE gauss_seidel (nx,ng, v_old, v_new, delta_x,dt,nu) 68!. 69 IMPLICIT NONE 70 INTEGER nx,ng,i,j,m, itmax 71 REAL, DIMENSION (1 - ng:nx+ng),intent ( OUT ):: v_new 72 REAL, DIMENSION (1 - ng:nx+ng),intent (IN):: v_old 73 REAL, DIMENSION (1 - ng:nx+ng):: v_it 74 REAL tol, error,appo, delta_x, cfl, dt, nu tol =1. E m=0 78 cfl = Dt*nu/ delta_x ** DO j=1 -ng,nx+ng 82 v_it (j)= v_old (j) 83 ENDDO DO 86 error =0. 87 DO j=1, nx 88 v_new (j)=( v_old (j)+ cfl *( v_new (j -1) + v_it (j +1) )) /(1.+ cfl *2.) 89 error = error + abs ( v_new (j)-v_it (j)) 90 ENDDO 91 if ( error / float (Nx).lt.tol ) then 92 exit 93 else 94 DO j=1, nx 95 v_it (j)= v_new (j) 96 ENDDO 97 endif 98 m = m ENDDO 100 write (*,*) it=,m, error =,error 101!. 102 RETURN 103 END SUBROUTINE gauss_ seidel 104!. 105!. 106 SUBROUTINE exact_sol (Nx,Ng,x,time,nu,va,vb, v_exact )

39 108 IMPLICIT NONE 109 INTEGER :: Nx,Ng,j, MW, m 110 REAL, DIMENSION (1 - ng:nx+ng):: x, v_exact 111 REAL :: appo, va, vb, vs, appo2, time, nu 112 REAL, PARAMETER :: pi= acos ( -1.) MW = DO j=1 -ng,nx+ng 117 vs = va + ( vb - va) * x( j) 118 appo2 = DO m = 1, MW 120 appo = (2 * m -1) * pi 121 appo2 = appo2 + 4./ appo * sin ( appo * x( j)) & 122 * exp (-nu* appo **2* time ) 123 ENDDO v_exact ( j) = - appo2 + vs 126 ENDDO RETURN 129 END SUBROUTINE exact_ sol 130!. 131!. 132 SUBROUTINE write_disk (x,v,u,it,nx,ng) IMPLICIT NONE 135 INTEGER :: it,nx,ng,j 136 REAL, DIMENSION (1 - ng:nx+ng):: x,v,u 137 CHARACTER (32) opfile opfile = acl dat 140 WRITE ( opfile (4:11),1000) it 141 opfile =./ DATA / // opfile FORMAT ( i8.8) OPEN ( UNIT =13, FILE = opfile, STATUS = unknown,action = write ) 145 DO j=1 -Ng,Nx+ng 146 WRITE (13,*) x(j),v(j),u(j) 147 ENDDO 148 CLOSE (13) RETURN 151 END SUBROUTINE write_ disk 152!. 153!. 154 SUBROUTINE griglia (Nx,Ng,x, delta_x ) 155 IMPLICIT NONE 156 INTEGER :: Nx,Ng,j 157 REAL, DIMENSION (1 - ng:nx+ng):: x 158 REAL :: L, delta_x 159 L = delta_x =L/ float (Nx +1) DO j=1 -ng,nx+ng 163 x( j) =j* delta_x 39

40 164 ENDDO RETURN 167 END SUBROUTINE griglia 168!. 169!. 170 SUBROUTINE input ( itmin, itmax, itout,nu, delta_t,va,vb) 171 IMPLICIT NONE 172 INTEGER :: itmin, itmax, itout 173 REAL :: nu, delta_t,va,vb 174 OPEN ( UNIT =1, FILE = input. dat,status = old,action = read ) 175 READ (1,*) itmin 176 READ (1,*) itmax 177 READ (1,*) itout 178 READ (1,*) nu 179 READ (1,*) delta_t 180 READ (1,*) va 181 READ (1,*) vb 182 CLOSE (1) 183 RETURN 184 END SUBROUTINE input 4.6 Risolvere il seguente problema di Poisson attraverso il metodo di Jacobi/Gauss-Seidel: La soluzione esatta : d 2 u = 1 x [ 1.1]u( 1, t) = u(1, t) = 0 (4.8) dx2 u(x, t) = 1 2 (1 x2 ) Si considerino i metodi di risoluzione del sistema algebrico lineare convergenti quando due iterate successive presentano una differenza pari al pi a Scrivere il numero di iterate necessarie ad ogni metodo per la convergenza. 1!. file : poisson. f90 2!. This program applies the Jacobi / Gauss - Seidel 3!. iterative method to integrate 4!. an ordinary differential equation of second order 5 PROGRAM poisson 6!. 7 IMPLICIT NONE 8 INTEGER :: i,j 9 INTEGER :: ntime, nout 10 INTEGER, PARAMETER :: Nx =100, Ng =1 11!. 12 REAL, DIMENSION (1 - ng:nx+ng):: v_new, v_old, v_exact, x 13 REAL :: delta_t, delta_x,rhs, rhs_cent 14 REAL :: time, cfl 15 REAL :: error, error_ max 16!. 17! metric definition 18 call griglia (Nx,Ng,x, delta_x ) 19!. 40

41 20! some initializations 21 call exact_sol (Nx,Ng,x,0., v_exact ) DO i=1 -Ng,Nx+Ng 24 v_old (i) =0. 25 ENDDO 26 error =0. 27 error_ max = ! ! call jacobi (nx,ng, v_old, v_new, delta_x ) 31 call gauss_seidel (nx,ng, v_old, v_new, delta_x ) error =0. 34 DO j=1, Nx 35 error = error + abs ( v_new (j)-v_exact (j)) 36 ENDDO 37 error_max = max ( error_max, error / float (Nx)) 38 39!. write on disk 40 call write_disk (x,v_new, v_exact,0,nx,ng) WRITE (*,*) dt, error =,delta_t, error_max 43 WRITE (*,*) solution stored in file velocity. dat 44 WRITE (*,*) the end falks! 45 STOP 46!. 47 END 48!. 49!. 50!. 51!. 52 SUBROUTINE jacobi (nx,ng, v_old, v_new, delta_x ) 53!. 54 IMPLICIT NONE 55 INTEGER :: nx,ng,i,j,m, itmax 56 REAL, DIMENSION (1 - Ng:Nx+Ng):: v_new, v_old 57 REAL :: tol, error,appo, delta_x tol =1. E m= DO 63 error =0. 64 DO j=1, nx 65 v_new (j)=( - delta_x **2+ v_old (j -1) + v_old (j +1) ) /2. 66 error = error + abs ( v_new (j)-v_old (j)) 67 ENDDO 68 do j=1 -ng,0 69 v_new (j) =0. 70 v_new (-j+nx +1) =0. 71 enddo 72 if ( error / float (Nx).lt.tol ) then 73 exit 74 else 75 DO j=1, nx 41

42 76 v_old (j)= v_new (j) 77 ENDDO 78 endif 79 m = m ENDDO 81 write (*,*) it=,m, error =,error 82!. 83 RETURN 84 END SUBROUTINE jacobi 85!. 86!. 87 SUBROUTINE gauss_seidel (nx,ng, v_old, v_new, delta_x ) 88!. 89 IMPLICIT NONE 90 INTEGER :: nx,ng,i,j,m, itmax 91 REAL, DIMENSION (1 - ng:nx+ng):: v_new, v_old 92 REAL :: tol, error,appo, delta_x tol =1. E itmax =40 96 m= write (*,*) sono qui 100 DO 101 error = DO j=1, nx 103 v_new (j)=( - delta_x **2+ v_new (j -1) + v_old (j +1) ) / error = error + abs ( v_new (j)-v_old (j)) 105 ENDDO 106 if ( error.lt.tol ) then 107 exit 108 else 109 DO j=1, nx 110 v_old (j)= v_new (j) 111 ENDDO 112 endif 113 m = m ENDDO 115 write (*,*) it=,m, error =,error 116!. 117 RETURN 118 END SUBROUTINE gauss_ seidel 119!. 120!. 121 SUBROUTINE exact_sol (Nx,Ng,x,time, v_exact ) IMPLICIT NONE 124 INTEGER :: Nx,Ny,Ng,i,j,WN,m,n 125 REAL, DIMENSION (1 - ng:nx+ng)::x, v_exact 126 REAL :: appo, appo1, appo2, pi, time WN = pi = acos ( -1.) DO i=1 -Ng,Nx+Ng 42

43 132 v_exact (i)= 0.5*( x(i) **2-1.) 133 ENDDO RETURN 136 ENDSUBROUTINE exact_ sol 137!. 138!. 139 SUBROUTINE write_disk (x,v,u,it,nx,ng) IMPLICIT NONE 142 INTEGER :: it,nx,ny,ng,i,j 143 REAL, DIMENSION (1 - ng:nx+ng):: x,v,u 144 CHARACTER (32) :: opfile opfile = acl dat 147 WRITE ( opfile (4:11),1000) it FORMAT ( i8.8) OPEN ( UNIT =13, FILE = opfile, STATUS = unknown,action = write ) DO i=1 -Ng,Nx+ng 153 WRITE (13,*) x(i),v(i),u(i) 154 ENDDO CLOSE (13) RETURN 159 END SUBROUTINE write_ disk 160!. 161!. 162 SUBROUTINE griglia (Nx,Ng,x, delta_x ) 163 IMPLICIT NONE 164 INTEGER :: Nx,j,Ng 165 REAL, DIMENSION (1 - ng:nx+ng):: x 166 REAL :: L, delta_x 167 L = delta_x =L/ float (Nx +1) DO j=1 -ng,nx+ng 172 x(j) = -1.+ j* delta_x 173 ENDDO RETURN 176 ENDSUBROUTINE griglia 43

PRIMA PROVA SCRITTA: ELENCO DOMANDE

PRIMA PROVA SCRITTA: ELENCO DOMANDE PRIMA PROVA SCRITTA: ELENCO DOMANDE 1) Descrivere la propria esperienza acquisita sullo sviluppo e l uso di modelli numerici applicati alla geofisica Describe your experience acquired in the development

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions

Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions Dipartimento di Matematica Laboratorio di Calcolo Numerico Laboratorio 4: Grafici di convergenza e functions Damiano Pasetto E-mail: pasetto@math.unipd.it Dispense: http://dispense.dmsa.unipd.it/putti/calcolo

Dettagli

Istruzioni condizionali di diramazione in Fortran 90

Istruzioni condizionali di diramazione in Fortran 90 Istruzioni condizionali di diramazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Istruzioni di diramazione DIS - Dipartimento

Dettagli

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica

Array in Fortran 90. Ing. Luca De Santis. Anno accademico 2006/2007. DIS - Dipartimento di informatica e sistemistica Array in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: array DIS - Dipartimento di informatica e sistemistica 1 / 25 Cosa vedremo

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 4: Functions e metodo di Picard

Laboratorio di Calcolo Numerico Laboratorio 4: Functions e metodo di Picard Laboratorio di Calcolo Numerico Laboratorio 4: Functions e metodo di Picard Andrea Franceschini E-mail: franceschini@dmsa.unipd.it Dispense: http://www.math.unipd.it/ putti/teaching/calcolo ambientale/index.html

Dettagli

Modularizzazione del software

Modularizzazione del software Modularizzazione del software Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: Subroutine e function DIS - Dipartimento di informatica e sistemistica

Dettagli

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN

Breve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...

Dettagli

Strutture di controllo e cicli

Strutture di controllo e cicli AA 2012-2013 IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale IF logico L IF logico rappresenta il tipo piú semplice di istruzione condizionale Sintassi IF ( e s p r e

Dettagli

CAPITOLO 1 Esercizi risolti di programmazione Fortran

CAPITOLO 1 Esercizi risolti di programmazione Fortran CAPITOLO 1 Esercizi risolti di programmazione Fortran In questa appice si propongono testi e risoluzioni di alcuni temi d esame di programmazione apparsi negli ultimi 6 anni nelle prove scritte per Ingegneria

Dettagli

COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici. Appello Straordinario del 05 Marzo 2007 ( )

COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici. Appello Straordinario del 05 Marzo 2007 ( ) COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici Appello Straordinario del 05 Marzo 2007 (09.30 12.30) Esercizio 1 (punti 15) Due file di testo (PAROLE1.TXT e PAROLE2.TXT) contengono un

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 2: Primi programmi in Fortran 90

Laboratorio di Calcolo Numerico Laboratorio 2: Primi programmi in Fortran 90 Laboratorio di Calcolo Numerico Laboratorio 2: Primi programmi in Fortran 90 Andrea Franceschini E-mail: franceschini@dmsa.unipd.it Dispense: http://www.math.unipd.it/ putti/teaching/calcolo ambientale/index.html

Dettagli

e L equazione associata a questa disequazione non è risolvibile in maniera analitica, con metodi numerici 2 si trova n 1754, 21

e L equazione associata a questa disequazione non è risolvibile in maniera analitica, con metodi numerici 2 si trova n 1754, 21 Il file distribuzioni.f90 è strutturato in tre parti. Il primo modulo è necessario per richiedere la precisione desiderata per i real di lavoro module precisione integer,parameter::kr=selected_real_kind(18)

Dettagli

COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici. Appello dell 11 Febbraio 2008 ( )

COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici. Appello dell 11 Febbraio 2008 ( ) COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici Appello dell 11 Febbraio 2008 (15.00 18.00) Esercizio 1 (punti 15) Scrivere in linguaggio fortran un algoritmo capace di eseguire le seguenti

Dettagli

Problema: stampa degli interi compresi tra n e m

Problema: stampa degli interi compresi tra n e m Costrutti imperativi Problema: stampa degli interi compresi tra n e m http://caml.inria.fr/pub/docs/manual-ocaml/libref/pervasives.html Output functions on standard output val print_string: string -> unit

Dettagli

Raccolta di esercizi di Calcolo Numerico Prof. Michela Redivo Zaglia

Raccolta di esercizi di Calcolo Numerico Prof. Michela Redivo Zaglia Raccolta di esercizi di Calcolo Numerico Prof. Michela Redivo Zaglia Nota Bene: Gli esercizi di questa raccolta sono solo degli esempi. Non sono stati svolti né verificati e servono unicamente da spunto

Dettagli

Fortran. Funzioni e Subroutine.

Fortran. Funzioni e Subroutine. Fortran Funzioni e Subroutine http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione Dal Fortran II del 1958, Fortran consente di

Dettagli

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie Complementi di Matematica e Calcolo Numerico A.A. 2014-2015 Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie Cosideriamo il Problema di Cauchy: { y (t) = f(t, y(t)) t I, y(t 0 ) =

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 3: equazioni non lineari

Laboratorio di Calcolo Numerico Laboratorio 3: equazioni non lineari Dipartimento di Matematica Laboratorio di Calcolo Numerico Laboratorio 3: equazioni non lineari Damiano Pasetto E-mail: pasetto@math.unipd.it Dispense: http://dispense.dmsa.unipd.it/putti/calcolo ambientale/index.html

Dettagli

Concetto di stream. c i a o \0. c i a o \0. c i a o \0

Concetto di stream. c i a o \0. c i a o \0. c i a o \0 Concetto di stream Uno stream è un flusso di byte che permette al programma di comunicare con l esterno (es. con periferiche di input/output) c i a o \0 c i a o \0 c i a o \0 Stream di uscita standard

Dettagli

Introduzione al linguaggio Fortran 90

Introduzione al linguaggio Fortran 90 Introduzione al linguaggio Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

Fortran functions: some examples

Fortran functions: some examples Corso di Calcolo Numerico 1 DIMA, Sapienza University of Rome, Italy March 23, 2014 The rst code: assegnazione.f90 1! File : assegnazione. f90 2! Questo programma legge e stampa a schermo un numero 3 PROGRAM

Dettagli

Fortran per Ingegneri

Fortran per Ingegneri Fortran per Ingegneri Lezione 6 A.A. 2013/2014 Ing. Davide Vanzo davide.vanzo@unitn.it Ing. Simone Zen simone.zen@unitn.it ufficio: Laboratorio didattico di modellistica ambientale (2 piano) Tel interno:

Dettagli

Introduzione alle Procedure

Introduzione alle Procedure Introduzione alle Procedure Introduction to Fortran 90 Paolo Ramieri, CINECA Aprile 2014 Organizzazione del programma Schema di un unità di programma Fortran 90 PROGRAM, FUNCTION, SUBROUTINE, MODULE nome

Dettagli

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova

Paolo Bison. Fondamenti di Informatica A.A. 2006/07 Università di Padova I/O in Ftran Paolo Bison Fondamenti di Infmatica A.A. 2006/07 Università di Padova I/O in Ftran, Paolo Bison, FI06, 2007-02-16 p.1 Print e Read sintassi R911 print-stmt is PRINT fmat [, output-item-list

Dettagli

Fisica Computazionale I per Chimici Esercitazioni di Laboratorio a.a. 2006/07 Esercitazione n.2: 23-30/10/06

Fisica Computazionale I per Chimici Esercitazioni di Laboratorio a.a. 2006/07 Esercitazione n.2: 23-30/10/06 Fisica Computazionale I per Chimici Esercitazione n.1: 9-16/10/06 1. Scrivere un programma che determini la precisione della macchina (cioé il massimo valore positivo che sommato all unitá non ne cambi

Dettagli

Capitolo 5 - Funzioni

Capitolo 5 - Funzioni Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 6 Il FORTRAN versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina) G. Mecca Università

Dettagli

Laboratorio di Programmazione(corso A) Laurea in Informatica - A.A. 2000/2001 Docente: A. Lanza

Laboratorio di Programmazione(corso A) Laurea in Informatica - A.A. 2000/2001 Docente: A. Lanza Laboratorio di Programmazione(corso A) Laurea in Informatica - A.A. 2000/2001 Docente: A. Lanza 1.1. Introduzione al linguaggio Pascal Struttura di programma Elementi lessicali: le parole riservate e gli

Dettagli

r fattore di ripetizione w ampiezza di campo m numero minimo cifre da visualizzare d numero cifre decimali Print e Read I/O in Fortran sintassi

r fattore di ripetizione w ampiezza di campo m numero minimo cifre da visualizzare d numero cifre decimali Print e Read I/O in Fortran sintassi I/O in Ftran Print e Read Paolo Bison Fondamenti di Infmatica A.A. 2006/07 Università di Padova R911 print-stmt is PRINT fmat [, output-item-list ] R909 read-stmt is READ ( io-control-spec-list ) [ input-item-list

Dettagli

Esercizio 2 (punti 3) Dire a quale numero decimale corrisponde il seguente numero assegnato in formato IEEE P754:

Esercizio 2 (punti 3) Dire a quale numero decimale corrisponde il seguente numero assegnato in formato IEEE P754: COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici Giovedì 07 Settembre 2006 (09.30 12.30) Esercizio 1 (punti 15) È assegnato un file contenente dati relativi ai prodotti presenti in un magazzino

Dettagli

Implementazione in Fortran del Metodo Runge-Kutta di IV ordine per l Equazione di van der Pol

Implementazione in Fortran del Metodo Runge-Kutta di IV ordine per l Equazione di van der Pol Implementazione in Fortran del Metodo Runge-Kutta di IV ordine per l Equazione di van der Pol Marco Frego 16 marzo 2007 1 Introduzione e commenti sul metodo Utilizzare il metodo Runge-Kutta di IV ordine

Dettagli

Corso di Fondamenti di Informatica prova del 26/03/2007

Corso di Fondamenti di Informatica prova del 26/03/2007 UNIVERSITÀ DEGLI STUDI DI PERUGIA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA MECCANICA. Corso di Fondamenti di Informatica prova del 26/03/2007 Esercizio 1 (15 punti) È assegnato un file di nome

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 11: Metodi iterativi per la soluzione di sistemi lineari. 20 Maggio 2019

Laboratorio di Calcolo Numerico Laboratorio 11: Metodi iterativi per la soluzione di sistemi lineari. 20 Maggio 2019 Laboratorio di Calcolo Numerico Laboratorio 11: Metodi iterativi per la soluzione di sistemi lineari 20 Maggio 2019 Risolvere sistemi di equazioni lineari Metodi Iterativi Data una matrice quadrata A di

Dettagli

FACOLTA DI INGEGNERIA CIVILE

FACOLTA DI INGEGNERIA CIVILE 1 UNIVERSITA DI PADOVA FACOLTA DI INGEGNERIA CIVILE Corso di calcolo numerico e Programmazione PROGETTO 2: sulla soluzione dei sistemi lineari. 2 3 4 5 6 7 8 9 10 11 12 Iterate k 40 38 36 34 32 30 28 26

Dettagli

Fortran in pillole : seconda lezione

Fortran in pillole : seconda lezione Fortran in pillole : seconda lezione Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi Numerici per l Ingegneria I predicati Riprendiamo l algoritmo

Dettagli

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p.

Pseudo codice. Paolo Bison. Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova. Pseudo codice, Paolo Bison, A.A , p. Pseudo codice Paolo Bison Fondamenti di Informatica 1 A.A. 2003/04 Università di Padova Pseudo codice, Paolo Bison, A.A. 2003-04, 2003-09-30 p.1/38 Pseudo codice linguaggio testuale mix di linguaggio naturale

Dettagli

INTRODUZIONE AL C++ CLASSIFICAZIONE

INTRODUZIONE AL C++ CLASSIFICAZIONE INTRODUZIONE AL C++ 1 CLASSIFICAZIONE LINGUAGGI CHE OPERANO SU DATI OMOGENEI: FORTRAN77, LINGUAGGIO C, LINGUAGGIO C++, PASCAL: operano solo su DATI OMOGENEI (integer, float, double), senza classi e puntatori;

Dettagli

Breve guida al linguaggio FORTRAN 77

Breve guida al linguaggio FORTRAN 77 Breve guida al linguaggio FORTRAN 77 Variabili (valori di default) Iniziali con lettere da I a N Iniziali con lettere da A a H oppure da O a Z variabili intere, 4 byte in precisione singola variabili reali,

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot

Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot Laboratorio di Calcolo Numerico Laboratorio 3: Algoritmi stabili e instabili Programma gnuplot Andrea Franceschini E-mail: franceschini@dmsa.unipd.it Dispense: http://www.math.unipd.it/ putti/teaching/calcolo

Dettagli

Risoluzione di un problema

Risoluzione di un problema Algoritmi Risoluzione di un problema Descrizione di un problema! Individuazione di un ALGORITMO! Metodo risolutivo (progetto) Introduzione 2 Algoritmo Sequenza finita di mosse che risolve in un tempo finito

Dettagli

Esercitazioni di Analisi e Simulazione dei Processi Chimici

Esercitazioni di Analisi e Simulazione dei Processi Chimici Esercitazioni di Analisi e Simulazione dei Processi Chimici Metodi numerici per la risoluzione di sistemi di equazioni differenziali ordinarie Antonio Brasiello Email: abrasiel@unina.it Tel. 081 76 82537

Dettagli

Vettori e Matrici (array)

Vettori e Matrici (array) Vettori e Matrici (array) Introduction to Fortran 90 Massimiliano Guarrasi, CINECA m.guarrasi@cineca.it Ottobre 2014 Array - Introduzione Gli array sono serie di variabili dello stesso tipo, ciascuna accessibile

Dettagli

Fortran. Introduzione.

Fortran. Introduzione. Fortran Introduzione http://www.dia.uniroma3.it/~roselli/ roselli@dia.uniroma3.it Credits Materiale a cura del Prof. Franco Milicchio Introduzione Esistono molti linguaggi di programmazione usati in vari

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 5: Scrittura su FILE. Soluzione di Equazioni non lineari

Laboratorio di Calcolo Numerico Laboratorio 5: Scrittura su FILE. Soluzione di Equazioni non lineari Laboratorio di Calcolo Numerico Laboratorio 5: Scrittura su FILE. Soluzione di Equazioni non lineari Claudia Zoccarato E-mail: claudia.zoccarato@unipd.it Dispense: Moodle Dipartimento ICEA 05 Aprile 2017

Dettagli

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Vettori e Matrici (array)

Vettori e Matrici (array) Vettori e Matrici (array) Introduction to Fortran 90 Elda Rossi, CINECA Marzo 2015 Array - Introduzione Gli array sono serie di variabili dello stesso tipo, ciascuna accessibile mediante indici numerici.

Dettagli

COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici Appello Straordinario Mercoledì 18 Ottobre 2006 ( )

COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici Appello Straordinario Mercoledì 18 Ottobre 2006 ( ) Esercizio 1 (punti 12) COMPITO DI FONDAMENTI DI INFORMATICA Allievi Ingegneri Meccanici Appello Straordinario Mercoledì 18 Ottobre 2006 (09.30 12.30) Il DataBase di figura contiene dati utili per una gestione

Dettagli

Sviluppare un programma in FORTRAN

Sviluppare un programma in FORTRAN Sviluppare un programma in FORTRAN Scrivere il file sorgente Editor di testo (emacs, vi, notepad, etc) Compilare Compilatore (ifort, gfortran, etc) Eseguire il programma Riga di comando, doppio click,

Dettagli

Fortran in pillole : prima parte

Fortran in pillole : prima parte Fortran in pillole : prima parte Annamaria Mazzia Dipartimento di Metodi e Modelli Matematici per le Scienze Applicate Corso di Metodi Numerici per l Ingegneria Introduzione al Fortran Un libro consigliato

Dettagli

Primi script in MATLAB

Primi script in MATLAB Primi script in MATLAB Laboratorio di Calcolo Numerico 6 Marzo 2018 Introduzione alla programmazione Obiettivo: scrivere programmi e sviluppare algoritmi in MATLAB Si utilizzano gli m-file, ovvero file

Dettagli

Laboratorio di Python

Laboratorio di Python , Input da tastiera, Iterazione incondizionata 7 marzo 2014 Sommario 1 2 3 Outline 1 2 3 Definizione di funzione import modulo Si importa il modulo specificato def nome_f(par 1,, par n ) : Si definiscono

Dettagli

La Programmazione. Cos è la programmazione? Concetti preliminari

La Programmazione. Cos è la programmazione? Concetti preliminari La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione

Dettagli

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 12 Metodi numerici per equazioni differenziali ordinarie

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 12 Metodi numerici per equazioni differenziali ordinarie Complementi di Matematica e Calcolo Numerico A.A. 2017-2018 Laboratorio 12 Metodi numerici per equazioni differenziali ordinarie Cosideriamo il seguente Problema di Cauchy: Trovare una funzione y : I R,

Dettagli

Capitolo 1. Esercizi a.a Esercizi. Esercizio 1.1 Dimostrare che il metodo iterativo

Capitolo 1. Esercizi a.a Esercizi. Esercizio 1.1 Dimostrare che il metodo iterativo Capitolo Esercizi a.a. 206-7 Esercizi Esercizio. Dimostrare che il metodo iterativo x k+ = Φ(x k ), k = 0,,..., se convergente a x, deve verificare la condizione di consistenza x = Φ(x ). Ovvero, la soluzione

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 12: Metodi iterativi per la soluzione di sistemi lineari

Laboratorio di Calcolo Numerico Laboratorio 12: Metodi iterativi per la soluzione di sistemi lineari Laboratorio di Calcolo Numerico Laboratorio 12: Metodi iterativi per la soluzione di sistemi lineari Claudia Zoccarato E-mail: claudia.zoccarato@unipd.it Dispense: Moodle Dipartimento ICEA 24 Maggio 2017

Dettagli

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie Complementi di Matematica e Calcolo Numerico A.A. 2013-2014 Laboratorio 11 - Metodi numerici per equazioni differenziali ordinarie Cosideriamo il Problema di Cauchy: y (t) = f(t,y(t)) t I, y(t 0 ) = y

Dettagli

Operazioni base di Input e Output

Operazioni base di Input e Output Operazioni base di Input e Output Introduction to modern Fortran Maurizio Cremonesi, CINECA Maggio 2016 Input e Output Il salvataggio dei dati su disco e la loro lettura è possibile dopo aver generato

Dettagli

FORTRAN: LE STRUTTURE DI CONTROLLO

FORTRAN: LE STRUTTURE DI CONTROLLO UNINA2 INGEGNERIA MECCANICA/AEROSPAZIALE ELEMENTI DI PROGRAMMAZIONE FORTRAN: LE STRUTTURE DI CONTROLLO Prof. Andrea Prevete - a.a. 2015/16 IF-THEN La più semplice struttura di controllo è lo statement

Dettagli

Calcolo Numerico - Prova Matlab 19 luglio 2013

Calcolo Numerico - Prova Matlab 19 luglio 2013 9 luglio 0 () tempo a disposizione per completare la prova: ora; () lo svolgimento della prova deve essere salvato in file denominati cognomenome#m; () è fatto assoluto divieto di aprire applicazioni diverse

Dettagli

Elementi di Calcolo Scientifico per l Ingegneria A.A

Elementi di Calcolo Scientifico per l Ingegneria A.A Elementi di Calcolo Scientifico per l Ingegneria A.A. 2017-2018 Ottobre 2017 (2 16) Indice 1 2 3 4 Rappresentazione dei numeri reali nel calcolatore l insieme dei numeri reali, R, contiene un numero infinito

Dettagli

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.

Capitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved. 1 Capitolo 6 - Array Array Array Gruppo di locazioni di memoria consecutive Stesso nome e tipo Per riferirsi a un elemento, specificare Nome dell array Posizione Formato: arrayname[ position number ] Primo

Dettagli

Informatica (A-K) 5. Algoritmi e pseudocodifica

Informatica (A-K) 5. Algoritmi e pseudocodifica Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Strutture di Dati Parte 4 Conclusioni G. Mecca M. Samela Università della Basilicata Strutture di Dati: Conclusioni >> Sommario Sommario Ricapitolazione Alcune

Dettagli

Valori Alfanumerici. Informatica di Base -- R.Gaeta 1

Valori Alfanumerici. Informatica di Base -- R.Gaeta 1 Valori Alfanumerici Finora abbiamo utilizzato solo valori numerici; Se vogliamo usare valori alfanumerici (caratteri e numeri), usiamo le stringhe; In Logo le stringhe si delimitano con le parentesi quadre;

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

Esercizi. Fortran 90[/95] Algoritmo di Newton. Esercizi. Algoritmo di Newton: Progetto

Esercizi. Fortran 90[/95] Algoritmo di Newton. Esercizi. Algoritmo di Newton: Progetto Esercizi Fortran 90[/95] M. Bianco Quanto vale ires alla fine delle iterazioni? ires=0 DO index=-10,10 ires=ires+1 END DO Esercizi Quanto vale ires alla fine delle iterazioni? ires=0 loop1: DO index1=1,20,5

Dettagli

Pascal: esempi di programmazione

Pascal: esempi di programmazione Pascal: esempi di programmazione Problemi elementari di programmazione.................. 2252 a2» 2013.11.11 --- Copyright Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net Somma tra

Dettagli

Metamodello per il calcolo delle interazioni RAS basato su dati numerici

Metamodello per il calcolo delle interazioni RAS basato su dati numerici RAPPORTO TECNICO Titolo/Title Metamodello per il calcolo delle interazioni RAS basato su dati numerici Autori/Authors Matteo Diez, Daniele Peri Sommario/Abstract Il presente documento illustra l attività

Dettagli

Istruzioni per il controllo di ciclo - ciclo a condizione generica

Istruzioni per il controllo di ciclo - ciclo a condizione generica Istruzioni per il controllo di ciclo - ciclo a condizione generica Permette di ripetere l esecuzione di un blocco di istruzioni finchè non viene verificata una condizione logica. Sintassi istruzione_1...

Dettagli

Corso di Fondamenti di Informatica prova del 08/01/2007

Corso di Fondamenti di Informatica prova del 08/01/2007 UNIVERSITÀ DEGLI STUDI DI PERUGIA FACOLTÀ DI INGEGNERIA CORSO DI LAUREA IN INGEGNERIA MECCANICA. Corso di Fondamenti di Informatica prova del 08/01/2007 Esercizio 1 (17 punti) È assegnato un file di nome

Dettagli

Processi random in natura

Processi random in natura Processi random in natura Esistono in natura processi naturalmente random decadimento radiativo agitazione termica moto di particelle in sospensione Per descrivere questi fenomeni bisogna spesso ricorrere

Dettagli

Tela (Teaching Language)

Tela (Teaching Language) Tela (Teaching Language) Paradigma imperativo Dichiarazioni di variabili, costanti, moduli Programma strutturato in moduli innestati Scope statico Passaggio dei parametri per valore Corpo del modulo =

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Dettagli

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe. 1) Comprendere il problema 2) Stabilire quali sono le azioni da eseguire per risolverlo 3) Stabilire la

Dettagli

I costrutti del C. Strutture condizionali Strutture iterative Introduzione alle funzioni

I costrutti del C. Strutture condizionali Strutture iterative Introduzione alle funzioni I costrutti del C Strutture condizionali Strutture iterative Introduzione alle funzioni 1 Le Strutture del C Condizionali if-else (else if) switch Iterative while for do while break and continue 2 Il costrutto

Dettagli

Modellistica e Simulazione. Outline. Notes. Notes. Luigi Iannelli. 6 giugno Introduzione. Generalità sui metodi numerici di integrazione

Modellistica e Simulazione. Outline. Notes. Notes. Luigi Iannelli. 6 giugno Introduzione. Generalità sui metodi numerici di integrazione 6 giugno 2011 1 Outline Introduzione Generalità sui metodi numerici di integrazione Proprietà dei metodi di integrazione Alcuni metodi di integrazione 2 Equazioni differenziali nello spazio di stato Consideriamo

Dettagli

Introduction to modern Fortran

Introduction to modern Fortran Sinonimi Introduction to modern Fortran Paride Dagna, CINECA Maggio 2016 SINONIMI: SINTASSI DI BASE I sinonimi, o POINTER, non sono altro che nomi cui è associato un tipo ed eventualmente un rango. Ad

Dettagli

Strutture di Controllo IF-ELSE

Strutture di Controllo IF-ELSE Strutture di Controllo IF-ELSE Come viene eseguito un programma? Un programma viene eseguito rispettando l ordine in cui le istruzioni vengono scritte dal programmatore: Si parte dalla prima istruzione

Dettagli

Analisi Matematica 2. Michele Campiti. Prove scritte di. Ingegneria Industriale a.a

Analisi Matematica 2. Michele Campiti. Prove scritte di. Ingegneria Industriale a.a Michele Campiti Prove scritte di Analisi Matematica 2 Ingegneria Industriale a.a. 2014 2015 Grafico della funzione f(x, y) := sin(2x 2 y) cos(x 2y 2 ) in [ π/2, π/2] 2 Raccolta delle tracce di Analisi

Dettagli

IM-IU v0.1. alternata e continua. pag. 1 / 5

IM-IU v0.1. alternata e continua. pag. 1 / 5 MANUALE OPERATIVO IM-IU v0.1 INSTRUCTION MANUAL SERIE TTC-V-485 Trasformatore di corrente alternata e continua PROTOCOLLO DI COMUNICAZIONE MODBUS TTC-V-485 SERIES AC/DC current transformer MODBUS COMMUNICATION

Dettagli

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 9 Metodi numerici per equazioni differenziali ordinarie

Complementi di Matematica e Calcolo Numerico A.A Laboratorio 9 Metodi numerici per equazioni differenziali ordinarie Complementi di Matematica e Calcolo Numerico A.A. 2016-2017 Laboratorio 9 Metodi numerici per equazioni differenziali ordinarie Cosideriamo il seguente Problema di Cauchy: Trovare una funzione y : I R,

Dettagli

Soluzione di Equazioni non lineari

Soluzione di Equazioni non lineari Soluzione di Equazioni non lineari Corso di Calcolo Numerico 20 Marzo 2018 Function in MATLAB Lo scopo di una funzione è quello di prendere in input un certo numero di valori, fare alcune operazioni con

Dettagli

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso

1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso Domanda 1 1. Si scriva una function Matlab che implementa il seguente metodo di punto fisso x n+1 = x n f(x n), n = 0, 1, 2,... K dove x 0 è il punto iniziale, f(x) = x 3 cos(x) e K è una costante assegnata.

Dettagli

Rappresentazione degli algoritmi

Rappresentazione degli algoritmi Rappresentazione degli algoritmi Universitá di Ferrara Ultima Modifica: 21 ottobre 2014 1 1 Diagramma di flusso Utilizzare il diagramma di flusso per rappresentare gli algoritmi che risolvono i seguenti

Dettagli

3 aprile o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri. si raccomanda la puntualita!

3 aprile o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri. si raccomanda la puntualita! 3 aprile 2002 Avvisi: 1 o Esonero: mercoledi 17 aprile ore 11:30 14:00 consulta la pag. WEB alla voce esoneri si raccomanda la puntualita! Qualche informazione sull esonero Argomenti trattati: svolti nelle

Dettagli

Introduzione all uso delle funzioni in C++

Introduzione all uso delle funzioni in C++ Introduzione all uso delle funzioni in C++ Roberto Basili University of Rome Tor Vergata, Department of Computer Science, Systems and Production, 00133 Roma (Italy), basili@info.uniroma2.it January 24,

Dettagli

UD 3.2b: Programmazione in Pascal (1)

UD 3.2b: Programmazione in Pascal (1) UD 3.2b: Programmazione in Pascal (1) Il Linguaggio di Programmazione Pascal Esistono molti linguaggi di programmazione. Per motivi didattici utilizzeremo una versione ridotta di un linguaggio di programmazione

Dettagli

Introduzione al linguaggio Fortran 90

Introduzione al linguaggio Fortran 90 Introduzione al linguaggio Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: concetti di base DIS - Dipartimento di informatica e sistemistica

Dettagli

ESERCITAZIONE Implementare i metodi di Eulero, di Heun e di Runge-Kutta del quarto ordine per integrare il problema di Cauchy:

ESERCITAZIONE Implementare i metodi di Eulero, di Heun e di Runge-Kutta del quarto ordine per integrare il problema di Cauchy: ESERCITAZIONE 5 1. Implementare i metodi di Eulero, di Heun e di Runge-Kutta del quarto ordine per integrare il problema di Cauchy: { y (x) = f(x, y(x)) y(x 0 ) = y 0 con passo h = x N x 0, ove x N N e

Dettagli

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Il Linguaggio di Programmazione Pascal

INFORMATICA GENERALE Prof. Alberto Postiglione. Scienze della Comunicazione Università di Salerno. Il Linguaggio di Programmazione Pascal INFORMATICA GENERALE Prof. Alberto Postiglione Scienze della Comunicazione Università degli Studi di Salerno : Programmazione in Pascal (1) PROGRAMMAZIONE: Introduzione al Pascal (1) 14 nov 2011 Dia 2

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Strutture di Controllo Parte 4 Conclusioni G. Mecca M. Samela Università della Basilicata Strutture di Controllo >> Sommario Sommario Ricapitolazione Alcune

Dettagli

Introduzione agli Algoritmi

Introduzione agli Algoritmi Introduzione agli Algoritmi Informatica Sara Zuppiroli A.A. 2012-2013 Informatica () Introduzione agli Algoritmi A.A. 2012-2013 1 / 25 Risoluzione dei problemi Dalla descrizione del problema all individuazione

Dettagli

Operazioni di input e output in Fortran 90

Operazioni di input e output in Fortran 90 Operazioni di input e output in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2006/2007 Fortran 90: file e formattazione DIS - Dipartimento di informatica

Dettagli

Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto

Università degli Studi di Salerno. Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto Il Pascal (continua) Università degli Studi di Salerno Corso di Laurea in Scienze della Comunicazione Informatica generale (matr. Dispari) Docente: Angela Peduto A.A. 2005/2006 Le procedure! Spesso, soprattutto

Dettagli