Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Logarithmus in Delphi (https://www.delphipraxis.net/102423-logarithmus-delphi.html)

kischiman 28. Okt 2007 18:43


Logarithmus in Delphi
 
Hallo!
Ich bin hier ganz neu im Forum und habe eine ziemlich wichtige und dringende Frage.
Eine Antwort auf sie, die ich auch praktisch nachvollziehen kann habe ich bisher nirgendwo gefunden, daher schreibe ich mein Problem hier mal rein:
Also ich habe eine Aufgabe, die die folgende Gleichung vorsieht:

lg A - lg B
------------ = D
lg C

Nun weiß ich zwar (u.a. aus http://www.dsdt.info/), wie ein Logarithmus Naturalis aussehen soll, aber ich weiß damit nichts anzufangen, bzw. wie ich ihn in diese Gleichung einbauen kann.
Hier fand ich die Zeile, die einen ln beschreibt, aber ich hab keine Ahnung, was ich damit anfangen soll.

Ich habe ein Programm zur Aufgabe, welches aus dem Zinssatz und dem Startkapital die Zeit berechnen soll, in der man auf das Endkapital (= 1.000.000) kommt.
Es gibt zwei Eingabefelder (Zinssatz und Starkapital) und einen Auslösebutton. Aber das ist ja kein Problem, mein Problem ist die Rechnung, die dabei geschehen muss... Jeder Tipp ist super-hilfreich, ich hoffe also, ihr könnt mir helfen!
Danke!
:dp:

kischiman

Jelly 28. Okt 2007 18:55

Re: Logarithmus in Delphi
 
Herzlich willkommen hier im Forum,

leider verstehe ich nicht, was du nicht verstehst... Wo hast du die Formel her? Was ist A, B, C und D?

Ln ist der natürliche Logarythmus, mit der Basis e. e ist die Eulersche Zahl und hat den Wert 2,718... ln(e) ist dementsprechend wieder 1. Und die Umkehrfunktion ist in dem Fall die Exponentialfunktion e^x.

mkinzler 28. Okt 2007 18:56

Re: Logarithmus in Delphi
 
In deinem Fall wäre eher der Logarithmus zur Basis 10 der richtige:
http://www.dsdt.info/referenz/kategorie/?id=16

Delphi-Quellcode:
d := (log10(a) * log10(b)) / log10(c);

omata 28. Okt 2007 19:04

Re: Logarithmus in Delphi
 
Wenn du die Math-Unit nicht einbinden willst kannst du auch den natürlichen Logarithmus nehmen...
Code:
lg10(x) = ln(x) / ln(10)
also
Delphi-Quellcode:
function D(a,b,c:real):real;

  function lg10(x:real):real;
  begin
    Result:=ln(x) / ln(10);
  end;

begin
  Result:=(lg10(a) - lg10(b)) / lg10(c);
end;
Gruss
Thorsten

kischiman 28. Okt 2007 19:20

Re: Logarithmus in Delphi
 
Wow!
Ihr seid schneller, als ich erwartet habe!
Vielen Dank für die Antworten!
Ich habe das Math-Unit eingebunden und es so gemacht, wie mkinzler beschrieben hat.

Das ganze sieht bei mir jetzt so aus:

Delphi-Quellcode:
zahl1:=StrToFloat(Edit1.Text);
zahl2:=StrToFloat(Edit2.Text);
gesamt:=(log10(1000000) * log10(zahl1)) / log10(zahl2);
label6.caption:=floattoStrF(gesamt,ffcurrency,7,2);
Wobei aus der Gleichung oben
a = 1000000
b = zahl1
c = zahl2
d = gesamt
entspricht.
Ich habe es erst bloß mit Variablen abgekürzt, damit es für euch einfacher zu verstehen ist.
Doch irgendwie habe ich das Gefühl, dass irgendwas nicht richtig funktioniert.
Ich versuche es nochmal auf die Art, wie omata es beschrieb, also mit dem ln, vielleicht führt das zu realistischeren Ergebnissen...
Wer sich die Mühe machen und sich das ansehen will, ich habs auf meinen Server hochgeladen:
www.kischiman.de/delphi/projekt2.rar
Ich danke euch nochmal vielmals für die Hilfe!!!

EDIT: Also wenn ich das jetzt mit dem Logarithmus Naturalis mache, meckert Delphi bei function. (Anweisung erwartet, aber function gefunden) Ich habs bestimmt falsch hingesetzt, aber egal wo, es passt ihm nicht...

mkinzler 28. Okt 2007 19:30

Re: Logarithmus in Delphi
 
Zitat:

Ich versuche es nochmal auf die Art, wie omata es beschrieb, also mit dem ln, vielleicht führt das zu realistischeren Ergebnissen...
Da sollte das selbe rauskommen, weil seine Funktion den log10 auf Basis von ln implementiert.
Zitat:

Doch irgendwie habe ich das Gefühl, dass irgendwas nicht richtig funktioniert.
Inwiefern? Was kommt raus und welches Ergebnis erwartest du? Was berechnet die Formel?

kischiman 28. Okt 2007 19:54

Re: Logarithmus in Delphi
 
Also wenn in dieser Rechnung:
Delphi-Quellcode:
gesamt:=(log10(1000000) * log10(zahl1)) / log10(zahl2);
zahl1 = 5000
zahl2 = 5
ist,
bekomme ich als
gesamt
1,13
als Ergebnis...

Ich hab jetzt leider keine Möglchkeit, das mathematisch zu überprüfen, aber schau dir doch bitte, wenn es keine Umstände macht, das Programm an:
www.kischiman.de/delphi/projekt2.rar
(Form2 ist die entscheidende, bzw. die "Zeitberechnung")
Danke dir!

mkinzler 28. Okt 2007 20:05

Re: Logarithmus in Delphi
 
Wenn du uns nicht verrätst was die formel macht, kann man dir auch nicht sagen, ob die Rechnung richtig ist.

kischiman 28. Okt 2007 20:13

Re: Logarithmus in Delphi
 
Oh, achso, entschuldigt...
Also es geht um Zinsrechnung.
Das Programm soll berechnen, wie lange man braucht, um auf 1.000.000€ zu kommen, mit dem gewünschten Startkapital (zahl1) und Zinssatz (zahl2).
Mathematisch ausgedrückt würde die Formel so aussehen:
t=(lg(1.000.000) - lg (Startkapital)) / lg (Zinssatz + 1)
t ist logischwerweise die Zeit, also das Ergebnis...
Ou man, ich dreh durch, ich blick das überhaupt nicht durch in Delphi... :/

mkinzler 28. Okt 2007 20:16

Re: Logarithmus in Delphi
 
Sorry hatte dein . als * gelesen, muß also:
Delphi-Quellcode:
gesamt:=(log10(1000000) - log10(zahl1)) / log10(zahl2);
heißen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:13 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz