@interact
def erotusosamaara(f = input_box(default=sin(x)),
vali = range_slider(0, 10, 0.1, default=(0.0, 10.0), label="Piirtoväli"),
a = slider(0, 10, None, 5.5),
x0 = slider(0, 10, None, 2.5)):
f(x) = f
fmax = f.find_maximum_on_interval(vali[0], vali[1])[0]
fmin = f.find_minimum_on_interval(vali[0], vali[1])[0]
f_korkeus = fmax - fmin
# Välin [x0, a] esittämiseen liittyvä grafiikka.
alaviiva_y = fmin - 0.1*f_korkeus
alaviiva_0 = line2d([(x0, alaviiva_y), (a, alaviiva_y)], rgbcolor="black")
alaviiva_1 = line2d([(x0, alaviiva_y + 0.02*f_korkeus), (x0, alaviiva_y-0.02*f_korkeus)], rgbcolor="black")
alaviiva_2 = line2d([(a, alaviiva_y + 0.02*f_korkeus), (a, alaviiva_y-0.02*f_korkeus)], rgbcolor="black")
teksti_x0 = text("x0", (x0, alaviiva_y - 0.05*f_korkeus), rgbcolor="black")
teksti_a = text("a", (a, alaviiva_y - 0.05*f_korkeus), rgbcolor="black")
alaviiva = alaviiva_0 + alaviiva_1 + alaviiva_2 + teksti_x0 + teksti_a
# Pisteiden (x0, f(x0)) ja (a, f(a)) kulkevan suoran yhtälö.
tanf(x) = (f(x0)-f(a))*(x-a)/(x0-a) + f(a)
# Esitetään suora ja siihen liittyvä grafiikka.
fplot = plot(f(x), x, vali[0], vali[1])
tanplot = plot(tanf(x), x, vali[0], vali[1], rgbcolor=(1,0,0))
pisteet = point([(x0,f(x0)), (a,f(a))], pointsize=20, rgbcolor="#005500")
katkoviiva = line2d([(x0,f(x0)), (x0,f(a)), (a,f(a))], rgbcolor="#005500", linestyle="--")
show(fplot + tanplot + pisteet + katkoviiva + alaviiva, xmin=vali[0], xmax=vali[1], ymin=fmin-0.2*f_korkeus, ymax=fmax)
# Esitetään suoran yhtälö ja kulmakerroin.
html("<br>$\\text{Suoran yhtälö:}$")
html("$y = %s$<br>"%tanf(x))
html("$\\text{Suoran kulmakerroin:}$")
html("$k=\\frac{f(x0)-f(a)}{x0-a}=%s$<br>"%(N(derivative(tanf(x), x), digits=5)))
|
|
Click to the left again to hide and once more to show the dynamic interactive window
|