Autor Beitrag
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Do 13.01.05 01:56 
Probiers doch mal mit einer Potenzreihe.

Hint: Sowas wie ln(x):=sum((-1)^(k+1)*(x-1)^(k)/k,k=1..infinity);
st-matze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

Win 3.11, Win 95, Win 98, Win XP
D7 Ent, D6 Pers, (D5 Pers)
BeitragVerfasst: Do 13.01.05 09:20 
Berechnung für den natürlichen Logarithmus

user defined image

oder die Näherung

user defined image

in beiden fällen gilt: je höher n, desto genauer

more ...

st-matze
st-matze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

Win 3.11, Win 95, Win 98, Win XP
D7 Ent, D6 Pers, (D5 Pers)
BeitragVerfasst: Do 13.01.05 09:33 
hier noch mal ein Codeschnipsel zu einem Logarithmus berechnungs verfahren:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
function log(x: Double; n: Integer): Double;
var
  p,q: Extended; {p=Produktwert; q=iterierte Quadratwurzel}
  i: Integer;
begin
  p:=1; q:=x; {Initialisierungen}
  for i:=1 to n do
  begin
    q:=sqrt(q);
    p:=p*2/(q+1/q);
  end;
  log:=p*(x-1/x)/2;
end;


Hinweis: für n >= 30 ist die abweichung zur eingebauten delphifunktion irrelevant.

more ...

st-matze
Spaceguide
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 552


(D3/D7/D8) Prof.
BeitragVerfasst: Do 13.01.05 11:22 
Also eine Wurzelfunktion zum Berechnen des ln zu verwenden ist nicht wirklich zu empfehlen.
st-matze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

Win 3.11, Win 95, Win 98, Win XP
D7 Ent, D6 Pers, (D5 Pers)
BeitragVerfasst: Do 13.01.05 11:33 
niemand hat gesagt, dass es effektiv ist, aber es funktioniert :wink:
raziel
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2453

Arch Linux
JS (WebStorm), C#, C++/CLI, C++ (VS2013)
BeitragVerfasst: Do 13.01.05 13:25 
Und wenn man den ganzen thread gelesen hätte, hätte man gesehen, dass der Link bereits von mir gepostet wurde... :|

_________________
JSXGraph
st-matze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 138

Win 3.11, Win 95, Win 98, Win XP
D7 Ent, D6 Pers, (D5 Pers)
BeitragVerfasst: Do 13.01.05 13:31 
@raziel

nich gleich beleidigt sein. :?

les mir halt nicht alles exakt durch.

und einen neuen link hab ich ja auch gebracht :)
ScorpionKing Threadstarter
ontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic starofftopic star
Beiträge: 1150

Win XP

BeitragVerfasst: Do 13.01.05 14:07 
ja, ich habe es eingesehen, es gibt also keine formel für den logarithmus, genauso wenig wie für wurzeln.
danke an alle!

_________________
Aus dem Urlaub zurück!
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Do 13.01.05 14:17 
ScorpionKing hat folgendes geschrieben:
ja, ich habe es eingesehen, es gibt also keine formel für den logarithmus
Wieso? Oben hat doch st-matze sogar die Vorschrift einer Reihe als Bild eingefügt :-?

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6386
Erhaltene Danke: 146

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Do 13.01.05 14:21 
Reihen werden in der 8. Klasse aber noch nicht behandelt. Und wenn unser König damit noch nie was zu tun gehabt hat, ist das nicht ganz einfach zu verstehen. Zumal es hier auch eine nicht endliche Reihe ist.
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Do 13.01.05 14:30 
jasocul hat folgendes geschrieben:
Reihen werden in der 8. Klasse aber noch nicht behandelt.
Sind aber nicht wirklich kompliziert.

jasocul hat folgendes geschrieben:
Und wenn unser König damit noch nie was zu tun gehabt hat, ist das nicht ganz einfach zu verstehen. Zumal es hier auch eine nicht endliche Reihe ist.
Nuja, sie geht bis n :mrgreen:
Aber selbst wenn er mit der Folge nicht zurechtkommt, in der Näherung kommt nichts vor, was sonderlich schwer ist, und ich glaube Wurzeln gab's schon in der 8.
Und 'n Codeschnipsel hatter ja auch noch gepostet.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Do 13.01.05 14:34 
ScorpionKing hat folgendes geschrieben:
ja, ich habe es eingesehen, es gibt also keine formel für den logarithmus, genauso wenig wie für wurzeln.

Huch, fast genau mein Wortlaut. :shock:

Wo ich doch schon die ganze Zeit überlege, wie ich mich am besten wegen dieser unpräzisen (wenn nicht sogar falschen) Aussage rausreden kann. :lupe: :mrgreen:

Ausdrücken wollte ich eigentlich, dass das, was es dazu an "Bestimmungsalgorithmen" gibt, niemals das sein kann, was ScorpionKing gesucht hatte (mühsame Näherungen, möglichst unendliche Reihen und dergleichen). Daraus aber gleich die Aussage zu kreieren, dass es keine Formeln gäbe, wie ich es im Wortlaut getan habe, ist im besten Falle als nicht ganz korrekt zu bezeichnen. :mahn:

