Equazione differenziale aiutatemi

ethan82
salve avrei un problemino spero che possiate aiutarmi,
allora dovrei scrivere una funzione in matlab che risolve le equazioni differenziali,
siccome dovrei provare la funzione su una equazione differenziale che mi è stata assegnata,
però naturalmente la soluzione non sono riuscita a trovarla analiticamente volevo chiedervi se ci riuscite.

provo a scrivere l'equazione differenziale del 2 ordine

$y''-2y'+y-xe^x+x=0

x definito nell'intervallo
$0<=x<=2

condizioni iniziali

$y(0)=0 , $y(2)=-4


*ps xe^x sarebbe x che moltiplica e elevato alla x---->x*exp(x) in matlab

Risposte
ethan82
grazie ancora tipper la sto ricontrollando pure io per sicurezza

_Tipper
Avevo fatto un errore di calcolo, la soluzione è questa

$y(x) = \frac{x^2}{2} e^x - 1 + e^{x} - \frac{3 + 3e^2}{2e^2} x e^{x}$

ethan82
potreste testare la mia funzione matlab?

allora la funzione prende in input i cinque valori a,b,alfa,beta,h e tre funzioni p(x),q(x),r(x),

dove il problema differenziale da risolvere sarebbe :

$y''=p(x)y'+q(x)y-r(x)
$y(a)=alfa
$y(b)=beta

h è il passo di integrazione.

riscrivo la mia equazione ma visto che non abbiamo la soluzione provatela con un'altra

$y''-2y'+y-xe^x+x=0
$y(0)=0
$y(2)=-4

$0<=x<=2

in questo caso a=0,b=2,alfa=0,beta=-4,p(x)='2',q(x)='-1' e r(x)='xe^x+x'

quando inserite le funzioni ricordatevi le '' il programma prende in input le stringhe

ecco il codice del programma se lo testate mi fate un favore

function[y]=probdifflim(a,b,alfa,beta,h,p,q,r)

a=input('a:') ;
b=input('b:') ;
alfa=input('alfa:') ;
beta=input('beta:') ;
h=input('h :') ;
fun1=input(' p(x): ') ;

p=inline(fun1,'x') ;
fun2=input(' q(x) :');
    q=inline(fun2,'x');
fun3=input(' r(x): ');

r=inline(fun3,'x');
N=(b-a)/h-1 ;
x=(a:h:b)'; 


for i=1:N
    a1(i,i)=2+h^2*q(x(i+1,1));
end




for i=1:N-1
    a2(i+1,i)=-1-h/2*p(x(i+2,1));
end
a2(N,N)=0 ;
for i=1:N-1
    a3(i,i+1)=-1+h/2*p(x(i+1,1));
end
a3(N,N)=0;
A=a1+a2+a3;
B(1,1)=-h^2*r(x(2,1))+(1+h/2*p(x(2,1)))*alfa;
B(N,1)=-h^2*r(x(N+1,1))+(1+h/2*p(x(N+1,1)))*beta ;
for i=2:N-1
    B(i,1)=-h^2*r(x(i+1,1));
end
y=inv(A)*B ;

for i=0:N-1
y(N+1-i,1)=y(N-i,1);
end
y(1,1)=alfa;
y(N+2,1)=beta ;


Marco831
Il codice matlab è sbagliato.

Ti sei dimenticato una parentesi:

y=1/2*x^2*exp(x)-1+exp(x)-(5+3*exp(2))/(2*exp(2))*x*exp(x)

comunque da -6.

ethan82
e l'incubo ritorna,la soluzione è errata.

le condizioni iniziali non sono soddisfatte
$y(2)=-6
fatta a mano,
se la metto in matlab con i seguenti comandi mi da addirittura -1.4621e+03

ecco il codice matlab
x=2
y=1/2*x^2*exp(x)-1+exp(x)-(5+3*exp(2))/2*exp(2)*x*exp(x)


sbaglio qualcosa?

_Tipper
Figurati :wink:

ethan82
dopo provo.
Grazie tipper la tua disponibilità è stata immensa

_Tipper
Si potrebbe provare a sostituire nel testo la soluzione trovata, e vedere se torna, se hai voglia di fare un po' di derivate...

_Tipper
Sì, tornano così anche a me.

ethan82
mica hai provato a controllare pure se c1 e c2 sono esatti?

dopo magari rifaccio tutto d'accapo

_Tipper
Le soluzioni dell'omogenea sono $y_1(x) = e^x$ e $y_2(x) = x e^{x}$. L'integrale generale è $y(x) = c_1(x) y_1(x) + c_2(x) y_2(x)$, dove $c_1(x)$ e $c_2(x)$ sono quelle che ho scritto nello spoiler qualche post più in su, facendo il prodotto e i calcoli si trova

$y(x) = \frac{x^2}{2} e^x - 1 + e^{x} (k_1 + k_2) + k_2 x e^{x}$

Ponendo $k_1 + k_2 = a_1$ e $k_2 = a_2$ l'integrale generale si può riscrivere come

$y(x) = \frac{x^2}{2} e^x - 1 + a_1 e^{x} + a_2 x e^{x}$

Sostituendo le condizioni iniziali si trova

$0 = -1 + a_1$ da cui $a_1 = 1$

$-4 = 2e^2 - 1 + e^2 + 2a_2 e^2$ da cui $a_" = \frac{-5 - 3e^2}{2e^2}$

quindi la soluzione dell'equazione differenziale è

$y(x) = \frac{x^2}{2} e^x - 1 + e^{x} - \frac{5 + 3e^2}{2e^2} x e^{x}$

salvo errori di calcolo.

ethan82
senti tipper ho provato a calcolare ma k2 mi esce con un valore strano dove compare pure un termine con $-2/e^2

siccome sembri l'unico che ci capisce co sta roba,quando hai tempo e voglia puoi cercare di risolverla dall'inizio tu così confrontiamo i risultati?

_Tipper
Le costanti $k_1$ e $k_2$ vanno trovate in funzione delle condizioni iniziali.

ethan82
ho cancellato le costanti k1 e k2 e ho moltiplicato il tutto

e ho trovato

$y=1/6x^3e^x-x-2

solo che non mi trovo con le condizioni iniziali

si può aggiustare senza cambiare il tutto?

_Tipper
Integra per parti, comunque ho già scritto la soluzione dei due integrali nel post precedente.

ethan82
"Tipper":
Parti.


cioè?

ma se finisco potete vedere almeno se è giusta?

_Tipper
"ethan82":
ho trovato :

$c1'=-x^2+x^2e^-x

e

$c2'=x-xe^-x


PS: mi ero dimenticato di darti il benvenuto!

_Tipper
Parti.

ethan82
applicando il metodo delle variazioni delle costanti

http://it.wikipedia.org/wiki/Metodo_del ... e_costanti

ho trovato :

$c1'=-x^2+x^2e^-x

e

$c2'=x-xe^-x

devo solo integrarli un consiglio?

ethan82
"elgiovo":
Per risolvere l'omogenea occorre trovare le soluzioni
dell'equazione caratteristica $lambda^2-2lambda+1=0$,
ovvero la radice doppia $lambda=1$. Per cui l'integrale
dell'omogenea sarà della forma $c_1e^(x)+c_2xe^x$.


l'omogenea l'ho fatta !

e il resto che non se pò fa!anzi che non riesco a fare.

ho mandato persino mail a prof americani, ma nulla sono sull'orlo della rassegnazione

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