Newsgroup: it.scienza.fisica
Titolo: Equazione differenziale

Prendiamo un'equazione del secondo ordine, lineare a coefficienti non
costanti:
f''(x) = u(x)f'(x) + v(x)f(x) + w(x)
Per risolverla occorrono due condizioni al contorno, tipicamente in
f(x) e la sua derivata ad un dato x_0.
Ad esempio il problema e' ben definito, credo, da condizioni del tipo:
f(x_0)= A
f'(x_0)=B
(penso si tratti di un problema di Cauchy, ma non so nulla di
equazioni differenziali).
Se pero' avessi due condizioni su f(x) e f''(x) in due punti x_0 e
x_1, cioe'
f(x_0) = A
f''(x_1)= 0
il problema sarebbe eancora ben definito (soluzione unica?). Come
potrei risolverlo? A quanto ne so, i metodi numerici standard
funzionano per condizioni applicate allo stesso punto x_0 oppure per
condizioni da applicare alla stessa funzione f(x) in due punti
diversi.

MarRraS ha scritto:

Precisazione: si parla di "condizioni al contorno" quando si assegnano
valori ai due estremi di un intervallo. Si parla di "condizioni
iniziali" quando i valori sono asseganti in un unico punto.
Se ho capito bene, tu vuoi assegnare un valore a f", ma questo, stante
l'equazione, equivale a chiedere
u(x_1)f'(x_1) + v(x_1)f(x_1) + w(x_1) = 0,
ossia a imporre il valore di una certa combinazione lineare di f e di f'.
Questo caso, che e' una generalizzazione di quello piu' comune in cui
assegni il valore di f in x_0 e in x_1, e' un _problema di autovalori_.
Piu' esattamente, si parla di solito di problema di autovalori quando
w e' una costante: allora l'eq. non avra' soluzioni per una w
generica, ma solo per un insieme discreto di valori, che sono appunto
gli autovalori.
Non ho presente di aver mai incontrato il caso che proponi, ma a naso
direi che anche se w(x) e' una funzione non costante, mi aspetto che
solo per certe scelte della funzione la tua eq. ammettera' soluzioni.
Hai per caso in mente un esempio concreto?
 
-- 
Elio Fabri


Si dice che la notte porta consiglio, ed e' vero...
Infatti stanotte mi son reso conto che il mio post di ieri, dopo la
parte iniziale, era pieno di stupidaggini :-<
Percio' vi prego di considerarlo non scritto e di sostituirlo con
questo (e speriamo bene :-)) ).
MarRraS ha scritto:
 > Prendiamo un'equazione del secondo ordine, lineare a coefficienti non
 > costanti:
 >
 > f''(x) = u(x)f'(x) + v(x)f(x) + w(x)
 >
 > Per risolverla occorrono due condizioni al contorno, tipicamente in
 > f(x) e la sua derivata ad un dato x_0.
 > Ad esempio il problema e' ben definito, credo, da condizioni del tipo:
 > f(x_0)= A
 > f'(x_0)=B
 > (penso si tratti di un problema di Cauchy, ma non so nulla di
 > equazioni differenziali).
 > Se pero' avessi due condizioni su f(x) e f''(x) in due punti x_0 e
 > x_1, cioe'
 > f(x_0) = A
 > f''(x_1)= 0
 > il problema sarebbe eancora ben definito (soluzione unica?). Come
 > potrei risolverlo? A quanto ne so, i metodi numerici standard
 > funzionano per condizioni applicate allo stesso punto x_0 oppure per
 > condizioni da applicare alla stessa funzione f(x) in due punti
 > diversi.
