Seite 1 von 1
Logarithmus
Verfasst: Montag 19. Juni 2006, 17:26
von tyho
EIne ganz kleine Frage
Welche Funktion berechnet den 10er Logarithmus einer Zahl?
Hab irgendwo mal log10(x) gelesen, klappt aber nicht
mfg tyho
PS: Kann mir jemand nen Tipp geben, wie man sowas selber finden kann?^^ googlen hilft nicht

Verfasst: Montag 19. Juni 2006, 17:34
von querdenker
Was geht denn da nicht??
Und zu dem Thema Wie suche ich richtig:
Ich habe einfach mal
python log10(x)
in die Google-Suche eingegeben, und der erste Treffer zeigt
hierhin.
mfg, querdenker
Verfasst: Montag 19. Juni 2006, 17:38
von Python 47
Oder du schaust einfach in das python manual
Verfasst: Montag 19. Juni 2006, 18:06
von tyho
danke schön

Re: Logarithmus
Verfasst: Donnerstag 14. Mai 2020, 21:42
von tiziantheonlyone
Sooo… 14 Jahre zu spät... aber ich hoffe irgendwer liest das hier und es hilft ihm. Ich glaube es gibt so wirklich keine Logarithmus Funktion in Python... daher hab ich hier meine eigene Variante eines Logarithmus-Rechners
Er Funktioniert nach dem Annährungsprinzip. Funktioniert aber meiner Meinung nach gut. g = b**100 und k = b**(-100) begrenzen den Taschenrechner auf den Maximalwert 100 des gesuchten Exponenten und den Minimalwert auf -100.
b = float(input("Was ist deine Basis?"))
if b == 0:
print("Der gesuchte Exponent ist 0")
quit()
e = float(input("Was ist dein Ergebnis?"))
if e == 0:
print("Der gesuchte Exponent ist 1")
quit()
else:
g = b**100
k = b**(-100)
lg = 100
lk =-100
m = (lk+lg)/2
if e > g:
quit("Der gesuchte Exponent ist zu groß!")
if e < k:
quit("Der gesuchte Exponent ist zu klein!")
i=0
for i in range (100):
if b**m > e:
lg = m
m = (lk+m)/2
i+1
elif b**m < e:
lk = m
m = (lg+m)/2
i+1
elif e == 0:
l=0
break
lm = (lg+lk)/2
print("Der gesuchte Exponent ist",lm)
Re: Logarithmus
Verfasst: Donnerstag 14. Mai 2020, 22:43
von Sirius3
@tiziantheonlyone: Was gefällt Dir an math.log nicht?
Eingerückt wird in Python immer mit 4 Leerzeichen, nicht 2.
`m = (lk+lg)/2` wird an vier Stellen im Code berechnet, obwohl es nur an einer nötig wäre.
Da `i` in der for-Schleife gesetzt wird, ist das `i=0` unnötig. `i+1` tut sowieso nichts.
Vom Code bleibt also nicht mehr viel übrig:
Code: Alles auswählen
lg = 100
lk =-100
for i in range(100):
m = (lk+lg)/2
if b**m > e:
lg = m
elif b**m < e:
lk = m
print("Der gesuchte Exponent ist", m)
Re: Logarithmus
Verfasst: Freitag 15. Mai 2020, 19:13
von tiziantheonlyone
Naja ich bin auch nur ein Neuling der anderen helfen will. Das war halt meine Lösung
Deine Lösung ist natürlich kompakter, aber beides Funktioniert. Wenn man sich zwei drei byte spaaren möchte ist Dein Programm natürlich besser.
Für meinen ersten Versuch bin ich trotzdem zufrieden.
Re: Logarithmus
Verfasst: Freitag 15. Mai 2020, 19:14
von tiziantheonlyone
"Da `i` in der for-Schleife gesetzt wird, ist das `i=0` unnötig. `i+1` tut sowieso nichts."
Ich dachte mann muss i immer +1 nehmen. Aber das war ein anderes Ding.. Ich erinnere mich jetzt wieder.

Peinlich...
Re: Logarithmus
Verfasst: Samstag 16. Mai 2020, 11:37
von Sirius3
Nichts gegen Deine Lösung. Wenn Dir aber niemand sagt, wie es besser geht, lernst Du auch nichts.
Re: Logarithmus
Verfasst: Mittwoch 20. Mai 2020, 08:59
von DeaD_EyE
Python gibt es seit 1990 und du behauptest einfach, die math.log10 wäre falsch implementiert?
https://github.com/python/cpython/blob/ ... ule.c#L811
Dann fang mal an mit C aufzuräumen, da math die Funktionen aus der C standard library verwendet.