Seite 1 von 1

Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 11:05
von donutdrake
Guten Morgen :),

ich hab eine Frage, wie man ein Exponent in Dezimalzahl umwandelt?
Ich habe ein Code entwickelt, der zwei Decibelwerte addiert mit import math und math.log(10).
Jedoch wenn ich die beide addieren, kommt als Ergebnis ein Exponent raus, will es jedoch als Dezimalzahl ausgeben.

Hier ist der Code:

Code: Alles auswählen

import math

def addition(x, y):
    return math.log(10)*((10**x/10)+(10**y/10))

print("Willst du zwei Dezibelwerte addieren?")
print("Y oder N?")

choice=input()

num1=int(input("Gib den ersten Dezibelwert an:"))
num2=int(input("Gib den zweiten Dezibelwert an"))

if choice == 'Y':
    print(num1, "+", num2, "=",addition(num1,num2),"Decibel")
    

elif choice == 'N':
    print("Bis zum nächsten Mal! :)")

else:
    print("Ungültige Eingabe")    
Als Beispiel:

Gib den ersten Dezibelwert an: 50
Gib den zweiten Dezibelwert an: 50
50 + 50 = 4.6051701859880917e+49 Decibel

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 11:20
von __blackjack__
@donutdrake: Du könntest das Ergebnis einfach in eine ganze Zahl umwandeln.

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 11:35
von ArtooDetoo
Wenn du die korrekte Formel für die Addition verwenden würdest, hättest du das Problem überhaupt nicht. 50dB+50dB sind sicherlich nicht 4.6e49 dB.

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 11:55
von Sirius3
@donutdrake: dass Du die falsche Formel benutzt, wurde doch schon in Deinem anderen Thread diskutiert.
Die Frage, die Du beantworten mußt, ist, was ist die inverse Operation zu 10**x?

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 12:20
von donutdrake
Sirius3 hat geschrieben: Montag 10. Dezember 2018, 11:55 @donutdrake: dass Du die falsche Formel benutzt, wurde doch schon in Deinem anderen Thread diskutiert.
Die Frage, die Du beantworten mußt, ist, was ist die inverse Operation zu 10**x?
Hab jetzt doch den Fehler erkannt, hab den falschen Formel verwendet...
Danke dir, jetzt kommt die als ganze Zahl raus.

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 12:36
von donutdrake
Um den Schallpegel zu berechnen lautet die Formel : L = 10 * log(10**0.1*L1+10**0.1*L2+...+10**0.1*LN)

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 12:44
von ArtooDetoo
donutdrake hat geschrieben: Montag 10. Dezember 2018, 12:36 Um den Schallpegel zu berechnen lautet die Formel : L = 10 * log(10**0.1*L1+10**0.1*L2+...+10**0.1*LN)
Da fehlen Klammern.

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 13:23
von donutdrake
Ich will ja den Zehnerlogarithmus berechnen und nicht den nätürlichen und kam auf das Ergebnis.

Code: Alles auswählen

 print("Das Ergebnis lautet: ", math.log10(10)*((10**0.1*num1)+(10**0.1*num2)) ,"Db")
 


Ich will nun die Gleichung nach zwei Kommastellen ausgeben, jedoch kommt es zur 'invalid syntax'

Code: Alles auswählen

 print("Das Ergebnis lautet: ", '%.2f',  math.log10(10)*((10**0.1*num1)+(10**0.1*num2)) ,"Db")
 

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 14:30
von __deets__
Dann zerleg diesen Monsterausdruck (der auch noch andere Probleme hat) in kleinere Teile, die du verstehst.

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 14:38
von __blackjack__
@donutdrake: Die gezeigte `print()`-Zeile ist zwar nicht so wirklich sinnvoll, aber sie enthält keinen Syntaxfehler.

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 14:45
von Sirius3
@donutdrake: Du hast immer noch eine falsche Formel. Wo hast Du denn die Definition von dB her?

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 17:09
von donutdrake
Sirius3 hat geschrieben: Montag 10. Dezember 2018, 14:45 @donutdrake: Du hast immer noch eine falsche Formel. Wo hast Du denn die Definition von dB her?
@Sirius3: Aus Yotube habe ich es. https://www.youtube.com/watch?v=Fq9t676G8KQ

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Montag 10. Dezember 2018, 18:00
von ArtooDetoo
Das hier ist die richtige Formel. Schau dir mal bitte die Unterschiede zu deiner an.

Code: Alles auswählen

def addition(x, y):
    return math.log10(10**(x/10)+10**(y/10))

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Dienstag 11. Dezember 2018, 13:37
von donutdrake
ArtooDetoo hat geschrieben: Montag 10. Dezember 2018, 18:00 Das hier ist die richtige Formel. Schau dir mal bitte die Unterschiede zu deiner an.

Code: Alles auswählen

def addition(x, y):
    return math.log10(10**(x/10)+10**(y/10))
Problem ist, es gibt halt viele Wege um den Schallpegel zu addieren, der Dozent meinte selber es gibt halt viele Wege im Netz.
Jetzt werde ich von vielen Kommentaren verwirrt :lol:

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Dienstag 11. Dezember 2018, 13:48
von Sirius3
@donutdrake: wie meinst Du das? Es gibt viele falsche Wege und einen nicht ganz so falschen? Wenn das eine Physikvorlesung ist, sollte die Mathematik dahinter ja irgendwo erklärt worden sein.

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Dienstag 11. Dezember 2018, 15:06
von donutdrake
Dann habe ich auch eine andere Formel aus den ganzen Folien die ich bekommen habe.

LB= 10 * log *(I/I0) aus der Folie
oder auch Lp= 20 * log(p/p0) für den Schalldruck

Nein es ist keine Physikvorlesung, sondern Medieninformatik.

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Mittwoch 12. Dezember 2018, 08:16
von Sirius3
Und aus diesen Formeln mußt Du jetzt nur die Additionsregel herleiten. Dazu muß man wissen, dass sich der Schalldruck linear addiert, die Leistung dagegen Quadratisch, was die beiden Formeln mathematisch äquivalent macht.
Steht auch alles bei https://de.wikipedia.org/wiki/Bel_(Einheit).

Re: Exponent in Dezimalzahl umwandeln;

Verfasst: Mittwoch 12. Dezember 2018, 15:18
von donutdrake
Alles klar danke dir, sieht einfach aus.