mikrocontroller.net

Forum: Compiler & IDEs Woher bekomm ich die ln() funktion


Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte in math.h als log() zu finden sein.

Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.


Autor: ozo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Basis kannst du umrechnen, steht (irgendwo) hier drin:
http://mathworld.wolfram.com/Logarithm.html

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Christoph Kessler (db1uq) (christoph_kessler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Neuling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
und nochmal Danke.

Werd heut abend auch gleich mal in die Math.h reinschauen.

Nochmal danke an Alle! :-)

Schönen Dienstag noch.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.