Next: Visualisatie Up: Karakteristieke eigenschappen vancomputeralgebra Previous: Algebra

Analyse

Het primitiveren (onbepaald integreren) van functies mag zonder meer een hoogtepunt van computeralgebra genoemd worden. De methode van aanpak wijkt vaak af van de manier waarop de mens het zou doen. De mens volgt alleen een heuristieke aanpak voor integreren met intelligent gebruik van bijvoorbeeld substitutie, partiëel integreren en tabellenboeken. Een computeralgebra-systeem probeert weliswaar ook eerst dergelijke oplossingsmethoden, maar wanneer deze niet (snel) resultaten afleveren gooit een volwassen pakket het algoritme van Risch er tegenaan. Dit algoritme kan voor een klasse van elementaire functies (veeltermen, exponentiële functie, logaritme, trigonometrische functies, ) uitsluitsel geven of een primitieve bestaat binnen deze klasse. Als het antwoord positief is, geeft dit algoritme daadwerkelijk de primitieve. Het Risch algoritme bevat te veel en te moeilijke stappen om met de hand uit te voeren, maar dit is minder een probleem voor de computer. Er is nog veel onderzoek gaande om de klasse van functies waarvoor dit algoritme opgeld doet, uit te breiden. Een voorbeeld van onbepaald integreren met Mathematica:


In[9]:= Integrate[ Sqrt[x] Sqrt[1+x], x]

                                3/2
                     Sqrt[x]   x       ArcSinh[Sqrt[x]]
Out[9]= Sqrt[1 + x] (------- + ----) - ----------------
                        4       2             4
Ter controle differentiëren we het resultaat (met het procent teken verwijzen we naar het vorige resultaat).

In[10]:= D[%, x]

                  -1             
Out[10]= --------------------- + 
         8 Sqrt[x] Sqrt[1 + x]   
                                                      3/2
                                           Sqrt[x]   x
                                           ------- + ----
          1       3 Sqrt[x]                   4       2
>    (--------- + ---------) Sqrt[1 + x] + --------------
      8 Sqrt[x]       4                    2 Sqrt[1 + x]
Mathematica vereenvoudigt niet automatisch het antwoord, maar is wel bereid dit op verzoek te doen.

In[11]:= Simplify[%]

Out[11]= Sqrt[x] Sqrt[1 + x]

Voor het oplossen van differentiaalvergelijkingen is er niet zo een uitverkoren aanpak als het Risch algoritme bij integreren. Toch is er inmiddels een uitgebreid arsenaal aan algoritmen die toegepast kunnen worden, en die in veel optredende gevallen goed resultaat opleveren. Een voorbeeld:


In[12]:= DSolve[x^2 y''[x] + x y'[x] + y[x] == x, y[x], x]

                   x
Out[12]= {{y[x] -> - + C[2] Cos[Log[x]] - C[1] Sin[Log[x]]}}
                   2