Lo so che è un’impresa disperata ma se qualcuno sa aiutarmi gli faccio una statua!
Sono disperato…devo consegnare un elaborato e non ci capisco niente con questo metodo numerico chi mi aiuta??
Devo integrare un’equazione differenziale per un sistema vibrante (ma adesso per capire come funzione ci possiamo anche basare sull’equazione di un pendolo semplice senza smorzamento)!
Il problema è che la soluzione numerica diverge tantissimo dalla soluzione analitica e non so quanto sia giusto!Cioè se prendo degli step di calcolo di un centesimo di secondo…gia dopo mezzo secondo i risultati sono allucinanti.
Vi posto il programma che sto cercando di fare con matlab ma il problema credo si a monte!
Allora io ho usato il metodo di Eulero per trovarmi il valore della funzione dopo la metà del tempo,per capirci:
% sono le condizioni iniziali
mx(1,1)=0.5;
my(1,1)=0;
x(1,1)=mx(1,1);
y(1,1)=my(1,1);
% pulsazione del pendolo
w=4;
i=0;
% costanti che mi sono trovato per la soluzione analitica
A=x(1,1);
phi=0;
z(1,1)=0.5;
for t=0.01:0.01:0.2
i=i+1;
% vettore con gli istanti di tempo
T(i+1,1)=t;
% passo intermedio ho imposto t/2
mx(i+1,1)=mx(i,1)+my(i,1)*(t/2);
my(i+1,1)=my(i,1)-(w^2)mx(i,1)(t/2);
% questo dovrebbe essere l’integrazione secondo Kutta
x(i+1,1)=x(i,1)+my(i+1,1)*t;
y(i+1,1)=y(i,1)-(w^2)*mx(i+1,1)*t;
% soluzione analitica
z(i+1,1)=Acos(wt+phi);
end
T(1,1)=0;
% soluzione analitica
subplot(2,1,1);
plot(T,z);
% soluzione numerica (Kutta)
subplot(2,1,2);
plot(T,x);
Per chi ha matlab basta prenderlo e copiarlo anche sul command window.
Ovviamente sto parlando di:
y’’+(w^2)y=0
Allora che ve ne pare dove ho sbagliato?La soluzione analitica è giusta perche se faccio un plottaggio in un arco di tempo più ampio mi viene una sinusoide, mentre se plotto la soluzione numerica anche per un tempo di un secondo mi diverge A BESTIA!!
PS:dopo il metodo di Eulero in questo link è accennato a ciò di cui sto parlando
http://www.afs.enea.it/gianness/corso_analisi/pdf/rungekutta.pdf