Wie schränkt man die Lösungsmenge von Gleichungen auf reelle Lösungen ein?

Löst man Gleichungen 3.Grades mit einem CAS, so werden immer 3 Lösungen angezeigt: Eine Lösung ist eine reelle Zahl und zwei Lösungen enthalten ein "i". Das "i" ist ein Symbol für die Wurzel aus -1. Diese Zahl kann man nicht auf der reellen Zahlengeraden darstellen und somit auch nicht die Lösungen, die "i" enthalten.

Damit Maxima nur die Lösung ohne "i" anzeigt, kann man die folgenden Befehle (zum Kopieren und Einfügen) benutzen:

realp(x) := if imagpart(rhs(x)) = 0 then true else false$

l:solve(x^3=5,x)$

sublist(l,realp);

Der Befehl realroots(Term,Genauigkeit) ist eine Alternative dazu. Man stellt hierfür die Gleichung in die Form Term = 0 um und gibt den Term bei realroots() ein. Im Beispiel oben wird die Gleichung x^3 = 5 umgeformt zu x^3 - 5 = 0.

x^3 - 5 ist demnach der Term, der in realroots() eingegeben wird. realroots() liefert dann den besten Näherungsbruch, den man zu einer vorgegebenen Genauigkeit berechnen kann:

Soll die Abweichung des Bruchs zu dem exakten Ergebnis z.B. weniger als 1/10 betragen, so ist 55/32 der beste ganzzahlige Bruch, den es gibt (%o5) - der übrigens schon fast auf 1/100 genau ist (vergleiche mit %o8).