Discussioni su argomenti di Informatica
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!!
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...
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.
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!
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...
Skuola.net News è una testata giornalistica iscritta al Registro degli Operatori della Comunicazione.
Registrazione: n° 20792 del 23/12/2010.
©2000—
Skuola Network s.r.l. Tutti i diritti riservati. — P.I. 10404470014.