Numeriek oplossen

Wanneer men een differentiaalvergelijking numeriek wil oplossen ipv. symbolisch geeft men de optie 'numeric' mee aan de functie 'dsolve'. Een eenvoudig voorbeeld voor een lineare vergelijking van 1'ste graad illustreert dit:

> Vgl := diff(x(t),t) + 0.5*x(t) = 0;

[Maple Math]

> Opl := dsolve({Vgl,x(0.0) = 1.0},x(t),numeric);

[Maple Math]

Het formaat waarin de numerieke oplossing gegeven wordt ziet er een beetje mysterieus uit. Men kan de waarde in een punt bekomen door:

> Opl(3.0);

[Maple Math]

>

Het resultaat is een list van vergelijkingen. Een individuele waarde kan men bekomen door:

> subs(Opl(3.0),x(t));

[Maple Math]

Vaak wil men de oplossingen plotten, hiervoor is er de functie 'odeplot' in de 'plots' library. Deze moet dus eerst geladen worden mbv. 'with'.

> with(plots,odeplot);

[Maple Math]

> odeplot(Opl,[t,x(t)],0..10);

[Maple Plot]

Let op de '[]', wat er op de x- en de y-as moet komen wordt gespecifieerd als lijst.

Voor vergelijkingen van hogere graad gaat men analoog te werk:

> Vgl := diff(x(t),t,t) + 0.5*diff(x(t),t) + x(t) = 5;

[Maple Math]

> Opl := dsolve({Vgl,x(0.0) = 0.0,D(x)(0.0) = 1.0},x(t),numeric);

[Maple Math]

> Opl(3.0);

[Maple Math]

Hier krijgt men niet enkel de functie, maar ook haar 1'ste afgeleide als resultaat.

Om zowel de functie als haar afgeleide te plotten kan men onderstaand commando gebruiken, terwijl de tweede plot de afgeleide laat zien met 'x(t)' op de x-as (deze voorstelling wordt in de wiskunde vaak gebruikt).

> odeplot(Opl,[[t,x(t)],[t,diff(x(t),t)]],0..30);

[Maple Plot]

> odeplot(Opl,[x(t),diff(x(t),t)],0..30,
numpoints=200,labels=[x,dx]);

[Maple Plot]

Stelsels differentiaalvergelijkingen kan men op analoge manier behandelen.

> Vgln :=
(D@@2)(x)(t) + (0.5*D(x)(t) - 0.3*D(y)(t)) + 2*x(t) - y(t) = 0,
D(y)(t) = -y(t) + 0.75*x(t);

[Maple Math]

> Vwdn :=
D(x)(0) = 1.0,
x(0) = 0.0,
y(0) = 2.0;

[Maple Math]

> Opln := dsolve({Vgln,Vwdn},{x(t),y(t)},numeric);

[Maple Math]

> Opln(3.0);

[Maple Math]

> odeplot(Opln,[[t,x(t)],[t,y(t)]],0..10);

[Maple Plot]

> Vgl := 'Vgl': Opl := 'Opl': Vgln := 'Vgln': Opln := 'Opln':