Seite 1 von 1

Logarithmus

Verfasst: Montag 19. Juni 2006, 17:26
von tyho
EIne ganz kleine Frage :D
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??

Code: Alles auswählen

>>> import math
>>> math.log10(100)
2.0
>>>

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
:P

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 :geek: :wink:
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 :D
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. :wink:
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.