simplify(diff(x**n,x))

from sympy import *
init_printing()
x,n = symbols('x n')
funkcije = [1,x**n,sin(x),cos(x), exp(x),log(x)]
tabela = [[f,diff(f,x)] for f in funkcije]
tabela

"""
Explanation: ^ gor: Uvod
Odvod
Primer
Sestavimo tabelo odvodov elementarnih funkcij in pravil za odvajanje. Za simbolično odvajanje lahko uporabimo funkcijo diff iz knjižnice sympy.
End of explanation
"""


from pandas import DataFrame
DataFrame(tabela,columns={"$f(x)$","$f'(x)$"})

# za lepši izpis uporabimo funkcijo latex
tabela =[['$$%s$$' % latex(f),'$$%s$$'% latex(diff(f,x))] for f in funkcije ]
DataFrame(tabela,columns={"funkcija $f(x)$","odvod $f'(x)$"})

"""
Explanation: Lepši izpis tabele dobimo, če uporabimo knjižnico za delo s tabelami in podatki Pandas.
End of explanation
"""


%%javascript
MathJax.Hub.Config({
    "HTML-CSS": { linebreaks: {automatic: false } }
  });
// preprečimo prelom vrstic v tabeli

f,g = symbols("f,g")
import pandas as pd
pd.options.display.max_colwidth=1000 

operacije = [f(x)+g(x), f(x)*g(x), f(x)/g(x), f(x)**g(x),f(g(x))]
fmt = "$$%s$$"
tabela = [[fmt % latex(op),fmt % latex(simplify(diff(op,x)))] for op in operacije]
df_tabela = DataFrame(tabela, columns=["funkcija $f(x)$","pravilo za odvod $f'(x)$"],) 
df_tabela

"""
Explanation: Pravila za odvajanje
Sestavimo še tabelo pravil za odvajanje. Vključimo pravila za osnovne operacije in kompozitum.
End of explanation
"""


import disqus
%reload_ext disqus
%disqus matpy

"""
Explanation: Naloga
Izpiši tabelo odvodov funkcij $\tan$ in inverznih trigonometričnih funkcij $\arcsin$, $\arccos$ in $\arctan$. Nato izpiši še pravilo za odvod $$\frac{1}{f(x)}\text{ in }\log(f(x)).$$
>> naprej: tangenta
End of explanation
"""