Precisazione: si parla di "condizioni al contorno" quando si assegnano
valori ai due estremi di un intervallo. Si parla di "condizioni
iniziali" quando i valori sono asseganti in un unico punto.
Se ho capito bene, tu vuoi assegnare un valore a f"; ma questo, stante
l'equazione, equivale a chiedere
u(x_1)f'(x_1) + v(x_1)f(x_1) + w(x_1) = 0,
ossia a imporre il valore di una certa combinazione lineare di f e di f'.
In linea di principio si procede cosi'.
Supponiamo note due soluzioni indip. g_1, g_2 dell'equazione omogenea
f''(x) = u(x)f'(x) + v(x)f(x)
e una qualsiasi soluzione f_0 dell'eq. data.
Allora l'integrale generale dell'eq. e'
f = a*g_1 + b*g_2 + f_0
con a, b qualsiasi (reali o complesse, a seconda del caso).
Se imponi a f le tue condizioni, ti risulta per a,b un sistema di eq.
lineari che in generale avra' det. non nullo e ammettera' quindi una
soluzione unica.
In questo modo il problema e' risolto.
Ho scritto "in linea di principio" perche' non esiste una procedura
determinata per trovare g_1, g_2, f_0.
Ci sono classi di equazioni per cui queste soluzioni sono note, ma le
possibili eq. sono molte di piu' di quelle incluse in queste classi...
Ma la tua domanda nasceva da un caso concreto, oppure era solo una
curiosita' generale?
-- 
Elio Fabri

 curiosita' generale?
No, vorrei risolvere una specifica equazione, solo che i coefficienti
u,v,w hanno un'espressione veramente complicata (pero' possono essere
valutati numericamente per ogni x) e non mi e' possibile riportarli
qui. Per cui non mi e' molto chiaro come trovare le due soluzioni
indipendenti g_1 e g_2 dell'omogenea associata. Dovrei comunque usare
metodi numerici per risolvere l'omogenea; ma, per farlo, occorrerebbe
specificare delle condizioni al contorno (quali?).
Piu' che altro la mia domanda era: data l'equazione iniziale e il mio
problema di condizioni al contorno da applicare, esistono procedure
numeriche particolari per arrivare velocemente alla soluzione?

 numeriche particolari per arrivare velocemente alla soluzione?
Premetto che non sono un esperto di calcolo numerico. Ho avuto molte
volte occasione di affrontare calcoli numerici, ma non ho fatto studi
particolari sull'argomento.
Pero' una cosa penso di poterla dire: non esiste risposta alla tua
domanda: bisogna esaminare l'equazione e a seconda dei casi
esisteranno porcedure piu' o meno efficienti e sicure.
In linea generale, mi assicurerei prima di tutto sulla "bonta'" delle
tue funzioni u,v,w. Non basta che siano continue, derivabili, magari
C^oo: e' importante che non abbiano andamenti "capricciosi".
Cio' posto, potrai integrare numericamente l'eq. omogenea, per es.
fissando una volta condizioni iniziali
f(x_0) = 1, f'(x_0) = 0
e una seconda volta
f(x_0) = 0, f'(x_0) = 1.
Questo ti garantisce che le soluzioni sono indipendenti.
Poi con c.i. a piacere trovi l'integrale particolare dell'eq.
completa, e il gioco e' fatto.
Se u,v,w non sono cattive, qualunque metodo d'integrazione andra'
bene, per es. il classico Runge-Kutta di quart'ordine. Ma forse ci
sono anche altri metodi che non conosco.
Non so che linguaggi di programmazione conosci, ma dovresti trovare
routines gia' pronte per tutti i principali linguaggi.
Altro possibile approccio, che terrebbe conto dall'inizio delle tue
effettive cond. al contorno. sarebbe un metodo variazionale.
Pero' non ho studiato la questione e non ti so dire se sia
applicabile, ossia se esista un funzionale che viene reso estremale
dalla soluzione che cerchi.
 
-- 
Elio Fabri

 soluzione?
Non ho capito troppo bene quello che vuoi fare. Comunque, come ti è
stato già detto, per problemi con condizioni iniziali il "classico" è
Runge-Kutta del IV ordine. Per problemi con condizioni al contorno, puoi
googlare con i termini "shooting" e "relaxation" e vedere se trovi
qualcosa di adattabile al caso tuo.
In genere, i problemi con condizioni al contorno sono più antipatici da
affrontare e si finisce, almeno con i metodi a rilassamento, con un
sistema di equazioni lineari. A loro volta si tratta di sistemi con
matrici bandate per i quali esistono procedure specifiche visto che con
quelli generali i tempi di calcolo sarebbero proibitivi per la maggior
parte delle applicazioni.
Insomma, se come dici non sai niente di eq. differenziali sarà occasione
per vedere un po' di cose nuove - nella pratica lo sarebbero pure per
me, peraltro, perché i problemi in cui mi sono imbattuto fin qua sono
sempre stati con condizioni iniziali gh gh :)
ciao, Apx