vuoi
o PayPal
tutte le volte che vuoi
PROGRAM siseqdiff
IMPLICIT NONE
REAL::x1,x2,x3,v1,v2,v3,t,dt
REAL,EXTERNAL::f
INTEGER::ioerror
dt=0
x1=-2.0
x2=-2.0
x3=-2.0
t=0
v1=0
v2=0
v3=0
OPEN(UNIT=8,FILE='output.dat',STATUS='replace',IOSTAT=ioerror)
WRITE(*,11)"t","u=0.01","u=2.0","u=4.0"
WRITE(8,11)"t","u=0.01","u=2.0","u=4.0"
11 FORMAT(A7,1X,A10,1X,A10,1X,A10)
WHILE(t<20.0)DO
v1=v1+f(x1,v1,0.01)*dt
x1=x1+v1*dt
v2=v2+f(x2,v2,2.0)*dt
x2=x2+v2*dt
v3=v3+f(x3,v3,4.0)*dt
x3=x3+v3*dt
WRITE(*,10) t,x1,x2,x3
WRITE(8,10) t,x1,x2,x3
dt=1.0E-04
t=t+dt
END DO
10 FORMAT(F7.4,1X,F10.6,1X,F10.6,1X,F10.6)
CLOSE(8)
END PROGRAM siseqdiff
REAL FUNCTION f(x,v,u)
IMPLICIT NONE
REAL,INTENT(IN):: x,v,u
f=u*(1-x**2)*v-x
RETURN
END FUNCTION Laboratorio di Calcolo Numerico ed Informatica
A.A. 2011/2012
Esame del 25 Gennaio 2012 - Traccia 1
1 Sistema di Equazioni Differenziali:
L’Oscillatore di Van der Pol
L’oscillatore non lineare di Van der Pol evolve in tempo secondo l’equazione:
2 dx
d x 2 ) + =0 (1)
µ(1 x x
− −
2
dt dt
In particolare, siamo interessati alle traiettorie che si sviluppano per i valori di = [0.01, 2.0, 4.0]
µ
partendo dalla posizione: [t = 0, = = 0].
x v
−2.0,
0 0 0
Il candidato scriva un programma in Fortran90 o C (contenuto nel file VdP.f90
equazione
oppure che:
equazione VdP.c)
1. calcoli il valore di per 0 20 mediante un metodo di soluzione di equazioni
x s < t < s
differenziali numerica a scelta, che raggiunga una precisione numerica 10 e un
p ≤ −6
passo di integrazione 10 .
dt ≤ −4
2. scriva i risultati sullo schermo e in un file formattato il cui nome sia output.dat.
Il file di output dovrà quindi contenere, per ogni tempo 4 colonne con il val-
t, in quest’ordine:
ore di il valore di per = 0.01; il valore di per = 2.0; il valore di per = 4.0.
t; x(t) µ x(t) µ x(t) µ
Es. file output.dat
= 0.01 = 2.0 = 4.0
t µ µ µ
0.0000 −2.00000 −2.00000 −2.00000
0.0001 −1.98976 −1.99421 −1.99978
..
..
..
.. .
.
.
.
20.0000 1.74556
−0.83569 −1.44234
CONTINUA SUL RETRO
1