View Single Post
Old 17-04-2014, 20:11   #7799
dario fgx
Senior Member
 
L'Avatar di dario fgx
 
Iscritto dal: Feb 2003
Città: Terlizzi(BA)
Messaggi: 9622
Quote:
Originariamente inviato da Lampo89 Guarda i messaggi
per quanto riguarda la derivata errore mio, una istruzione che ho scritto non consentiva quel giochino ... riscrivo tutto il codice


f[omega_, L_, d_, S_, lambda_, g_] :=
NDSolve[{-L S/(g omega) y''[x] - 2 y[x] ==
1/(2 g) y'[x] Abs[y'[x]] L lambda/d , y[0] == 1, y'[0] == 0},
y, {x, 0, 10}];
(* fissi i valori di omega,L,d,S,g qui sotto*)
omega = 20. ;
L = 1. ;
d = 2.;
g = 0.2;
S = 4.;
a = 5; (* è il passo con cui vari lambda da 1 a 100*)

fun = Table[y[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];
funder = Table[
y'[x] /. f[omega, L, d, S, lambda, g], {lambda, 1, 100, a}];

Plot[fun, {x, 0, 10}]
Plot[funder, {x, 0, 10},PlotRange->Full]

imax = Length[fun];
tau = Table[
x /. FindRoot[fun[[i, 1]] == 1/Exp[1], {x, 1}], {i, 1, imax}]

grazie mille ancora!!!

Devo però segnalarti un problema. Usando il nuovo codice sembra che i risultati siano diversi, in particolare dal plot di y sembra che l'oscillazione sia smorzata in tempi molto più lunghi rispetto a prima. Posso chiederti di provare da te il codice con i seguenti parametri?

y(0)=0.01 (quindi si deve correggere l'espressione per i tempi di smorzamento)
omega = 0.000785;
L = 0.1;
d = 0.01;
g = 9.81;
S = 0.001;
a = 0.04;
lambda da 0 a 0.1

e plottare tutto tra 0 e 30 secondi


edit

errore mio, non cambia nulla.


ora l'unico problema è che non mi calcola i tempi di smorzamento se cambio l'ampiezza iniziale da 1 al valore più realistico di 0.01
__________________
"E' dall'alto che ci dividono, è là in alto che inventano il pericolo ! "

Ultima modifica di dario fgx : 17-04-2014 alle 20:26.
dario fgx è offline   Rispondi citando il messaggio o parte di esso