Delphi-PRAXiS

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

moerty 30. Jul 2006 20:43


Potenz in Delphi
 
Hi all,
ich bin gerade dabei mir ein Programm zu schreiben und bleibe an einer Stelle hängen. Und zwar weiß ich nicht, wie ich eine Potenz berechnen kann...

Hab in der Hilfe dieses gefunden:
function Power(const Base, Exponent: Extended): Extended;

Nur wie schreib ich das jetzt in mein Programm...
Wie schreib ich das zum Beispiel, wenn ich:
(24+17)^3 haben will?

x:=(24+17) und dann weiß ich es nicht...

Bitte um Hilfe!

mkinzler 30. Jul 2006 20:45

Re: Potenz in Delphi
 
Dein Problem wird die Klammer sein, die wirst du wohl händisch auflösen müßen.

fwsp 30. Jul 2006 20:46

Re: Potenz in Delphi
 
in ner for-schleife oder mit der funktion ?power?

Delphi-Quellcode:
 x := x1 + x2;
 x := power(x, 3);

HERMES 30. Jul 2006 20:47

Re: Potenz in Delphi
 
Zitat:

Zitat von moerty
(24+17)^3 haben will?

x:=(24+17) und dann weiß ich es nicht...

x:= Power(24+17,3);

moerty 30. Jul 2006 20:48

Re: Potenz in Delphi
 
mit der klammer ist eigentlich egal, war nur ein beispiel...
kann auch sein 5^100
wie mach ich das den?

mkinzler 30. Jul 2006 20:49

Re: Potenz in Delphi
 
Zitat:

x:= Power(24+17,3);
Bist du dir da sicher, daß er nicht 41 ^3 rechnet, was etwas anderes als (24 + 17) ^3 ist?

mkinzler 30. Jul 2006 20:50

Re: Potenz in Delphi
 
Zitat:

kann auch sein 5^100
wie mach ich das den?
Delphi-Quellcode:
x := Power( 5, 100);

HERMES 30. Jul 2006 20:52

Re: Potenz in Delphi
 
Natürlich wird da zuerst addiert! ALso Power(24+17,3) = Power(41,3)
das entspricht ja auch dem was er gefragt hat, hätte er 24^3 + 17^3 wissen wollen, hätte er auch so hinschreiben sollen...

mkinzler 30. Jul 2006 20:54

Re: Potenz in Delphi
 
@hermes: Schon mal was von binomischen Formeln gehört?

HERMES 30. Jul 2006 20:57

Re: Potenz in Delphi
 
Zitat:

Zitat von mkinzler
@hermes: Schon mal was von binomischen Formeln gehört?

hmm, was war doch nochmal.... aber im ernst, wann verwendet man die?? Wenn man die summe nicht bestimmen kann, weil da eine unbekannte in der Klammer steht, wenn man aber die summe in der klammer bestimmen kann ( und das kann man bei 24+17) braucht man keine Binomischeformeln sondern errechnet sich seine summe und bestimmt dann die potenz.

Natürlich kann man auch hier die Binomische Formel anwenden z.b. (1+2)^2 = 1^2 + 2*1*2 + 2^2 = 9 = 3^2

aber bei großen exponenten wird das richtig aufwendig.

Dax 30. Jul 2006 20:59

Re: Potenz in Delphi
 
@mkinzler: Das is.. hm... schnurz :mrgreen: Wenn (2+3)^3 was anderes wäre als 5^3, bräche das Gebäude der Mathematik zusammen ;)

mkinzler 30. Jul 2006 21:08

Re: Potenz in Delphi
 
Binomische Formeln finden die Anwendung bei Potenzen von Summen. Siehe auch bei Wikipedia

Nicolai1234 30. Jul 2006 21:12

Re: Potenz in Delphi
 
Zitat:

Zitat von mkinzler
Binomische Formeln finden die Anwendung bei Potenzen von Summen. Siehe auch bei Wikipedia

Aber das bringt in diesem Fall doch gar nichts... Ich sehe keinerlei Vorteil.

