Equazioni differenziali a coefficienti non costanti

Messaggioda vivi96 » 04/12/2022, 00:57

Buonasera a tutti, sto provando a risolvere un sistema di due equazioni differenziali a coefficienti non costanti su mathematica, ma non capisco se funzioni o meno.

Volevo chiedere se secondo voi Matlab sarebbe in grado di risolvere un sistema del tipo:

$\{(dot a(t)=-ika(t) + (dot f(t))/f(t)\bar a(t)),(dot \bar a(t)=(dot f(t))/f(t)a(t)+ik \bar a(t)):}$

dove $f(t)$ è una funzione generica e la funzione a(t) è a valori complessi infatti $\bar a(t)$ è la sua coniugata.
Ovviamente io cerco $a(t)$ e $\bar a(t)$.

Grazie!!
vivi96
Average Member
Average Member
 
Messaggio: 249 di 500
Iscritto il: 21/07/2017, 17:06

[MatLab] Re: Equazioni differenziali a coefficienti non costani

Messaggioda feddy » 04/12/2022, 13:32

Oops, ho visto ora questa domanda. Non uso MatLab da un po' e non ho mai dovuto risolverci ODE con quantita' complesse, ma immagino che basti vedere $a$ e $\bar{a}$ come due incognite del problema. Altrimenti, si potrebbe spezzare il tutto in parte reale e immaginaria...
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2965 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Equazioni differenziali a coefficienti non costani

Messaggioda feddy » 04/12/2022, 13:50

Qualcosa del genere dovrebbe funzionare. Lo snippet qui sotto integra da $0$ a $5$ con dato iniziale $[1,1]$. Ho messo questi dati a caso ovviamente. Nel tuo caso devi anche definire chi e' $k$, $f(t)$,$f'(t)$. Cerca senno' sulla documentazione MatLab come passare parametri extra alle funzioni (https://it.mathworks.com/help/matlab/re ... ml#bu3uhuk)

Codice:
[t,y] = ode45(@rhs,[0 5],[1; 1]);

function dydt = rhs(t,y)
// definisci qui eventualmente f,f',k
k = 2;
dydt = [-1i*k*y(1)+y(2); y(1) + 1i*k*y(2)];
end



Testalo su qualche caso di cui conosci la soluzione. Se vuoi plottare la soluzione, ricordati che devi separare parte reale e parte immaginaria nel plot, altrimenti la parte immaginaria viene ignorata.
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2966 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA

Re: Equazioni differenziali a coefficienti non costani

Messaggioda vivi96 » 04/12/2022, 14:00

K è una costante e $f(t)$ non è una funzione definita, cercavo una soluzione generica! Adesso provo un pò a capire come scaricare MatLab e provo.

Invece se io volessi verificare che sue soluzioni risolvano effettivamente questa equazione differenziale?
Perchè io ho due soluzioni di $a(t)$ e $\bar a(t)$ in teoria e dovrei vedere in effetti funzionano. Quindi dovrebbe essere più semplice. Però in Mathematica il comando è == mentre su MatLab?


Grazie mille!
vivi96
Average Member
Average Member
 
Messaggio: 250 di 500
Iscritto il: 21/07/2017, 17:06

Re: Equazioni differenziali a coefficienti non costani

Messaggioda feddy » 04/12/2022, 14:21

vivi96 ha scritto:K è una costante e f(t) non è una funzione definita, cercavo una soluzione generica!

Non e' un problema in teoria, penso che $f(t)$ possa essere passata come parametro

vivi96 ha scritto:Però in Mathematica il comando è == mentre su MatLab?

Non so cosa ci sia sotto il
Codice:
==
di Mathematica. Quello che si fa nella pratica e' risolvere su un caso di cui conosci la soluzione analitica, e verificare che converge. Questa e' una cosa tipica che facciamo in numerica per verificare la correttezza dell'implementazione. Puoi considerare dei valori $f(t)$ e $k$ semplici e assegnati e cercare a mano una $a$ che risolve il problema semplice. Poi risolvi il sistema con quei dati e calcoli l'errore rispetto alla soluzione che conosci. Ad ogni modo, questi solutori di ODE di MatLab sono molto robusti...
Avatar utente
feddy
Moderatore
Moderatore
 
Messaggio: 2967 di 5934
Iscritto il: 26/06/2016, 00:25
Località: SISSA


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 1 ospite