Springen naar inhoud

Vreemde differentiaalvergelijking


  • Log in om te kunnen reageren

#1

*_gast_Bartjes_*

  • Gast

Geplaatst op 28 februari 2013 - 21:38

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:

LaTeX .

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.

Veranderd door Bartjes, 28 februari 2013 - 21:43


Dit forum kan gratis blijven vanwege banners als deze. Door te registeren zal de onderstaande banner overigens verdwijnen.

#2

*_gast_Bartjes_*

  • Gast

Geplaatst op 02 maart 2013 - 15:37

In het bijzonder ben ik geïnteresseerd in oplossingen voor functieparen f en g van onderstaande type:

f(x)-en-g(x).JPG

Veranderd door Bartjes, 02 maart 2013 - 15:42


#3

*_gast_Bartjes_*

  • Gast

Geplaatst op 02 maart 2013 - 20:25

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

http://www.javaview..../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....xpressions.html

#4

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 02 maart 2013 - 23:03

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

#5

*_gast_Bartjes_*

  • Gast

Geplaatst op 03 maart 2013 - 10:54

Ik betwijfel dat je een analytische oplossing gaat vinden. Ben je bekend met numerieke integratie? Met een Runge-***ta 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.

#6

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 03 maart 2013 - 11:34

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-Kutta die ik vermeldde. Misschien werkt het ook voor Octave (gratis).
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:
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:
[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.

#7

*_gast_Bartjes_*

  • Gast

Geplaatst op 03 maart 2013 - 12:22

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.JPG

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?

#8

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 03 maart 2013 - 12:36

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
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.png

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.

#9

*_gast_Bartjes_*

  • Gast

Geplaatst op 03 maart 2013 - 13:32

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.

#10

Xenion

    Xenion


  • >1k berichten
  • 2606 berichten
  • Moderator

Geplaatst op 03 maart 2013 - 13:46

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.

#11

*_gast_Bartjes_*

  • Gast

Geplaatst op 03 maart 2013 - 14:31

Nog een leuk online progje:

http://infinidim.net/dep/

Hier het resultaat:

Differential-Equation-Plotter.JPG

#12

*_gast_Bartjes_*

  • Gast

Geplaatst op 04 maart 2013 - 18:12

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

http://odetoolkit.hmc.edu/

Veranderd door Bartjes, 04 maart 2013 - 18:12






0 gebruiker(s) lezen dit onderwerp

0 leden, 0 bezoekers, 0 anonieme gebruikers

Ook adverteren op onze website? Lees hier meer!

Gesponsorde vacatures

Vacatures