Hallo, ich versuche die ln() Funktion als Logarithmus naturalis auf einem AVR ATMEGA32 zu nutzen. Gibt es die Funktion schon in einer Lib? Ich verwende den GCC unter Linux. Über Hilfe würde ich mich sehr freuen, da meine Google Recherchen und die Forensuche mir nicht weitergeholfen hat.
hey, danke das ging ja fix. wenn ich meine Beispielformel z.B. im Excel mit ln() berechne gehts. Mit log() gibts falsche werte. log() is auch für was anderes. http://de.wikipedia.org/wiki/Logarithmus#Bezeichnungen Oder ist log() das ln() auf dem Atmel.
log() aus math.h, wie es mit C-Compilern* mitgeliefert wird, arbeitet zur Basis e und nicht, wie der Name suggeriert, zur Basis 10. Das ist nichts Atmel-spezifisches, sondern in C so üblich.
Die Basis kannst du umrechnen, steht (irgendwo) hier drin: http://mathworld.wolfram.com/Logarithm.html
Sie muss nicht umgerechnet werden, da log() -anders, als der Name suggeriert- tatsächlich das C-Äquivalent von ln ist. Umrechnen muss man, wenn man einen Zehnerlogarithmus berechnen will.
Dankeschön, werd ich heut Abend gleich mal ausprobieren. Is aber komisch das der Befehl LOG zur Basis e ist. Da es ja zumindest bei allen anderen Sprachen die ich bis jetzt gesehen hab mit LN angezeigt wird. Und welcher Befehl wäre dann der zur Basis 10. Nochmals vielen Dank.
Es gibt einen Application Note von National Semiconductor von 1986, mit Erklärung und Flußdiagrammen zur Log- und "Antilog"=exp - Funktionsberechnung auf einem Mikrocontroller. Es geht zwar um einen Prozessor namens COP400, aber die Erklärungen sind allgemein gehalten. http://www.national.com/ms/CB/CB-2.pdf#page=1 COP-Brief-2 Easy Logarithms for COP400
Das sind keine "Befehle" sondern Bibliotheksfunktionen. Und "LOG" geht gar nicht, wenn dann "log". C ist Case-Sensitiv... Der 10er-Logarithmus ist in der Funktion log10() vergraben (logischerweise). Steht aber alles in der libc-Doku... Und die müsste auch unter Linux irgendwie erreichbar sein.
Neuling wrote: > Dankeschön, werd ich heut Abend gleich mal ausprobieren. > > Is aber komisch das der Befehl LOG zur Basis e ist. Da es ja zumindest > bei allen anderen Sprachen die ich bis jetzt gesehen hab mit LN > angezeigt wird. > > Und welcher Befehl wäre dann der zur Basis 10. log10() NB: Das sind keine 'Befehle'. Befehle sind zb. if, while, for also die Sprachmittel, die in der Sprache selbst verankert sind. log(), log10(), sin(), sqrt() sind Funktionen. Alle diese mathematischen Funktionen sind im Header-File math.h zusammengefasst, die mit dem Compiler mitgeliefert wird. Da das ein Textfile ist, kann man da auch ruhig mal mit einem Texteditor hineinschauen.
und nochmal Danke. Werd heut abend auch gleich mal in die Math.h reinschauen. Nochmal danke an Alle! :-) Schönen Dienstag noch.
Zur Verwirrung bzgl. des Funktionsnamens log ohne die Angabe einer Basis schreibt das Wikipedia: In der Mathematik steht log für den natürlichen Logarithmus, in technischen Anwendungen (so z. B. auf Taschenrechnern) für den dekadischen Logarithmus, in der Informatik für den dyadischen Logarithmus. Gelegentlich wird log auch verwendet, wenn die verwendete Basis keine Rolle spielt. Bei der Entwicklung der Mathebibliotheken vieler Programmiersprachen haben offensichtlich die Mathematiker das Sagen gehabt :-)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.