pi.n()
n(pi)
float(pi)
expand(x*(x-1)*(x+3)^2).show()
vyraz = x*(x-1)*(x+3)^2
# zobrazeni zadani (pro kontrolu)
vyraz.show()
# vypocet
vyraz.expand().show()
factor(x^4+5*x^3+3*x^2-9*x).show()
show(solve(2*e^(x^2-1) == 3, x))
rovnice = 2*e^(x^2-1) == 3
reseni = rovnice.solve(x)
show(rovnice)
show(reseni)
reseni=solve(2*e^(x^2-1) == 3, x)
show(reseni)
# s každou položkou seznamu řešení provedeme následující:
# levou stranu rovnice necháme, pravou aproximujeme funkcí n()
vysl=map(lambda x: x.lhs()==x.rhs().n(), reseni)
show(vysl)
diff(x^2*sin(x),x).show()
vyraz = x^2*sin(x)
# tisk výrazu (pro kontrolu)
vyraz.show()
# derivace podle x
# je možno psát i derivace = diff(vyraz, x)
derivace = vyraz.diff(x)
# zobrazení výsledku
derivace.show()
vyraz = log(sqrt((x-1)/(x+1)))
# pro derivaci podle x můžeme psát
# vyraz.derivace(x)
# nebo
# diff(vyraz, x)
derivace = vyraz.diff(x)
vyraz.show()
derivace.factor().show()
derivace=diff(log(sqrt((x-1)/(x+1))),x)
derivace.simplify_full().show()
# bez úpravy
diff(x^3/(x+1)^2,x,2).show()
# s úpravou
diff(x^3/(x+1)^2,x,2).factor().show()
taylor(log((1+x)/(1-x)), x, 0, 7).show()
derivace=diff(x^2/(x-1),x)
show(solve(derivace,x))
# ---> sbalit <---
# zadaná funkce, funkci můžete změnit
f = x^2*(x-1)
# můžete zadat meze na ose x
xmin, xmax = -1, 1.5
# meze na ose y můžete nechat automatické (None), nebo zadat (místo None napište číslo)
ymin, ymax = None, None
#################################################################
# dál už nic nemusíte číst ani upravovat, jenom spusťte výpočet #
#################################################################
def prubeh(f,(x,xmin,xmax),ymin=None, ymax=None):
r"""
Procedura nakresli graf funkce f na intervalu xmax, xmin, vypocte nulove, stacionarni a
kriticke body.
Je mozno zadat nepovinne parametry ymin a ymax pro rozsah hodnot na svisle ose.
"""
P = plot(f,(x,xmin,xmax),detect_poles=True)
tab=[[r"<h3>Funkce", r"$\displaystyle y=%s$</h3>"%latex(f)]]
tab.append([r"1. derivace", r"$\displaystyle y'=%s$"%latex(factor(diff(f,x)))])
tab.append([r"2. derivace", r"$\displaystyle y'=%s$"%latex(factor(diff(f,x,2)))])
_temp = solve(f,x, solution_dict=True, explicit_solutions=True)
_nulove_body = [i[x] for i in _temp if i[x].imag().n() == 0]
_temp = solve(diff(f,x),x, solution_dict=True, explicit_solutions=True)
_stac_body = [i[x] for i in _temp if i[x].imag().n() == 0]
_temp = solve(diff(f,x,2),x, solution_dict=True, explicit_solutions=True)
_krit_body = [i[x] for i in _temp if i[x].imag().n() == 0]
if len(_stac_body)>0:
P += point2d([(i,f(x=i)) for i in _stac_body], color='red', size=30, zorder=8)
if len(_krit_body)>0:
P += point2d([(i,f(x=i)) for i in _krit_body], color='black', size=15, zorder=9)
tab.append([r"Nulové body", r"$\displaystyle %s$"%latex(tisk_bodu(_nulove_body))])
tab.append([r"Stacionární body", r"$\displaystyle %s$ (v grafu červeně)"%latex(tisk_bodu(_stac_body))])
tab.append([r"Kritické body", r"$\displaystyle %s$ (v grafu černě)"%latex(tisk_bodu(_krit_body))])
html.table(tab)
if P.ymax()>300 and ymax is None:
ymax = 20
if P.ymin()<-300 and ymin is None:
ymin = -20
show(P,ymax=ymax,ymin=ymin)
def tisk_bodu(a):
if len(a)==1:
return [x==a[0]]
else:
return [x==i for i in a]
prubeh(f,(x,xmin,xmax),ymin=ymin,ymax=ymax)# <---- rozbalit --->
# kód je příliš dlouhý
# zobrazí se po rozbalení,
# nebo na stránce, na kterou vedou odkazy pro spuštění
integrate (x^2*sin(x),x).show()
funkce = x^2*sin(x)
# zobrazení funkce pro kontrolu
funkce.show()
# výsledek integrace podle x
funkce.integrate (x).show()
# je možné psát i
# integrate(funkce,x)
integrate (x^(1/2)*log(x),(x,1,e)).show()
x,y = var('x y')
plot_slope_field(x+y^2, (x,-3,3), (y,-3,3))
y=function('y',x)
rovnice = diff(y,x) == y/x + 1
# řešení
desolve(rovnice, y).show()
# řešení v roznásobeném tvaru
desolve(rovnice, y).expand().show()
y=function('y',x)
rovnice = diff(y,x) == y/x + 1
podminka = [1,-3]
# řešení
reseni=desolve(rovnice, y, ics=podminka)
reseni.show()
y = function('y',x)
rovnice = diff(y,x,2) + 3*diff(y,x) + 2*y == x
desolve(rovnice, y).show()
y = function('y',x)
rovnice = diff(y,x,2) + 3*diff(y,x) + 2*y == x
podminka = [0,0,3]
desolve(rovnice, y, ics=podminka).show()
# ---> sbalit <---
x,y=var('x,y') # definice promennych
## prave strany autonomniho systemu
f, g = x+2*y, y*(y+2)*(x+1)
#################################################################
# dál už nic nemusíte číst ani upravovat, jenom spusťte výpočet #
#################################################################
def as_tabulka(de_x,de_y):
# Tisk zadani pro kontrolu
html(r"Autonomní systém $\left\{\begin{aligned}x'&=%s\\y'&=%s\end{aligned}\right.$." %(latex(de_x),latex(de_y)))
# nalezeni stacionarnich bodu a jakobianu
stacionarni_body=solve([de_x,de_y], [x,y], solution_dict=True)
jacobiho_matice=jacobian((de_x,de_y),(x,y))
A=[["Stacionární bod","Jacobiho matice","Vlastní hodnoty"]]
# cyklus pres vsechny stacionarni body
for s in stacionarni_body:
# budeme pracovat pouze s resenimi, ktera jsou realna cisla,
# tj ktera maji nulou imaginarni cast
if s[x].imag() == 0 and s[y].imag() == 0:
A.append([[s[x],s[y]], jacobiho_matice(s),\
[a.real().n(20)+I*a.imag().n(20) for a in jacobiho_matice(s).eigenvalues()]])
# vytiskneme tabulku
html.table(A,header=True)
as_tabulka(f,g)# <---- rozbalit --->
# kód je příliš dlouhý
# zobrazí se po rozbalení,
# nebo na stránce, na kterou vedou odkazy pro spuštění
plot(x^3-2*x^2,(x,-3,3))
f(x) = x^3-2*x^2
# zobrazeni funkce pro kontrolu
show(f(x))
# nakresleni grafu
plot(f(x),(x,-3,3))
plot(x^2*exp(-x),(x,-2,7),ymax=2)
plot([x^2,2*x+1],(x,-3,3))
# verze s barevným odlišením a se zobrazením prusečíku funkcí
f(x) = x^2
g(x) = 2*x+1
OBR = plot(f,(x,-3,3))
OBR = OBR+plot(g,(x,-3,3),color='red')
pruseciky = solve(f(x)==g(x), x, solution_dict=1, explicit_solutions=1)
for i in pruseciky:
OBR = OBR + point([i[x],f(i[x])], rgbcolor='black',zorder=3, size=25)
OBR
# graf je možno otáčet a přibližovat myší
y=var('y')
plot3d(x^2-y^2, (x,-1,1), (y,-1,1))
# Krátká verze
x,y = var('x,y')
contour_plot( sqrt(x^2+y^2)+0.3*sin(x*y) , (x,-4,4) , (y,-4,4))
# ---> sbalit <---
# Rozšířená verze
x,y = var('x,y')
# Nastavení funkce, mezí a parametrů pro kreslení
f(x,y)=sqrt(x^2+y^2)+0.3*sin(x*y)
x_meze = (x,-4,4)
y_meze = (y,-4,4)
pocet_vrstevnic = 30
pocet_bodu = 200
# Příkaz pro tisk zadání a vykreslení vrstevnic(nemusíte většinou už upravovat)
show(f(x,y))
contour_plot(f, x_meze , y_meze,plot_points=pocet_bodu,cmap='gnuplot_r',labels=1,colorbar=1,fill=0,contours=pocet_vrstevnic)# <---- rozbalit --->
# kód je příliš dlouhý
# zobrazí se po rozbalení,
# nebo na stránce, na kterou vedou odkazy pro spuštění
x,y=var('x,y')
diff(y*x*sin(x+y^2), y).show()
x,y=var('x,y')
diff(y*x*sin(x+y^2), x, 3, y, 2).show()
var('x y')
f=x^2*y^2-x^2-y^2
show(f)
show(solve([diff(f,x),diff(f,y)],[x,y]))
# ---> sbalit <---
x,y=var('x y')
########################################################
# Na následujícím řádku můžete upravit funkční předpis #
########################################################
f(x,y)=x^2*y^2-x^2-y^2
############################################################
# dál už není potřeba nic upravovat, jenom spustit výpočet #
############################################################
def loc_extr(funkce):
html(r'Funkce $z=%s$'%latex(funkce))
sols=solve([diff(funkce,x),diff(funkce,y)],[x,y], solution_dict=True)
fxx=diff(funkce,x,x)
H=funkce.hessian().determinant()
A=[["Stacionární bod","Hesián","$f''_{xx}$","rozhodnutí"]]
for s in sols:
if H.subs(s) < 0:
druha_derivace='...'
rozhodnuti='sedlo'
elif H.subs(s) > 0:
druha_derivace=fxx.subs(s)
if fxx.subs(s) > 0:
rozhodnuti='minimum'
else:
rozhodnuti='maximum'
else:
druha_derivace='...'
rozhodnuti='???'
A.append([[s[x],s[y]],H.subs(s),druha_derivace,rozhodnuti])
html.table(A,header=True)
loc_extr(f(x,y))# <---- rozbalit --->
# kód je příliš dlouhý
# zobrazí se po rozbalení,
# nebo na stránce, na kterou vedou odkazy pro spuštění
A=matrix([[9, 3, 5], [-6, -9, 7], [-1, -8, 1]])
show(A)
show(rank(A))
A=matrix([[9, 3, 5], [-6, -9, 7], [-1, -8, 1]])
show(A)
show(det(A))
x1,x2,x3 = var('x1,x2,x3')
soustava=[x1+3*x2+4*x3==1, x1-x3==9, x1+x3==8]
show(soustava)
reseni=solve (soustava,[x1,x2,x3])
show(reseni)
# ---> sbalit <---
var('x1 x2 x3')
A=matrix([[1,2,3],[3,-1,2],[1,3,2]])
X=matrix([[x1,x2,x3]]).transpose()
B=matrix([[11,12,13]]).transpose()
html("<h2>Matice $A$, $X$, $B$</h2>")
show([A,X,B])
html("<h2>Matice $AX$, $B$</h2>")
show([A*X,B])
html("<h2>Soustava $AX=B$</h2>")
soustava = [(A*X)[i][0] == B[i][0] for i in range(len(A.rows()))]
show(matrix([soustava]).transpose())
html("<h2>Řešení soustavy $AX=B$</h2>")
show(solve(soustava, [x1,x2,x3]))
html("<h2>Vektor $A^{-1}B$</h2>")
show(A^(-1)*B)# <---- rozbalit --->
# kód je příliš dlouhý
# zobrazí se po rozbalení,
# nebo na stránce, na kterou vedou odkazy pro spuštění