Bartjes
Artikelen: 0

Vreemde differentiaalvergelijking

In onderstaande bericht kwam ik uit op een differentiaalvergelijking (zie formule 23) waar ik geen raad mee weet:

http://www.wetenscha...post__p__951774

Afgezien van de natuurkundige aspecten gaat het om deze differentiaalvergelijking:
\( - \frac{\mbox{d}y}{\mbox{d}x} = \left ( \frac{f(x)}{y} \, - \, 1 \right ) . \, g(x) \)
.

Ik ben slechts geïnteresseerd in de oplossing voor een eindig interval [-a,a] van x bij gegeven f en g op [-a,a]. Als een analytische aanpak te moeilijk wordt, is een grafisch programma dat voor een groot aantal functies f en g een grafiekje van y tekent ook welkom.
Bartjes
Artikelen: 0

Re: Vreemde differentiaalvergelijking

In het bijzonder ben ik geïnteresseerd in oplossingen voor functieparen f en g van onderstaande type:
f(x)-en-g(x)
f(x)-en-g(x) 1030 keer bekeken
Bartjes
Artikelen: 0

Re: Vreemde differentiaalvergelijking

Na lang zoeken heb ik een online programma gevonden waar we mogelijk iets aan hebben:

http://www.javaview.de/demo/PaExprOde.html

(Als iemand een vergelijkbaar eenvoudig freeware programma weet dat ik voor mijn eigen computer kan downloaden hoor ik het graag.)

Nu is het nog de vraag we f en g (voor zekere concrete waarden van a, b, c, d, d', e en e') in de toelaatbare functies kunnen uitdrukken:

http://www.javaview.de/doc/inspectors/Expressions.html
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Vreemde differentiaalvergelijking

Ik betwijfel dat je een analytische oplossing gaat vinden. Ben je bekend met numerieke integratie? Met een Runge-*** integratie krijg je mogelijk al mooie plots en het is niet zo moeilijk te implementeren in MATLAB.
Bartjes
Artikelen: 0

Re: Vreemde differentiaalvergelijking

Xenion schreef: za 02 mar 2013, 23:03
Ik betwijfel dat je een analytische oplossing gaat vinden. Ben je bekend met numerieke integratie? Met een Runge-*** integratie krijg je mogelijk al mooie plots en het is niet zo moeilijk te implementeren in MATLAB.
In dit geval vind ik een analytische oplossing ook niet zo interessant; het gaat mij hier uiteindelijk toch om "het plaatje". Het online programma waarvan ik al een link heb gegeven doet wat ik zoek, alleen heb ik graag een freeware programmatje op mijn eigen bureaublad staan. Zo ben ik bijvoorbeeld zeer tevreden met het freeware programmatje Graph:

http://www.padowan.dk/

Een dergelijk eenvoudig gratis programmatje zou ik ook graag voor gewone differentiaalvergelijkingen hebben. Zelf programmeren en/of het gebruik van betaalde programmatuur gaan mij net een stapje te ver.
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Vreemde differentiaalvergelijking

Ik ken zo direct geen programma's behalve dan misschien wolfram alpha.

Hier heb je een MATLAB scriptje dat vergelijkingen van de vorm y'(t) = f(t,y) kan oplossen via die Runge-*** die ik vermeldde. Misschien werkt het ook voor Octave (gratis).

Code: Selecteer alles


function [y,t] = RK4(f, y0, t0, t_end, h)

t = linspace(t0,t_end,ceil( (t_end-t0)/ h ));

y = zeros(size(t));

y(1) = y0;

for i = 1:length(t)-1

k1 = f(t(i)	  , y(i));

k2 = f(t(i) + h/2, y(i) + h*k1/2);

k3 = f(t(i) + h/2, y(i) + h*k2/2);

k4 = f(t(i) + h  , y(i) + h*k3);

y(i+1) = y(i) + h*(k1 + 2*k2 + 2*k3 + k4)/6;

end

end

Je moet dan nog juist de functie f ergens definiëren. Ik heb het uitgetest met een eenvoudige rechte:

Code: Selecteer alles


function res = f(t,y)

res = t;

end

Als je de functie f(t,y) gedefinieerd hebt, dan kan je RK4 aanroepen en het resultaat plotten via:

Code: Selecteer alles


[y,t] = RK4(@f, 0, 0, 10, 0.1);

plot(t,y); xlabel('t'); ylabel('y');

In mijn test krijg ik dan mooi een parabool.
Bartjes
Artikelen: 0

Re: Vreemde differentiaalvergelijking

Inmiddels heb ik een manier gevonden om bevredigende functies f en g te maken. Anders dan in mijn eerdere tekening zijn dit vloeiend verlopende functies, maar dat is in dit geval geen bezwaar. Zie hier een voorbeeldje:
vloeiende-f-en-g
vloeiende-f-en-g 1025 keer bekeken
Oftewel:

f(x) = 10 + (10/pi)*(atan(10*(x+10)) + atan(-10*(x-10)) )

g(x) = -7 + (3/pi)*(atan(10*(x+10)) + atan(-10*(x-10)) )

Kan zoiets in je programma geplugd worden?
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Vreemde differentiaalvergelijking

Ja hoor. Je kan die 2 functies apart definiëren en dan combineer je die in de uiteindelijke functie die je gaat integreren (merk op dat ik het minteken in de originele dv van kant gewisseld heb):

func.m

Code: Selecteer alles


function res = func(t,y)

res = -( f(t)/y - 1 )* g(t);

end

function res = f(x)

res = 10 + (10/pi)*(atan(10*(x+10)) + atan(-10*(x-10)) );

end

function res = g(x)

res = -7 + (3/pi)*(atan(10*(x+10)) + atan(-10*(x-10)) );

end

Je geeft dan @func mee aan RK4.

Als ik dat teken tussen op [-30,+30] met y0 = 1, dan geeft dat deze funky plot:
bartjes
bartjes 1023 keer bekeken
Je moet ook niet per se analytische uitdrukkingen hebben voor f en g als je het op deze manier doet: als je de functiewaarden kent in een aantal punten en je kan daartussen interpoleren dan kan je ook verder.
Bartjes
Artikelen: 0

Re: Vreemde differentiaalvergelijking

Dat ziet er veelbelovend uit! Dank. :)

Het ziet er naar uit dat ik met mijn model op de goeie weg ben.

Helaas heeft Octave voor Windows volgens Wikipedia nogal wat haken en ogen.
Gebruikersavatar
Xenion
Artikelen: 0
Berichten: 2.609
Lid geworden op: za 21 jun 2008, 10:41

Re: Vreemde differentiaalvergelijking

Voor elementaire berekeningen zoals in dit script zou Octave ook moeten werken. MATLAB is vooral beter omdat er voor verschillende vakgebieden gespecialiseerde functies en toolboxen bestaan.
Bartjes
Artikelen: 0

Re: Vreemde differentiaalvergelijking

Nog een leuk online progje:

http://infinidim.net/dep/

Hier het resultaat:
Differential-Equation-Plotter
Differential-Equation-Plotter 1027 keer bekeken
Bartjes
Artikelen: 0

Re: Vreemde differentiaalvergelijking

Een leuk en eenvoudig downloadbaar programmatje voor gewone differentiaalvergelijkingen heb ik nu ook gevonden:

http://odetoolkit.hmc.edu/

Terug naar “Analyse en Calculus”