Sistema di equazioni differenziali

frnero
Esiste un programma che mi permette di risolvere questo sistema di equazioni differenziali?


Risposte
TonyCOD
in generale direi che potresti anche scrivere un tuo programma in c++ ahhaha cmq quello che cerchi è Wolfram Mathematica ed il suo comando NDSolve. Vai sul sito di wolfram e richiedi la demo che dura 30gg così vedi se ne vieni a capo ;)
se U e W sono costanti poi il sistema è risolvibile simbolicamente con il comando DSolve.

gugo82
Se $U$ e $W$ sono costanti, il sistema si risolve anche "a mano", usando l'esponenziale di matrice... Certo, bisogna fare contazzi ignobili, ma si può fare.

Poi bisogna imporre le condizioni al bordo, però.

frnero
Il problema e che questo è solo la prima applicazione, nella seconda parte le equazioni sono 40 :? Si comunque U e W sono costanti

TonyCOD
"gugo82":
Se $U$ e $W$ sono costanti, il sistema si risolve anche "a mano", usando l'esponenziale di matrice... Certo, bisogna fare contazzi ignobili, ma si può fare.

Poi bisogna imporre le condizioni al bordo, però.


sarebbe una palla assurda XD

frnero
Ho trovato l'analoga funzione su matlab e sto utilizzando questo, poichè già possiedo il programma.

Tuttavia Matlab riesce a risolvere il sistema :cry: . Dopo un po che elabora esce un messaggio di errore che dice che la memoria è insufficiente. Come potrei fare?

TonyCOD
non me ne intendo di MatLab ma possiamo provare a vedere insieme cosa non va...che messaggio in specifico ti da?

frnero
Matlab lavora un po e poi esce un messaggio che dice che la memoria di sistema è insufficiente per eseguire il programma.
E' come se il sistema fosse troppo complesso per essere eseguito.

Questo è il codice che ho scritto in Matlab in Mathematica come diventerebbe?

clc;
clear all;

m1=540;
m2=650;
U=700;
W=0.2;
Tc=180;
Tf=40;
L=0.01;

syms T1(x) T2(x) T3(x) T4(x) T5(x) T6(x) T7(x) T8(x) T9(x) T10(x)

eqn1=diff(T1)==(U*W*(T2-T1))/m1;
eqn2=diff(T2)==(U*W*(T1+T3-2*T2))/m2;
eqn3=diff(T3)==-(U*W*(T2+T4-2*T3))/m1;
eqn4=diff(T4)==-(U*W*(T3+T5-2*T4))/m2;
eqn5=diff(T5)==(U*W*(T4+T6-2*T5))/m1;
eqn6=diff(T6)==(U*W*(T5+T7-2*T6))/m2;
eqn7=diff(T7)==-(U*W*(T6+T8-2*T7))/m1;
eqn8=diff(T8)==-(U*W*(T7+T9-2*T8))/m2;
eqn9=diff(T9)==(U*W*(T8+T10-2*T9))/m1;
eqn10=diff(T10)==(U*W*(T9-T10))/m2;

c1=T1(0)==Tc;
c2=T2(0)==Tf;
c3=T3(L)==T1(L);
c4=T4(L)==T2(L);
c5=T5(0)==T3(0);
c6=T6(0)==T4(0);
c7=T7(L)==T5(L);
c8=T8(L)==T6(L);
c9=T9(0)==T7(0);
c10=T10(0)==T8(0);

S=dsolve(eqn1,eqn2,eqn3,eqn4,eqn5,eqn6,eqn7,eqn8,eqn9,eqn10,c1,c2,c3,c4,c5,c6,c7,c8,c9,c10);

frnero
Forse si potrebbe risolvere con ode45? Però resta il problema delle condizioni al contorno

TonyCOD
mhhh...non saprei...non so che altro dire se non di andare sul sito di Wolfram e provare la demo di 30gg e provare con quello oppure prova scrivere solo la matrice dei coefficienti e risolvere con matlab l' autosistema ma è una palla assurda...un altra opzione potrebbe essere quella di postare il tuo dubbio sulla sezione di ingegneria, magari ne sanno qualcosa di Matlab :P

Raptorista1
Ti interessa una soluzione analitica o va bene anche una numerica (=approssimata)? Matlab non è un campione di calcolo simbolico, come hai visto...

dissonance
Infatti, e purtroppo, è un problema di implementazione software piuttosto che di matematica (cose del genere sono capitate anche a me e sono una grande rottura). Secondo me MATLAB dovrebbe tranquillamente essere in grado di darti una soluzione approssimata, si tratta di un problema grande ma lineare. Dovresti chiedere a qualcuno che se ne intende di MATLAB, ingegneri, analisti numerici, gente così.

Qui su "Analisi matematica" penso proprio che non concluderai molto. :-)

Raptorista1
"dissonance":
Qui su "Analisi matematica" penso proprio che non concluderai molto. :-)

Proprio per questo chiedevo!

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