Metodo di Eulero
Salve,
sto studiando il metodo di Eulero per la risoluzione delle equazioni differenziali ordinarie.
Ho scelto di applicarlo all'equazione dell'oscillatore armonico forzato, per provare i suoi limiti. Questa è la famosa equazione:
\(\displaystyle Mx'' +\gamma x' + w_0 x =F cos(wt) \)
Purtroppo accade qualcosa di apparentemente strano. Se applico il metodo, fissando determinati coefficienti \(\displaystyle M,\gamma , w_0, w \), il risultato è soddisfacente (controllando l'errore tramite la soluzione analitica). Se adesso cambio sistema di riferimento (effettuo una traslazione), in modo tale che la soluzione non oscilli intorno allo zero,succede che il risultato numerico si dimostra palesemente errato solo nella fase del transiente, dopo di che l'errore si abbassa drasticamente. Non riesco a trovare coefficienti in grado di dare un risultato soddisfacente, neanche usando il metodo di Eulero-Picard (che è un metodo predictor-corrector), che dovrebbe essere più efficiente.
Secondo voi c'è un errore nell'algoritmo da me implementato?
Il cambio di sistema di riferimento, o se preferite, il cambio di variabile, l'ho effettuato in questo modo:
\(\displaystyle Mx'' +\gamma x' + w_0 (x-x_0) =F cos(wt) \)
sto studiando il metodo di Eulero per la risoluzione delle equazioni differenziali ordinarie.
Ho scelto di applicarlo all'equazione dell'oscillatore armonico forzato, per provare i suoi limiti. Questa è la famosa equazione:
\(\displaystyle Mx'' +\gamma x' + w_0 x =F cos(wt) \)
Purtroppo accade qualcosa di apparentemente strano. Se applico il metodo, fissando determinati coefficienti \(\displaystyle M,\gamma , w_0, w \), il risultato è soddisfacente (controllando l'errore tramite la soluzione analitica). Se adesso cambio sistema di riferimento (effettuo una traslazione), in modo tale che la soluzione non oscilli intorno allo zero,succede che il risultato numerico si dimostra palesemente errato solo nella fase del transiente, dopo di che l'errore si abbassa drasticamente. Non riesco a trovare coefficienti in grado di dare un risultato soddisfacente, neanche usando il metodo di Eulero-Picard (che è un metodo predictor-corrector), che dovrebbe essere più efficiente.
Secondo voi c'è un errore nell'algoritmo da me implementato?
Il cambio di sistema di riferimento, o se preferite, il cambio di variabile, l'ho effettuato in questo modo:
\(\displaystyle Mx'' +\gamma x' + w_0 (x-x_0) =F cos(wt) \)
Risposte
problema risolto: c'era un errore nell'algoritmo! in pratica non avevo considerato che cambiano anche le condizioni iniziali, quando faccio il cambio di variabile. In effetti non aveva senso che l'algoritmo di eulero, nonostante sia un'approssimazione al prim'ordine, sia così sensibile alla traslazione.