PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 3te Wurzel in TurboPascal


smoe82
2005-05-13, 11:13:40
Hallo Leute!


Ich will in TP ein klitzekleines Rechenprogramm schreiben, hänge aber daran, daß es scheinbar keine Funktion zur Ziehung der dritten Wurzel finde. Kennt jemand einen eleganten Rechenweg?


greetz!

Plutos
2005-05-13, 11:36:11
Du könntest den Wert einfach "hoch 1/3" nehmen. Die Funktion dafür (TP ist zu lange her, Delphi auch) heisst glaub ich "pow".

Edit: das ist einfach allgemein für n-te Wurzeln. Die "normale" zweite Wurzel kannst du z.B. auch über "hoch 1/2" berechnen, die n-te Wurzel eben über "hoch 1/n".

smoe82
2005-05-13, 11:44:41
Du könntest den Wert einfach "hoch 1/3" nehmen. Die Funktion dafür (TP ist zu lange her, Delphi auch) heisst glaub ich "pow".


nein, "pow" gibts net. Ich hab gar keine function gefunden, die das könnte. Daran hab ich nämlich auch gedacht. Mir ist nur sqrt für die 2te Wurzel
aufgefallen. Damit gehts aber net.


Edit: das ist einfach allgemein für n-te Wurzeln. Die "normale" zweite Wurzel kannst du z.B. auch über "hoch 1/2" berechnen, die n-te Wurzel eben über "hoch 1/n".

ist klar.

Ich hab ja schon über eine rechnerische Annäherungslösung gesucht. Da gibts was, Mathe-LK ist aber auch schon ne Weile her *g*

Dann würde ich meine eigene function schreiben...

smoe82
2005-05-13, 12:00:35
ich habs:


function radikal(exponent, basis : double) : double;
begin
if (exponent > 0) and (basis > 0) then
radikal := exp(ln(basis)/exponent)
else
radikal := 0;
end;



greetz!


P.s.: Hoffe, das stimmt. Ich habs noch net probiert...

edit: Shit, Formatierung wird nicht eingehalten. Schade!

edit2: war noch nen Fehler drin (basis und exponent vertauschet ;-)

Crushinator
2005-05-13, 12:07:19
Meinst Du diese Formatierung? :)


function radikal(basis, exponent : double) : double;
begin
if (basis > 0) and (exponent > 0) then
radikal := exp(ln(basis)/exponent)
else
radikal := 0;
end;
end;

smoe82
2005-05-13, 12:09:04
function radikal(exponent, basis : double) : double;
begin
if (exponent > 0) and (basis > 0) then
radikal := exp(ln(basis)/exponent)
else
radikal := 0;
end;
end;



ack!

Allerdings, war halt noch nen Fehler drin. Hab ihn hier auch geändert.