load (draw); /* Funktion und Stelle der Ableitung */ /* Achtung, der y-Wert muss positiv sein und die Steigung dort ebenfalls */ f(x) := x^2 + 1; x0 : 1; hmax : 4; /* Wie gro"s soll das Bild werden? */ xmax : 5; rand : 2; bildymax : f(xmax) + rand; /* Gerade zwischen den beiden Punkten, groesste Steigung, groesster b Wert */ m1 : (f(x0 + hmax) - f(x0) ) / hmax ; m2 : ''(diff ( f(x), x, 1)), x = x0; b1 : f(x0) - m1 * x0; b2 : f(x0) - m2 * x0; tmpbildymax : lmax ([ 0, f(xmax), b1, b2 ]); tmpbildymin : lmin ([ 0, f(xmax), b1, b2 ]); bildymax : tmpbildymax + rand; bildymin : tmpbildymin - rand; set_draw_default ( xrange : [0, xmax + 2], yrange : [bildymin, bildymax] )$ koord : [ head_length = 0.1, /* Pfeil-Kopflaenge */ color = black, vector ([0, 0], [xmax+1, 0]), /* x-Achse */ vector ([0, bildymin], [0, bildymax+1 - bildymin]), /* y-Achse */ xtics_axis = true, ytics_axis = true, xaxis = true, yaxis = true ]$ dreieck (h) := block ([m, b], m : (f(x0 + h) - f(x0) ) / h , b : f(x0) - m * x0, g(x) := ''( m * x + b), dreiecksbild : [ explicit (g(x), x, 0, xmax), points_joined = true, line_width = 2, color = red, points ([ [x0, f(x0)], [x0+h, f(x0)], [x0+h, f(x0+h)] ]) ] )$ bild(h) := gr2d( user_preamble = ["set noborder"], koord, dreieck (h), color = black, explicit (f(x), x, 0, xmax) )$ hwerte : [4, 3.5, 3, 2.5, 2, 1.5, 1.5, 1, 0.5, 0.25, 0.125]; hwerte : makelist ( 4* %e^(-0.25*x), x, 0, 15); bilder : map (bild, hwerte); draw ( delay = 80, dimensions = [500, 500], file_name = "grenzwertbildungDifferenzialquotient", terminal = 'animated_gif, bilder );