Wurzel berechnen |
29.04.2005, 18:21 | Gast(Thomas) | Auf diesen Beitrag antworten » | ||
Wurzel berechnen Wenn das Programm nun berechnen soll geh ich zuerst so vor dass ich zuerst 3 Mal mit sich selber multipliziere. Nun müsste ich noch die 4. Wurzel ziehen... Nur hab ich keine Ahnung wie ich rechnerisch auf die n-te Wurzel einer Rationalen Zahl komme. Kann mir jemand den ALgorithmus erklären, oder nen Link würde auch schon reichen |
||||
29.04.2005, 18:45 | mercany | Auf diesen Beitrag antworten » | ||
Eine kurze Frage zum Verständniss.... Weißt du nicht, wie du das mit C++ realisieren sollst, oder ist es dir einfach nicht erlaubt?! Falls das erstere zutrifft: double pow(double x,double y) ist die Potenzfunktion |
||||
29.04.2005, 19:00 | etzwane | Auf diesen Beitrag antworten » | ||
Mit dem "Holzhammer" und wenn dir gar nichts anderes einfällt (und wenn keine numerischen Näherungslösungen, Stichwort Newton usw., erlaubt sind): Zur Bestimmung von x = n-te Wurzel aus z > 1 mit x^n=x*x*x*x*...*x: 1^n > z, wenn nein, um 1 erhöhen, also 2^n > z, usw. bis z.B. 5^n > z, wenn ja, dann 4,1^n > z, wenn nein, dann um 0,1 erhöhen, also 4,2^n > z, usw. bis z.B. 4,6^n > z, wenn ja, dann um 0,01 erhöhen, also 4,51^n > z usw. Vorher würde ich noch durch wiederholte Teilung von z durch 10^n die Zahl auf den Bereich 1...10^n-1 normieren. EDIT: Schreibfehler + Denkfehler editiert, die letzte Zeile eben ... |
||||
29.04.2005, 19:01 | Gast(Thomas) | Auf diesen Beitrag antworten » | ||
Die Funktion kenn ich schon, nur ich darf sie net verwenden (tjo für manche Leute muss man eben das Rad neu erfinden). Ich speicher eigentlich nur Zähler und Nenner. Nach jeder Rechenoperation wird versucht zu kürzen. Da Zähler und Nenner ganzzahlig sind muss ich also auch nur die Wurzel aus 2 ganzzahligen Werten ziehen. (Ich kann ja Zähler und Nenner extra, wenn ich mich da richtig an den Matheunterricht erinnere). Lange Rede kurzer Sinn ich brauche ein Verfahren um aus einer Natürlichen Zahl eine n-te Wurzel zeihen kann. Wie ich das ganze dann nacher bei einem reellem Ergebniss runde muss ich mir auch noch überlegen... :/ Ich hab übrigens das hier gefunden: http://www.diaware.de/html/wurzel.html - ist leider nur ein Verfahren für Quadratwurzel. Ich versuch gerade die Herleitung zu verstehen, villeicht kann man es ja übertragen auf andere Wurzeln. |
||||
29.04.2005, 21:24 | phi | Auf diesen Beitrag antworten » | ||
Das vom Newton-Verfahren abgeleitete `Heron`-Verfahren, müsstest du eigentlich benutzen dürfen. Es ist rekursiv und verwendet nur die Grundrechenarten +,* und /...und ausserdem ist das Ergebniss eine rationale Zahl was sich vielleicht besser runden läßt: Die k-te Wurzel aus a berechnet man so |
||||
29.04.2005, 21:48 | Egal | Auf diesen Beitrag antworten » | ||
Aber mal was ganz anderes. Wenn das Programm nur mit rationalen Zahlen zurecht kommen muss. Wieso musst du dann Wurzeln ziehen können? |
||||
Anzeige | ||||
|
||||
29.04.2005, 22:33 | Mathespezialschüler | Auf diesen Beitrag antworten » | ||
Ich habe mal gesetzt und versucht, nach x umzustellen. Es gelang mir nicht und ich wusste, dass ich auf in keinem Falle kommen kann. Also hab ich das Newton-Verfahren mal kurz bemüht. Vielleicht meinst du ja das, was ich da auch rausbekam: ?! |
||||
30.04.2005, 00:13 | phi | Auf diesen Beitrag antworten » | ||
Gut möglich MSS, ich bin hier am PC bei Bekannten und meine schlauen Bücher nicht dabei und hab´s aus´em Kopf versucht (ohne Newton). Der Exponent (k-1) ist wahrscheinlich zuviel. Übrigens, wenn du hier fertig bist, hättest du vielleich Zeit und Lust meinen `Nachbarthread´ mit dem Körper mit genau 6 Elementen anzuschauen? Kannst auch erst morgen antworten... Übrigens, die Babylonier haben das Heron-Verfahren schon vor 2000 Jahren genutzt um Wurzel zu berechnen. Newton hat dann praktisch erklärt warum es eigentlich funktioniert... @ Thomas: Darfst du dieses Verfahren anwenden? |
||||
30.04.2005, 15:42 | Der_Thomas | Auf diesen Beitrag antworten » | ||
Ich werde mich gleich mal an dem Verfahren versuchen Danke! Zu dem Grund warum das Programm potenzieren muss wenn es nur rationale Zahlen können soll: Gibt ja auch Ergebnisse die wieder rational sind, wenn nicht wird eben gerundet. Immerhin bekomm ich bei (1/9)^(1/2) dann wieder genau auf 1/3 und man kann damit genau weiterrechnen. Edit: Nochmal zur Veranschaulichung: Wenn man 2 Variablen von dem neuen Typ hat den ich Programmier. v1=1/9 und v2=1/2 Wenn man nun die "normale" Wurzelfunktion aufruft wird der Compiler die Werte zu Double (Fließkommazahl) umrechnen und darus dann die Wurzel ziehen. Er wird dann auf 0,3333333333 kommen. Nun wird er es aber wieder in meinen Typ konvertieren wollen was dazu führt dass ich ein Bruch von 3333333333/10000000000 haben würde. Wenn ich nen Code hab werd ich den hier auch mal posten falls jemand interesse hat. Edit 17.ooUhr --> Juhu es klappt. Danke an alle. Problem war nur die Abbruchbedingung (also der Moment zu dem er aufhören immer genauer zu rechnen). Habe schließlich einfach eine Maximaldurchlaufzahl festgelegt da er bei reellen Ergebnissen auf Grund der Ungenauheit der Datentypen nie auf ein genaues Ergebniss kommt. So wenn jemand den Code haben will: Ist als Konsolenbeispiel
|
|
Verwandte Themen
Die Beliebtesten » |
|
Die Größten » |
|
Die Neuesten » |
|