Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Hilfe beim Programmieren von einer Gleichung (https://www.delphipraxis.net/57913-hilfe-beim-programmieren-von-einer-gleichung.html)

Binärbaum 30. Nov 2005 15:42

Re: Hilfe beim Programmieren von einer Gleichung
 
Zitat:

Zitat von eisbar
Hey danke für deine Hilfe das ist eine super Idee dies so zu schreiben.

Naja, es funktioniert immerhin. Allerdings ist es eben der Brute-Force-Ansatz, bei dem alle Möglichkeiten in einem gewissen Bereich getestet werden, und damit wird das Programm wohl auch lange brauchen. Außerdem wolltest du doch alle ganzzahligen Möglichkeiten ermitteln, und der Code liefert dir nur die Möglichkeiten, wo die Zahlen a,b,c,d im Bereich von 1 bis 100 liegen.
Allerdings ist die Menge der natürlichen Zahlen nicht beschränkt, sodass man in endlicher Zeit nicht alle Möglichkeiten testen kann. Selbst wenn man "nur" alle mit einem vorzeichenlosen 32-Bit-Integer darstellbaren Zahlen überprüft, würden die Indizes der For-Schleifen von 1 bis 2^32-1 (ca. 4 Milliarden) laufen. Bei vier verschachtelten Schleifen macht das immerhin 2^32*2^32*2^32*2^32=2^128 Durchläufe (also rund 3,4*10^38 Durchläufe). Selbst wenn dein PC pro Sekunde eine Milliarde Schleifendurchläfe schaffen würde (was bei dem heutigen Stand der Technik noch etwas unwahrscheinlich ist), würde das Programm ca. 10^22 Jahre laufen, um alle diese Möglichkeiten zu testen. Und das nur für ein einziges n. Für jeden weiteren Exponenten beginnt die Sache von vorn. ;)
Aber sicherlich kommt schon vor dem Ende des Programms ein Bereichsüberlauf, weil die Summe aus den vier Integern schon vorher den maximal darstellbaren Wert überschreitet.

Was ich damit sagen will, ist folgendes: der Code mag zwar gut funktionieren, solange man nur in einen kleinen Abschnitt der natürlichen Zahlen nach Lösungen sucht und der Exponent n nicht zu groß ist. Wenn man aber "alle" Lösungen, d.h. in dem Fall alle mit dem 32-Bit-Integer-Zahlenformat darstellbaren Lösungen, sucht muss man sich etwas besseres einfallen lassen.

MfG
Binärbaum

shmia 30. Nov 2005 16:20

Re: Hilfe beim Programmieren von einer Gleichung
 
Zitat:

Zitat von eisbar
... für a^n+b^n+c^n=d^n ein Programm zu schreiben welches für ein n Alle ganzzahligen möglichkeiten ausgibt bzw die Lösung für die 5. Variable ausgibt, wenn man 4 Variable hat.

Als erstes muss man die Formel umschreiben:
a^n+b^n+c^n-d^n = 0
Dann benötigt man nur noch ein Programm zur Nullstellensuche.
Ein einfaches Verfahren ist z.B. Regula Falsi oder das Newton-Verfahren.
Da man mit diesen Verfahren evtl. nicht alle Nullstellen findet, sollte man sich obige Funktion einfach als Funktionsgraph zeichnen lassen.
Das menschliche Auge sieht die Nullstellen sehr leicht und kann helfen Startwerte für die Nullstellensuche zu finden.
ganzzahligen möglichkeiten: gefundene Nullstellen runden und prüfweise in die orginal Formel einsetzen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:30 Uhr.
Seite 2 von 2     12   

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