under development
Dies richtet sich an deutschsprachige Lehrerinnen und Lehrer und Schülerinnen und Schüler, die eine automatische Kurvendiskussion für Übungsaufgaben haben wollen. Dabei wird das freie Algebrasystem Maxima (wxMaxima) verwendet.
Die Funktion
f(x):=x^4-x^2;
Jetzt können die folgenden Funktionen angewendet werden. Das erste Argument ist immer die Funktion, das zweite die Variable.
Bestimmt den Definitionsbereich (nur Division durch null) durch Nullstellen von
Definitionsbereich(f,x):=
block(
disp("======","Definitionsbereich:"),
print("Definitionsluecken durch Division durch Null:", solve(1/f(x),x)),
print("Definitionsluecken durch negative Wurzel: fehlt!"))$
Definitionsbereich(f,x);
Bestimmt die (Achsen-/Punkt-)Symmetrie und gibt unbekannt zurück falls keine Symmetrie durch Reduktion nachgewiesen werden kann.
Symmetrie(f,x):=
block(
disp("======","Symmetrie (zum Koordinatensystem):"),
print("Achsensymmetrie: f(x)=-f(x):",is(equal(f(x),f(-x)))),
print("Punktsymmetrie: f(-x)=-f(x):",is(equal(f(-x),-f(x)))))$
Symmetrie(f,x);
VerhaltenImUnendlichen(f,x):=
block(
disp("======","Verhalten im Undendlichen:"),
print("Grenzwert gegen -unendlich:",limit(f(x),x,minf)),
print("Grenzwert gegen unendlich:",limit(f(x),x,inf)))$
VerhaltenImUnendlichen(f,x);
SchnittpunktMitY(f,x):=
block(
disp("======","Schnittpunkt mit der y-Achse:"),
print("Schnittpunkt y:",f(0)))$
SchnittpunktMitY(f,x);
Bestimmen von Hoch- und Tiefpunkten mit der 2. Ableitung als Kriterium. Falls die 2. Ableitung auch 0 ist wird keine Lösung angegeben.
Extrema(f,x):=
block([f1,f2,j,xx,yy,ddf],
f1(x):=(diff(f(x),x)),
f2(x):=(diff(f1(x),x)),
disp("======","Extrema: "),
disp("Notwendige Bedingung: f'(x)=0 (mit GTR)"),
N:solve(f1(x),x),
print("moegl. Extrema: ",N),
disp("Hinreichende Bedingung:"),
j:0,
for xx in N do(
j:j+1,
ddf:at(f2(x),xx),
if ddf < 0 then print(j,": f''(x_",j,")=",ddf,"< 0 => Hochpunkt","Punkt: (",rhs(xx),"|",rhs(f(xx)),")" )
elseif ddf > 0 then print(j,": f''(x_",j,")=",ddf,"> 0 => Tiefpunkt","Punkt: (",rhs(xx),"|",rhs(f(xx)),")" )
else print("unbekannt")))$
Extrema(f,x);
Wendestellen(f,x):=
block([f1,f2,f3,j,xx,ddf,N],
f1(x):=(diff(f(x),x)),
f2(x):=(diff(f1(x),x)),
f3(x):=(diff(f2(x),x)),
disp("======","Wendestellen: "),
disp("Notwendige Bedingung: f''(x)=0 (mit GTR)"),
N:solve(f2(x),x),
print("moegl. Wendestellen: ",N),
j:0,
for xx in N do(
j:j+1,
ddf:at(f3(x),xx),
if ddf < 0 then print(j,": f'''(x_",j,")=",ddf,"< 0 => L-R-Wendestelle","Punkt: (",rhs(xx),"|",rhs(f(xx)),")" )
elseif ddf > 0 then print(j,": f'''(x_",j,")=",ddf,"> 0 => R-L-Wendestelle","Punkt: (",rhs(xx),"|",rhs(f(xx)),")")
else print("unbekannt")))$
Wendestellen(f,x);
Kurvendiskussion(f,x):=
block(
disp("Kurvendiskussion"),
print("Untersuche die Funktion: f(x)=", f(x)),
Definitionsbereich(f,x),
Achsensymmetrie(f,x),
VerhaltenImUnendlichen(f,x),
SchnittpunktMitY(f,x),
Extrema(f,x),
Wendestellen(f,x)
);
Kurvendikussion(f,x);
Definitionsbereich(f,x):=
block(
disp("======","Definitionsbereich:"),
print("Definitionsluecken durch Division durch Null:", solve(1/f(x),x)),
print("Definitionsluecken durch negative Wurzel: fehlt!"))$
Symmetrie(f,x):=
block(
disp("======","Symmetrie (zum Koordinatensystem):"),
print("Achsensymmetrie: f(x)=-f(x):",is(equal(f(x),f(-x)))),
print("Punktsymmetrie: f(-x)=-f(x):",is(equal(f(-x),-f(x)))))$
VerhaltenImUnendlichen(f,x):=
block(
disp("======","Verhalten im Undendlichen:"),
print("Grenzwert gegen -unendlich:",limit(f(x),x,minf)),
print("Grenzwert gegen unendlich:",limit(f(x),x,inf)))$
SchnittpunktMitY(f,x):=
block(
disp("======","Schnittpunkt mit der y-Achse:"),
print("Schnittpunkt y:",f(0)))$
Extrema(f,x):=
block([f1,f2,j,xx,yy,ddf],
f1(x):=(diff(f(x),x)),
f2(x):=(diff(f1(x),x)),
disp("======","Extrema: "),
disp("Notwendige Bedingung: f'(x)=0 (mit GTR)"),
N:solve(f1(x),x),
print("moegl. Extrema: ",N),
disp("Hinreichende Bedingung:"),
j:0,
for xx in N do(
j:j+1,
ddf:at(f2(x),xx),
if ddf < 0 then print(j,": f''(x_",j,")=",ddf,"< 0 => Hochpunkt","Punkt: (",rhs(xx),"|",rhs(f(xx)),")" )
elseif ddf > 0 then print(j,": f''(x_",j,")=",ddf,"> 0 => Tiefpunkt","Punkt: (",rhs(xx),"|",rhs(f(xx)),")" )
else print("unbekannt")))$
Wendestellen(f,x):=
block([f1,f2,f3,j,xx,ddf,N],
f1(x):=(diff(f(x),x)),
f2(x):=(diff(f1(x),x)),
f3(x):=(diff(f2(x),x)),
disp("======","Wendestellen: "),
disp("Notwendige Bedingung: f''(x)=0 (mit GTR)"),
N:solve(f2(x),x),
print("moegl. Wendestellen: ",N),
j:0,
for xx in N do(
j:j+1,
ddf:at(f3(x),xx),
if ddf < 0 then print(j,": f'''(x_",j,")=",ddf,"< 0 => L-R-Wendestelle","Punkt: (",rhs(xx),"|",rhs(f(xx)),")" )
elseif ddf > 0 then print(j,": f'''(x_",j,")=",ddf,"> 0 => R-L-Wendestelle","Punkt: (",rhs(xx),"|",rhs(f(xx)),")")
else print("unbekannt")))$
Kurvendiskussion(f,x):=
block(
disp("Kurvendiskussion"),
print("Untersuche die Funktion: f(x)=", f(x)),
Definitionsbereich(f,t),
Achsensymmetrie(f,t),
VerhaltenImUnendlichen(f,t),
SchnittpunktMitY(f,t),
Extrema(f,t),
Wendestellen(f,t)
)$
Erwartete Ausgabe:
"Kurvendiskussion"
"Untersuche die Funktion: f(x)="0.25*x^3-12*x^2+144*x
"======"
"Definitionsbereich:"
rat: replaced 0.25 by 1/4 = 0.25
"Definitionsluecken durch Division durch Null:"[]
"Definitionsluecken durch negative Wurzel: fehlt!"
"======"
"Symmetrie (zum Koordinatensystem):"
rat: replaced 0.5 by 1/2 = 0.5
"Achsensymmetrie: f(x)=-f(x):"unknown
"Punktsymmetrie: f(-x)=-f(x):"unknown
"======"
"Verhalten im Undendlichen:"
"Grenzwert gegen -unendlich:"-inf
"Grenzwert gegen unendlich:"inf
"======"
"Schnittpunkt mit der y-Achse:"
"Schnittpunkt y:"0
"======"
"Nullstellen:"
rat: replaced 0.25 by 1/4 = 0.25
"Punkt: N"1"= ("24"|0)"
"Punkt: N"2"= ("0"|0)"
"======"
"Ableitungen:"
f1(x)=0.75*x^2-24*x+144
f2(x)=1.5*x-24
f3(x)=1.5
"======"
"Extrema: "
"Notwendige Bedingung: f'(x)=0 (mit GTR)"
rat: replaced 0.75 by 3/4 = 0.75
"moegl. Extrema: "[x=24,x=8]
"Hinreichende Bedingung:"
1": f''(x_"1")="12.0"> 0 => Tiefpunkt""Punkt: ("24"|"0.0")"
2": f''(x_"2")="-12.0"< 0 => Hochpunkt""Punkt: ("8"|"512.0")"
"======"
"Wendestellen: "
"Notwendige Bedingung: f''(x)=0 (mit GTR)"
rat: replaced 1.5 by 3/2 = 1.5
"moegl. Wendestellen: "[x=16]
1": f'''(x_"1")="1.5"> 0 => R-L-Wendestelle""Punkt: ("16"|"256.0")"