power algorithmus
-
hi leutz,
ich schreibe mir gerade eine klasse für grosse zahlen unter anderem auch gleitkommazahlen
aber wie kann ich eine pow funktion schreiben die das gleiche kann wie die pow funktion aus math?
ich hab die 4 grundrechenarten zur verfügung
wie kann ich das jetzt machen?
und es soll auch möglichkeiten zur berechnung von der wurzel gebendas schafft man mit eienr einfachen schleife ja nicht
im internet hab ich das hier gefunden aber das ist nicht gut genug dokumentiert so dass ichs verstehehttp://gmplib.org/manual/Nth-Root-Algorithm.html#Nth-Root-Algorithm
(wenn man den kehrwert der n-ten wurzel nimmt sollte man ja auch potenzen rechnen können oder?)
-
Naja, das Newton-Verfahren kannst Du Dir auf Wikipedia anschauen. Es im Prinzip nur darum eine Nullstelle von f(x)=x^n-a zu finden. Wenn Du die hast, dann ist x die n-te Wurzel von a. Und diese Nullstelle wird halt mit dem Newton bestimmt. Und für ganzzahlige Exponenten brauchst Du nichts weiteres: x^n=x*x*...*x (n mal). Für reelle Exponenten gilt ausserdem erstmal bis Du was besseres gefunden hast: xr=exp(log(xr))=exp(r*log(x)).
-
ich brauche eine funktion die potenziert und wurzeln zieht die ich aus den vier grundrechen arten bauen kann
also plus, minus, mal, geteilt
logarithmus und exp und sowas hab ich (noch) nicht
es geht hier um eine klasse die für extrem hohe zahlen bzw sehr genaue kommazahlen ist
-
Ich hatte eigentlich vorausgesetzt, dass Du versuchst was aus den Ratschlägen zu machen. Du kannst Dir exp und log erstmal auf den vier Grundrechenarten bauen (Stichwort: Potenzreihen), wenn Dir nix besseres einfällt. Oder Du kannst einfach mal googlen und schauen wie andere arbitrary precision libraries exp/log implementieren. Mir fällt auf Anhieb nichts ein, wie Du sonst rationale Exponenten realisieren kannst, aber es gibt sicher kluge Leute, die sich da mal was performantes zusammengebaut haben. Der oben geschilderte Weg ist das, was mir dazu so einfällt und der sollte deppensicher und ohne viel Theorie verständlich sein.
-
Walli schrieb:
Ich hatte eigentlich vorausgesetzt, dass Du versuchst was aus den Ratschlägen zu machen. Du kannst Dir exp und log erstmal auf den vier Grundrechenarten bauen (Stichwort: Potenzreihen), wenn Dir nix besseres einfällt. Oder Du kannst einfach mal googlen und schauen wie andere arbitrary precision libraries exp/log implementieren. Mir fällt auf Anhieb nichts ein, wie Du sonst rationale Exponenten realisieren kannst, aber es gibt sicher kluge Leute, die sich da mal was performantes zusammengebaut haben. Der oben geschilderte Weg ist das, was mir dazu so einfällt und der sollte deppensicher und ohne viel Theorie verständlich sein.
Hatten wir nicht erst neulich ziemlich genau die gleiche Frage? Müsste sich doch sogar noch unter den ersten 5Seiten befinden.
-
mh
warte mal
exp(int x) ist 10 hoch x???
ok das is ja noch machbaraber wie baut man den zehenr-logarithmus?
hab als wir die anfänge von logarithmen in der schule hatten mal meinen lehrer gefragt wie der taschenrechenr das berechnet (der war auch mein informatik lehrer damals) aber das konnte er mir auch nicht sagen...
-
Ne, exp(x) ist die Exponentialfunktion, also e^x wobei e=2.71..., aber das ist auch machbar mit den Grundrechenarten. Schau Doch einfach mal bei Wikipedia vorbei. Zehnerlogarithmus brauchst Du nicht. Den natürlichen Logarithmus bekommst Du als Potenzreihe und damit kannst Du Dir alle anderen Logarithmen bauen...
-
hab immer noch nix... -.-
-
Und inwiefern ist das jetzt unser Problem? Du kommst ja nicht mit konkreten Fragen. Im Prinzip wurde Dir alles geliefert was Du für eine erste Realisierung Deines Vorhabens brauchst.