sir-archimedes 30. Jul 2006 21:13

Re: Potenz in Delphi
 
Naja, wenn du aber die Summe direkt ausrechnen kannst, benötigst du keine binomische Formel mehr... Wenn du zum Beispiel (1+1)^8 ausrechnen möchtest, kannst du es natürlich ausmultiplizieren, aber du hast viele Terme, brauchst viel Zeit und verrechnest dich wahrscheinlich. Daher ist es einfacher, erst die Klammer auszurechnen, und dann die 8te Potenz davon zu berechnen.

So gilt zum Beispiel (1+2+3+4+5)^10 = 15^10, wobei letzteres natürlich einfacher auszurechnen ist, als erst die Klammer auszumultiplizieren. Herauskommen tut beide Male dasselbe :)

xZise 30. Jul 2006 21:20

Re: Potenz in Delphi
 
Die binom. Formeln werden verwendet um unbekannte in der Klammer herauszusammeln und dann danach aufzulösen ;)

brechi 30. Jul 2006 21:26

Re: Potenz in Delphi
 
Zitat:

Zitat von mkinzler
Zitat:

x:= Power(24+17,3);
Bist du dir da sicher, daß er nicht 41 ^3 rechnet, was etwas anderes als (24 + 17) ^3 ist?

Klar ist es das selbe. Klammer vor Pozent vor Punkt vor Strich. Mit ner Binomischen Formel gehts auch, aber die braucht man nur wenn man eine Unbekannte hat. (x+3)^2 z.b.

fLaSh11 30. Jul 2006 21:28

Re: Potenz in Delphi
 
Mal ne dumme Frage (hab keine Lust heute abend noch mit Exceptions beschmissen zu werden^^):
Funktioniert die Funktion Power nur mit Ganzzahlen als Exponenten oder kann man auch reelle Zahlen einsetzen?

fwsp 30. Jul 2006 21:30

Re: Potenz in Delphi
 
Zitat:

Die Funktion errechnet aus der Basis Base und dem beliebigen Wert Exponent die Potenz.

Unit

Math

Kategorie

Arithmetik

Delphi-Syntax:

function Power(const Base, Exponent: Extended): Extended;

C++ Syntax:

extern PACKAGE Extended __fastcall Power(const Extended Base, const Extended Exponent);

Beschreibung

Power errechnet aus Base und einen beliebigen Wert die Potenz. Wird als Exponent ein Bruchwert oder ein Wert größer MaxInt angegeben, muss Base größer als 0 sein.
Siehe Delphi 7 PE Hilfe.

3_of_8 30. Jul 2006 21:37

Re: Potenz in Delphi
 
Wieso sollte (24+17)^3 was anderes sein als 41^3?

Das ist doch simpelste Mathematik!

(24+17)^3=(41)^3=41^3

q.e.d.

fLaSh11 30. Jul 2006 21:42

Re: Potenz in Delphi
 
Um die Aussage von Mauel noch weiter auszuführen:

Deshalb schreibt man ja auch Klammern um den Term 24+17 (Klammer sind das höchst in der Hirarchie der Mathematik ;))
(24+17)^3?

xZise 30. Jul 2006 21:47

Re: Potenz in Delphi
 
Angeshen von der Delphi hilfe:
Drücke mal im QT <strg> + <space>! Scheibe dann Power und dann siehst du das:
Zitat:

function Power(const Base: Extended; const Exponent: Extended): Extended;
D.h. die Übergabewerte sind Fließkommazahlen ;)
Bei IntPower ist das anders. (Ich vermute mal, dass IntPower schneller ist, allerdings lässt er nur Integer als Exponenten zu)

JasonDX 30. Jul 2006 22:07

Re: Potenz in Delphi
 
Zitat:

Zitat von xZise
(Ich vermute mal, dass IntPower schneller ist, allerdings lässt er nur Integer als Exponenten zu)

Der Implementierung nach nicht: Während Power über Exp(Exponent, ln(Base)) implementiert ist und damit in O(1) läuft , ist IntPower über eine (optimierte) Schleife implementiert, die in O(ln2(n)) abläuft.
Aber ich denke mal bei kleinen Exponenten könnte IntPower tatsächlich schneller sein, da weniger Operationen auf der FPU auszuführen sind.

greetz
Mike

Alexander Roth 31. Jul 2006 06:56

Re: Potenz in Delphi
 
Und vor allem werden wie der name schon sagt Binomische Formrmeln bei dem Exponenten 2 angewendet. Bei anderen Potenzen kann man lediglich die Binomischen Formeln komibieren.
Für einfaches "ausrechnen" sind sie jedoch völlig ungeeignet, sondern werden nur entweder zur Vereinfachung (Quadratische Ergänzung), oder zum "schnellen Ausmultiplizieren" benutzt.

Zitat:

Zitat von HERMES
Natürlich wird da zuerst addiert! ALso Power(24+17,3) = Power(41,3)

Absolut Korrekt.

PS: Tschuldigung das ich schon was bekanntes wiederholt hab. Habe die Seite 2 übersehen.
:duck:

xZise 31. Jul 2006 09:23

Re: Potenz in Delphi
 
Sry, aber irgendwie verstehe ich die fetten Textstellen nicht:
Zitat:

Zitat von JasonDX
Der Implementierung nach nicht: Während Power über Exp(Exponent, ln(Base)) implementiert ist und damit in O(1) läuft , ist IntPower über eine (optimierte) Schleife implementiert, die in O(ln2(n)) abläuft.


3_of_8 31. Jul 2006 09:25

Re: Potenz in Delphi
 
O(1) bedeutet konstante Laufzeit, O(ln2(n)) bedeutet logarithmische Laufzeit.

JasonDX 31. Jul 2006 09:32

Re: Potenz in Delphi
 
Zitat:

Zitat von xZise
Sry, aber irgendwie verstehe ich die fetten Textstellen nicht:
Zitat:

Zitat von JasonDX
Der Implementierung nach nicht: Während Power über Exp(Exponent, ln(Base)) implementiert ist und damit in O(1) läuft , ist IntPower über eine (optimierte) Schleife implementiert, die in O(ln2(n)) abläuft.


e**(Exponent * ln(Base)) ist eine andere Art, den Term Base**Exponent auszurechnen. Das ln(Base) beschreibt dabei den Logarithmus.

Zitat:

Zitat von JasonDX
O(1) [...] O(ln2(n))

Das ist die Zeitkomplexität. Ein Algorithmus läuft immer in einer bestimmten Zeit ab.
Bspw. läuft diese Schleife:
Delphi-Quellcode:
for i := 1 to n do
  nop;
in O(n) ab, während
Delphi-Quellcode:
for i := 1 to n do
  for j := 1 to n do
    nop;
in O(n*n) abläuft.
Delphi-Quellcode:
for i := 1 to 1 do
  nop;
hat eine Zeitkomplexität von O(1).
Was das O(...) bedeutet, dauert etwas zu erklären. Stichwort Landau-Symbole bringt erklärungen ;)

greetz
Mike

runger 31. Jul 2006 11:13

Re: Potenz in Delphi
 
Hallo,

lieber Kinzler:

Zitat:

Bist du dir da sicher, daß er nicht 41 ^3 rechnet, was etwas anderes als (24 + 17) ^3 ist?
41^3 ist das gleiche wie (24+17)^3

Wohl in Mathe nicht so ganz aufgepasst?

Rainer

mkinzler 31. Jul 2006 11:26

Re: Potenz in Delphi
 
Zitat:

Wohl in Mathe nicht so ganz aufgepasst?
Lang lang ists her ...

xZise 31. Jul 2006 11:28

Re: Potenz in Delphi
 
  1. Klammern
  2. Potenzen/Logarithmen
  3. Multiplikationen/Divitionen
  4. Addtionen/Subtrahktionen
  5. Links > Rechts


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:10 Uhr.

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