MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.

________________________________________________________________________________

 

Inhalt....: Berechnung von Nullstellen

Kategorie.: Handwerkskasten

Mathematik: Analysis

MuPAD.....: 3.1.0

Datum.....: 2002-02-06

Autoren...: Kai Gehrs <acrowley@mupad.de>

Funktionen: solve, numeric::solve, normal, assume, Type::Real, ->

________________________________________________________________________________

 

Elementare MuPAD-Funktionen:

Berechnung von Nullstellen

 

Die Berechnung von Nullstellen spielt u.a. im Rahmen von Funktionsdiskussionen eine wichtige

Rolle. Wir wollen lernen, wie wir mit MuPAD Nullstellen von Funktionen bestimmen können.

 

Generell bietet MuPAD im wesentlichen zwei Möglichkeiten, die

Nullstellen einer Funktion zu berechnen.

 

(1) exakte Nullstellenbestimmung mit Hilfe der Funktion solve

(2) numerische Bestimmung von Nullstellen mittels numeric::solve

 

Die Funktion solve wollen wir als erstes kennenlernen. Wir definieren

uns einige Funktionen, deren Nullstellen wir bestimmen möchten:

 

f_1:= x -> x^2 - 5*x + 5;

f_2:= x -> x^4 - 5*x^2 + 4;

f_3:= x -> x^2 - 1;

f_4:= x -> x^2 + 1;

f_5:= x -> x^4 - 11*x^3 + 41*x^2 - 61*x + 30

math

math

math

math

math

Da wir ausschließlich reelle Zahlen betrachten, teilen wir MuPAD mit,

dass x stets eine reelle Zahl ist:

 

assume(x, Type::Real):

 

Die Berechnung der Nullstellen ist spielerisch leicht. Die Funktion solve

erhält stets zwei Argumente:

 

1. Argument: Die Funktion, deren Nullstellen

                       wir berechnen möchten, gleich 0 gesetzt

 

2. Argument: Die Funktionsvariable, nach der

                       die Gleichung aufgelöst werden soll

 

d.h. also ein Aufruf der Form solve( Funktion = 0, Funktionsvariable ).

 

Als Rückgabewert liefert uns die Funktion solve eine Menge der

Nullstellen. Will man nachträglich mit den berechneten Nullstellen

weiterrechnen, so ist es sinnvoll, den Rückgabewert der Funktion

an eine Variable zuzuweisen.

 

Dies wollen wir im folgenden an unseren Beispielfunktionen erproben.

 

Nullstellen_f_1:= solve(f_1(x) = 0, x)

math

Auf die Elemente dieser Menge greifen wir mit dem Indexoperator [ ]

zu:

 

x_1:= Nullstellen_f_1[1];

x_2:= Nullstellen_f_1[2]

math

math

Wir machen die Probe. Hier ist die Anwendung der Funktion normal

erforderlich, die Ausdrücke mit Wurzeln vereinfacht.

 

normal(f_1(x_1));

normal(f_1(x_2))

math

math

Auf dieselbe Weise können wir die Nullstellen der anderen Beispielfunktionen

berechnen:

 

solve(f_2(x) = 0, x);

solve(f_3(x) = 0, x);

solve(f_4(x) = 0, x);

solve(f_5(x) = 0, x)

math

math

math

math

Wie wir sehen, besitzt die Funktion f_4 keine reellen Nullstellen.

 

Mit Hilfe von solve können auch die Nullstellen komplizierterer

Funktionen bestimmt werden:

 

solve(sin(x) * cos(x) = 0, x)

math

Die Nullstellenmenge ist nicht endlich - sie wird von MuPAD automatisch

in Abhängigkeit eines Parameters dargestellt, der alle ganzen Zahlen

durchläuft.

 

Probleme können sich dann ergeben, wenn wir versuchen, die Nullstellen

einer Funktion zu berechnen, für die es keine exakte, geschlossene

Lösungsformel gibt.

Polynomial Gleichungen vom Grad 5 oder größer können u.U. nicht exakt

gelöst werden. Wir betrachten dazu einmal die Funktion

 

f_6:= x -> x^5 - 2*x^2 + x + 2

math

Hier liefert solve ein auf den ersten Blick obskures Ergebnis

 

solve(f_6(x) = 0, x)

math

Der Ausdruck RootOf(...) zeigt an, dass dieses Polynom nicht weiter

in Faktoren aufgespalten werden konnte.

 

Hier können wir die Nullstellen nicht exakt berechnen - wir müssen daher

auf numerische Verfahren zurückgreifen.

 

Einen Ausweg liefert die uns die Funktion numeric::solve.

 

Die Funktion numeric::solve erhält stets zwei Argumente:

 

1. Argument: Die Funktion, deren Nullstellen wir

                       wir berechnen möchten, gleich 0 gesetzt

 

2. Argument: Die Funktionsvariable, nach der

                       die Gleichung aufgelöst werden soll

 

d.h. also ein Aufruf ist immer von der Form

numeric::solve( Funktion = 0, Funktionsvariable ).

 

Als Rückgabewert liefert uns die Funktion numeric::solve eine Menge

der Nullstellen.

 

Die Aufrufsyntax ist also exakt die gleiche, wie wenn wir die Funktion

solve verwenden.

 

numeric::solve(f_6(x)=0, x) intersect R_

math

Dabei sind wir hier jedoch dazu gezwungen, mittels des Befehls intersect R_,

die reellen Nullstellen aus der Lösungsmenge zu selektieren. Wollen

wir auch die komplexen Nullstellen erhalten, so kann dieser Teil der

obigen Befehlszeile entfallen.

 

________________________________________________________________________________

 

Aufgaben:

1. Berechnen Sie die Nullstellen der folgenden Funktionen mit Hilfe der Funktion solve:

    (a) f:= 4*x^2 - 2*x

    (b) g:= 6*x^3 - 3*x

    (c) h:= cos(x) * tan(x)  

 

2. Berechnen Sie die reellen Nullstellen der folgenden Funktionen mit Hilfe der Funktion numeric::solve:

    (a) f:= 3*exp(x)^2 - 1

    (b) g:= x^7 + x - 2

    (c) h:= x^4 - x - 14

    Welche der Nullstellen lassen sich auch mit Hilfe von solve finden?

_______________________________________________________________________________

 

Anmerkungen:

 

1.  Weitere Anregungen finden Sie unter: http://schule.mupad.de bzw. http://studium.mupad.de

 

_______________________________________________________________________________

 

 

 

MuPAD Education Group: Kostenlose Materialen für MuPAD Pro:
www.sciface.com/education, schule.mupad.de, studium.mupad.de, mupad.zum.de.