from matplotlib import ticker
TT = ticker.FormatStrFormatter('%.7f')
import numpy as np
%display latex
Ispitajte tok funkcije $f(x)=\dfrac{x+10}{x^2-10x+26}-2.$
f(x)=(x+10)/(x^2-10*x+26)-2
nul = solve(f(x)==0,x)
nul
list(map(lambda x: n(x.rhs()), nul))
der=diff(f(x),x).factor()
der
stac = solve(der==0,x)
stac
stac_num = list(map(lambda x: n(x.rhs()), stac))
stac_num
der2 = diff(f(x),x,2)
der2.factor()
ispitivanje karaktera stacionarnih točaka pomoću druge derivacije
list(map(lambda t: der2.subs(x=t), stac_num))
pripadne točke lokalnog minimuma i lokalnog maksimuma na grafu funkcije
list(map(lambda t: (t, f(t)), stac_num))
Na većoj domeni uočavamo sa slike dvije nultočke od $f''$
plot(der2,x,-50,10)
Zumiramo sliku na manji dio domene od $f''$ gdje smo uočili nultočke
plot(der2,x,-1,8)
sa zumirane slike vidimo da se nultočke nalaze na intervalima $\langle4,5\rangle$ i $\langle5,6\rangle$
a1 = find_root(der2,4,5)
a1
a2 = find_root(der2,5,6)
a2
Međutim, $f''$ ima još jednu nultočku koju tek jasno vidimo ako zumiramo sliku na dio domene oko broja $-40$.
Uočite kako $f''$ poprima jako male vrijednosti na segmentu $[-50,-30]$ zbog čega je bilo teško uočiti njezinu
treću nultočke sa slike koja pokriva veći dio domene.
plot(der2,x,-50,-30,tick_formatter=[None,TT])
a3 = find_root(der2,-45,-35)
a3
točke infleksije na grafu funkcije $f$
infleksije = list(map(lambda t: (t, f(t)), [a1,a2,a3]))
infleksije
Nultočke od $f''$ svode se na traženje nultočaka polinoma $x^3+30x^2-378x+1000$.
Postoje numerički algoritmi koji mogu dati sve nultočke zadanog polinoma bez da moramo crtati sliku.
Takav algoritam je implementiran u python numpy modulu.
np.roots([1, 30, -378, 1000])
Također, u SageMath alatu klasa koja reprezentira polinome ima metodu roots
koja daje sve nultočke polinoma u nekom polju (u ovom slučaju nas zanimaju samo realne nultočke).
R.<t>=QQ[]
p = t^3 + 30*t^2 -378*t + 1000
p.roots(RR)
Graf funkcije $f$
slika1 = plot(f(x),(x,-90,20),gridlines=True) + point(infleksije, size=20)
slika2 = plot(f(x),(x,-26,-24),gridlines=True,frame=True,tick_formatter=[None,TT],fontsize=9)
slika3 = plot(f(x),(x,-90,-20),gridlines=True,frame=True,tick_formatter=[None,TT],fontsize=9)
slika = multi_graphics([slika1, (slika2, (0.42, 0.26, 0.28, 0.28)), (slika3, (0.22, 0.58, 0.28, 0.28))])
slika.show(figsize=[10,8])
spremanje slike u tekući direktorij u png format željene kvalitete i dimenzija
slika.save("fun1.png", figsize=[10,8], dpi=300)