In [25]:
import sympy as sp
from IPython.display import display, Math, Latex

In [26]:
s, M, p, N= sp.symbols('s M p N') #Variablennamen einsetzen 'd' ist reserviert
variablen = [s,M,p,N]
variablen_werte = [2.77e-29,9.27e-26,7860,2.687e25]
fehler_werte = [0,0.0003e-26,0,0]

In [27]:
funktion = (26*N*p)/(M)*s

In [28]:
fehler = 0
fehlersymbole =[]
ableitungen_quadr = []

for var in variablen:
    d = sp.symbols('d' + var.name)
    fehlersymbole.append(d)
    partial = sp.diff(funktion, var) * d
    ableitungen_quadr.append(partial**2)
    fehler = fehler + partial**2
    
fehler_abs=sp.simplify(sp.sqrt(fehler))
fehler_rel=sp.simplify(sp.sqrt(fehler/funktion**2))

In [29]:
funktions_wert=sp.Subs(funktion,variablen,variablen_werte).doit()
err1=sp.Subs(fehler,variablen,variablen_werte).doit()
err2=sp.Subs(err1,fehlersymbole,fehler_werte).doit()

In [30]:
print('Funktion:')
display(Math('f='+sp.latex(funktion)))

print('Messwerte:')
for i in range(len(variablen)):
    display(Math(str(variablen[i])+'='+str(variablen_werte[i])+'\pm'+
                str(fehler_werte[i])))
print('Absoluter Fehler:')
display(Math(r"\Delta f="+sp.latex(fehler_abs).replace('d',r'\Delta ')))
print('Relativer Fehler:')
display(Math(r"\Delta f/f="+sp.latex(fehler_abs).replace('d',r'\Delta ')))
display(Math('f= %2.6f \pm %2.6f' %(funktions_wert,sp.sqrt(err2))))
display(Math('f= %6.2f \pm %6.1f %s' %(funktions_wert,sp.sqrt(err2)/
                                      funktions_wert*100,'\%')))


Funktion:
$$f=\frac{26 N}{M} p s$$
Messwerte:
$$s=2.77e-29\pm0$$
$$M=9.27\pm3e-30$$
$$p=7860\pm0$$
$$N=2.687e+25\pm0$$
Absoluter Fehler:
$$\Delta f=26 \sqrt{\frac{1}{M^{4}} \left(M^{2} \left(N^{2} \Delta p^{2} s^{2} + N^{2} \Delta s^{2} p^{2} + \Delta N^{2} p^{2} s^{2}\right) + N^{2} \Delta M^{2} p^{2} s^{2}\right)}$$
Relativer Fehler:
$$\Delta f/f=26 \sqrt{\frac{1}{M^{4}} \left(M^{2} \left(N^{2} \Delta p^{2} s^{2} + N^{2} \Delta s^{2} p^{2} + \Delta N^{2} p^{2} s^{2}\right) + N^{2} \Delta M^{2} p^{2} s^{2}\right)}$$
$$f= 16.408300 \pm 0.000000$$
$$f= 16.41 \pm 0.0 \%$$

In [ ]: