Problema di Cauchy con MATLAB

Bios88
Salve a tutti, ho da risolvere il seguente problema di Cauchy su MATLAB
$dddot y$ + $ddot y$ = $12*(x^2-1)$
con condizioni iniziali
$y(0)=6$ , $dot y$ $(0)=4$ , $ddot y$ $(0)=2$
nell'intervallo
(\(0,10)\)
usando il metodo di Heun.
Confrontare la soluzione, al variare del passo di integrazione usato (determinare una successione "ragionevole" di valori di h), con quella determinata usando la ode45.
Per il metodo di Heun, dopo aver definito l'errore come la distanza tra la funzione vera $y(x)$ vera
$y(x)=16-6x-10exp(-x)+x^4-4x^3+6x^2$
e la sua stima, plottarlo contro h (eventualmente su scala log log).
Cosa si osserva? Qual è il metodo migliore?

Sarei grato a chi mi aiutasse a chiarire qualche dubbio sullo svolgimento del problema.

Risposte
Raptorista1
Per chiarirti qualche dubbio, magari conviene che tu esponga codesti dubbi!
Tu che hai pensato? Che hai provato a fare?

Bios88
dunque, la mia idea è questa: per prima cosa trasformo l'eq. differenziale del terzo ordine in un sistema di equazioni del primo ordine definendo delle nuove variabili:
$z1=y$
$z2=dot y$
$z3=ddot y$
e ottendendo quindi il sistema
$dot z2$ $=$ $z2$
$dot z2$ $=$ $z3$
$dot z3$ $=$ $- z3$ $+$ $12*(x^2 - 1)$
a questo punto posso iniziare a lavorare con MATLAB:
scrivo la mia funzione
function dy=myfunct(x,y)
dove scrivo le tre equazioni che ho ottenuto.
Sul main inizializzo tutti i dati che mi servono: condizioni iniziali, intervallo, passo (o passi) di integrazione che intendo utilizzare. Ora entra in gioco il metodo di Heun ed è qui che sorge il primo problema:
non riesco a scrivere in MATLAB "risolvere questo sistema con Heun".
devo prendere un'equazione alla volta e applicare prima Eulero in avanti e poi Crank-Nicholson o devo mettere tutte e tre le equazioni in uno stesso ciclo?
grazie

Raptorista1
Guarda, ti va di lusso perché ho scoperto pure io l'altro giorno come si fanno i sistemi :D
Ad ogni timestep devi fare un passo su tutte e tre le equazioni, perché in qualche modo ti servono i valori per i calcoli al timestep successivo.

P.s. Aggiusta l'ultimo messaggio perché non si legge!

Bios88
stavo provando a scrivere il codice:
dopo le varie inizializzazioni faccio un ciclo for per ogni h (passo di integrazione usato), in questo modo mi creo gli intervalli di integrazione, però devo anche mettere il primo valore per la coordinata x e uno per la coordinata y:
per la x non c'è nessun problema perchè è il primo punto del mio intervallo, ma per la y? naturalmente devo mettere le condizioni iniziali, ma in questo caso ne ho tre essendo un'eq. del terzo ordine! faccio un'altro ciclo for? però come collego questo ciclo al ciclo for successivo in cui scrivo il metodo di heun?

Raptorista1
Non ho ben capito. Facciamo MOLTO prima se scrivi un pezzo di codice [diciamo, il pezzo in cui imponi le C.I. ed il ciclo for principale] ed io cerco di correggerti su quello.

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.