Bekenne mich also auch schuldig. :oops: :nixweiss: :wave:
Vertigo
Hält's aus hier
Beiträge: 1

Win XP
D6 Pers
BeitragVerfasst: Sa 12.03.05 13:40 
Ja, der Thread ist zwar jetzt etwas älter, aber für die Berechunung eines beliebigen Logarithmus gilt doch:

logex=ln(x)/ln(e)

...ist vielleicht die einfachste Möglichkeit (aber sicher nicht die effektivste), um einen Logarithmus in Delphi zu berechnen.
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 12.03.05 16:20 
Wenn man den beliebigen Logarithmus in ASM implementiert, kommt man besser mit der Nutzung des Dualen Logarithmus, da die FPU diesen intern zur Berechnung hernimmt.

ausblenden OMathGeneral.pas der Omorphia-Bibliothek
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Function LogN(Var Base, X: Extended): Extended;
{ Log.N(X) := Log.2(X) / Log.2(N) }
Asm
    FLD1
    FLD     TBYTE PTR [X]
    FYL2X
    FLD1
    FLD     TBYTE PTR [Base]
    FYL2X
    FDIVP
End;


Für den natürlichen Logarithmus wären zwar keine Zusatzschritte notwendig, jedoch dauert das Abfragen der Konstante FLDLN2 länger als das laden der Zahl 1.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
zemy
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 207

Win XP Prof.
D7
BeitragVerfasst: Mi 16.03.05 17:35 
user profile iconIngoD7 hat folgendes geschrieben:
Es gibt für "Logarithmus" ebensowenig eine Formel, wie es eine für "Wurzel" gibt. Es ist - wie erklärt man das bloß?? - eine eigenständige mathematische Funktion. Die hat keine Übersetzung in Form einer Formel. Wie gesagt, genau so, wie beim Wurzelziehen.


Die Multiplikation kann man auch über eine Addition darstellen, obwohl es eine eigene Operation ist... Genauso gibt es Formeln für den Logarythmus, auch wenn die Berrechnung umständlich ist und auf Zahlenfolgen basiert. Ist eigentlich nicht Wikipedia die erste Seite der Wahl bei solchen Themen? Da gibts auch die komplette Lösung inkl. Berrechnungsverfahren. (de.wikipedia.org/wiki/Logarithmus) Trotzdem sollte man das nur mal zum Test proggen, 1 ASM-Befehl im Vetrgleich zu dieser Rechenvorschrift... Nja OK :D

_________________
LifeIsToShortToThinkAboutTheShortness
Allesquarks
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 510

Win XP Prof
Delphi 7 E
BeitragVerfasst: Mo 21.03.05 15:25 
Natürlich ist der eine asm Befehl schneller. Die Fpu rechnet aber mit einer 64 Bit Mantisse. Da kommen dann rund 20 gültige Stellen im Dezimalsystem raus. Für die meisten Fälle sollte das genug sein, aber eben nicht immer.
Randnote: Der Sinus,tangens etc lässt sich auch über Reihen berechnen.
Probier mal aus den Tangenswert nahe pi zu berechnen einmal mit der math-unit in Delphi und einmal mit dem windows taschenrechner und dann noch einmal über so eine Reihe. Der Fehler liegt dann schon in der 6-7 Dezimalstelle ist also nicht nur ein Rundungsfehler?!:roll:
IngoD7
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 629


D7
BeitragVerfasst: Mo 21.03.05 16:25 
user profile iconzemy hat folgendes geschrieben:
user profile iconIngoD7 hat folgendes geschrieben:
Es gibt für "Logarithmus" ebensowenig eine Formel, wie es eine für "Wurzel" gibt.
Genauso gibt es Formeln für den Logarythmus, [...]

Hättest du den Thread aufmerksam durchgelesen, so hättest du gemerkt, dass wir (so also auch ich) schon lange zu der Erkenntnis gekommen waren.
D-Developer
Hält's aus hier
Beiträge: 6



BeitragVerfasst: Mo 21.03.05 16:33 
user profile iconSpaceguide hat folgendes geschrieben:
Also eine Wurzelfunktion zum Berechnen des ln zu verwenden ist nicht wirklich zu empfehlen.

So weit ich weiß berechnet Delphi Potenzen mit dem ln...
zemy
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 207

Win XP Prof.
D7
BeitragVerfasst: Mo 21.03.05 19:40 
user profile iconIngoD7 hat folgendes geschrieben:
user profile iconzemy hat folgendes geschrieben:
user profile iconIngoD7 hat folgendes geschrieben:
Es gibt für "Logarithmus" ebensowenig eine Formel, wie es eine für "Wurzel" gibt.
Genauso gibt es Formeln für den Logarythmus, [...]

Hättest du den Thread aufmerksam durchgelesen, so hättest du gemerkt, dass wir (so also auch ich) schon lange zu der Erkenntnis gekommen waren.


Hatte ihn aufmerksam gelesen, muss mir allerdings entfallen sein, das es auch ne 2. und 3. Seite gab :oops: sorry, aber auf der ersten kams noch nicht. :D

_________________
LifeIsToShortToThinkAboutTheShortness