Kurvendiskussion2012

Kurvendiskusion

Diskutieren Sie den Graphen der Funktion f zu f(x) = x^3-x^2.

reset:

f := x -> x^3-x^2;

f := x -> 1/12*x^4 - 2/3*x^3;

f := x -> 1/12*x^4 - 2/3*x^3 + 3/2*x^2;

Definitionsbereich

Dom::Interval(-inifity..infinity) minus discont(f(x),x)

Symmetrie

istElementarAchsensymmetrisch := proc(f,x) begin bool( f(-x)= f(x) ); end:

istElementarPunktsymmetrisch  := proc(x) begin bool( f(-x)=-f(x) ); end:

if istElementarAchsensymmetrisch(f,x) then

    print(Unquoted,"f ist achsensymmetrisch zur y-Achse")

elif istElementarPunktsymmetrisch(f,x) then

    print(Unquoted,"f ist punktsymmetrisch zum Ursprung")

else

     print(Unquoted,"f ist nicht elementar symmetrisch")

end_if:

Verhalten an den Rändern (x<<0 bzw. x>>0)

term := collect(f(x),x);

plotfunc2d(piecewise([x<-10 or x>10, term[1]]), x=-15..15);

limit(f(x),x=-infinity);

limit(f(x),x=infinity);

Verhalten bei x = 0

term := collect(f(x),x);

plotfunc2d(piecewise([x>-1 and x<1, term[nops(term)]]),

    x=-2..2, ViewingBox=[-15..15,-15..15])

Nullstellen

nullstellen := solve(f(x)=0,x,Real)

notwendige Bedingung für Extremum

f';

nullstellen1 := solve(f'(x)=0,x,Real);

zusätzliche Bedingung für Hochstelle bzw. Tiefstelle

f'';

extrempunkte := []:

for i from 1 to nops(nullstellen1) do

  z := nullstellen1[i];

  if f''(z)<0 then

    print(Unquoted, "f'(".z.")=0 und f''(".z.")<0 ==> ".z." ist Hochstelle. ");

    print(Unquoted, "Es ist H(".z."|".f(z).")");

    extrempunkte := extrempunkte . [[z,f(z)]]:

  elif f''(z)>0 then

    print(Unquoted, "f'(".z.")=0 und f''(".z.")>0 ==> ".z." ist Tiefstelle. ");

    print(Unquoted, "Es ist T(".z."|".f(z).")");

    extrempunkte := extrempunkte . [[z,f(z)]]:

  else

    print(Unquoted, "f'(".z.")=0 und f''(".z.")=0 ==> Noch unklar.");

    print(Unquoted, z." ist TP, HP oder SP.");

  end_if;

end_for;

notwendige Bedingung für Wendestelle

f'';

nullstellen2 := solve(f''(x)=0,x,Real);

zusätzliche Bedingung für Wendestelle

f''';

wendepunkte := []:

for i from 1 to nops(nullstellen2) do

  z := nullstellen2[i];

  if f'''(z)<0 then

    print(Unquoted, "f''(".z.")=0 und f'''(".z.")<0 ==> ".z." ist Wendestelle (li-re). ");

    print(Unquoted, "Es ist W(".z."|".f(z).")");

    if f'(z)=0 then print(Unquoted, "Es ist ein Sattelpunkt.") end_if;

    wendepunkte := wendepunkte . [[z,f(z)]]:

  elif f'''(z)>0 then

    print(Unquoted, "f''(".z.")=0 und f'''(".z.")>0 ==> ".z." ist Wendestelle (re-li). ");

    print(Unquoted, "Es ist W(".z."|".f(z).")");

    if f'(z)=0 then print(Unquoted, "Es ist ein Sattelpunkt.") end_if;

    wendepunkte := wendepunkte . [[z,f(z)]]:

  else

    print(Unquoted, "f''(".z.")=0 und f'''(".z.")=0 ==> ".z." ist vielleicht Wendestelle.");

  end_if;

end_for;

Anzeigebereich

stellen := op(nullstellen) , op(nullstellen1) , op(nullstellen2);

xmin := min(-4, min(stellen)-1):

xmax := max( 4, max(stellen)+1):

ymin := min(-4, min(f(stellen[i]) $i=1..nops(stellen))-1):

ymax := max( 4, max(f(stellen[i]) $i=1..nops(stellen))+1):

xmin, xmax, ymin, ymax;

Graphische Objekte

fP := plot::Function2d(f,x=xmin..xmax);

eP := plot::Point2d(extrempunkte[i]) $i=1..nops(extrempunkte);

wP := plot::Point2d(wendepunkte[i],Color=RGB::Red) $i=1..nops(wendepunkte);

Graph

plot(fP,eP,wP,ViewingBox=[xmin..xmax,ymin..ymax],Scaling=Constrained);