Python - výpočet funkce exp(x): Porovnání verzí
mBez shrnutí editace |
m překlep |
||
Řádek 49: | Řádek 49: | ||
===== Otázky ===== | ===== Otázky ===== | ||
# vysvětlete podmínku cyklu <tt>while</tt> (předpokládáme, že relativní přesnost dané aritmetiky pohyblivé | # vysvětlete podmínku cyklu <tt>while</tt> (předpokládáme, že relativní přesnost dané aritmetiky pohyblivé řádové čárky je <math>10^{-16}</math> ) | ||
# proč funkce <tt>Exp(x)</tt> dává správné výsledky pro kladné argumenty a nepřesné výsledky pro argumenty záporné | # proč funkce <tt>Exp(x)</tt> dává správné výsledky pro kladné argumenty a nepřesné výsledky pro argumenty záporné | ||
# upravte funkci <tt>Exp(x)</tt> tak, aby dávala správné výsledky i pro záporné argumenty | # upravte funkci <tt>Exp(x)</tt> tak, aby dávala správné výsledky i pro záporné argumenty |
Verze z 28. 1. 2006, 21:23
Uživatelská funkce Exp(x) počítá Taylorův rozvoj funkce
#!/usr/bin/python from math import exp def Exp(x): clen = suma = N = 1.0 while abs(clen) > suma*1e-16: clen *= x/N suma += clen N += 1 return suma for a in range(-10,11): e = exp(a) E = Exp(a) print '%5.1f %18.12f %11.4e' % (a, E, (e-E)/e)
Na výstupu program vypisuje argument, vypočtenou hodnotu funkce a její relativní chybu určenou porovnáním se standardní funkcí math.expt(x)
-10.0 0.000045399930 2.0283e-09 -9.0 0.000123409804 1.5204e-09 -8.0 0.000335462628 1.3348e-10 -7.0 0.000911881966 5.2224e-12 -6.0 0.002478752177 -1.4968e-12 -5.0 0.006737946999 1.2306e-13 -4.0 0.018315638889 1.2313e-14 -3.0 0.049787068368 -1.6725e-15 -2.0 0.135335283237 -2.0509e-16 -1.0 0.367879441171 -3.0179e-16 0.0 1.000000000000 0.0000e+00 1.0 2.718281828459 -1.6337e-16 2.0 7.389056098931 2.4040e-16 3.0 20.085536923188 3.5376e-16 4.0 54.598150033144 -5.2056e-16 5.0 148.413159102577 0.0000e+00 6.0 403.428793492735 0.0000e+00 7.0 1096.633158428458 6.2201e-16 8.0 2980.957987041726 6.1020e-16 9.0 8103.083927575382 2.2448e-16 10.0 22026.465794806714 1.6516e-16
Otázky
- vysvětlete podmínku cyklu while (předpokládáme, že relativní přesnost dané aritmetiky pohyblivé řádové čárky je )
- proč funkce Exp(x) dává správné výsledky pro kladné argumenty a nepřesné výsledky pro argumenty záporné
- upravte funkci Exp(x) tak, aby dávala správné výsledky i pro záporné argumenty