![]() |
Hilfe beim Programmieren von einer Gleichung
Hallo hat jemand Lust mir zu helfen 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. Wäre super wenn sich da jemand findet. :coder2:
|
Re: Hilfe beim Programmieren von einer Gleichung
Ich wette, du wirst hier viele finden, die dir bei einem konkreten Problem helfen werden, nur deine Anfrage klingt fast schon so, als sollte dir jemand alles schreiben...
|
Re: Hilfe beim Programmieren von einer Gleichung
Wie willst du das machen? per brute-forcing?
Delphi-Quellcode:
uses
math; [...] var a:integer=3; b:integer=4; c:integer=5; d:integer=18; i:integer; begin for i:=-1000 to 1000 do if power(a,i)+power(b,i)+power(c,i)=power(d,i) then showmessage('Lösung für n: '+inttostr(i)); showmessage('Alle Lösungen zwischen -1000 und 1000 probiert.'); end; |
Hilfe beim Programmieren von einer Gleichung
Schonmal danke für deine Hilfe, aber wie arbeitet man mit showmessage? Habe das noch nie benutzt.
|
Re: Hilfe beim Programmieren von einer Gleichung
showmessage zeigt eine Meldung an.
Delphi-Quellcode:
zeigt diese Meldung an:
showmessage('Hallo. Ich bin ein sinnloser Text');
![]() |
Re: Hilfe beim Programmieren von einer Gleichung
Bist du sicher, dass es da überhaupt Lösungen gibt? Soviel ich weiss gibts für Ausdrücke wie a^x+b^x=c^x für x>3 keine Lösungen mehr in N. (Ich glaub Fermat hat das mal behauptet). Wies bei 4 Variablen aussieht, weiss ich nicht, nur kann ich mir gut vorstellen, dass es da ähnlich aussieht.
|
Re: Hilfe beim Programmieren von einer Gleichung
Ich weiß das es dort Lösungen gibt da ich mich mit Fermat momentan beschäftige und auch mit der obrigen Gleichung und ich schreibe ein Programm um dies zu veranschaulichen.
|
Re: Hilfe beim Programmieren von einer Gleichung
Was soll denn dein Programm können und wie willst du das Problem lösen? Numerik wird dir bei Lösungen aus N nicht groß weiterhelfen und Brute-Force ist sicher auch nicht so schön.
|
Re: Hilfe beim Programmieren von einer Gleichung
etwa so :?:
Delphi-Quellcode:
var
A,B,C,D,N: Integer; A1,B1,C1,D1: Extended; begin for N := 2 to 9 do for A := 1 to 100 do begin A1 := Power (A,N); for B := 1 to 100 do begin B1 := Power (B,N); for C := 1 to 100 do begin C1 := Power (C,N); for D := 1 to 100 do begin D1 := Power (D,N); if A1+B1+C1=D1 then begin Memo1.Lines.Add ('A='+IntToStr (A)+' , B='+IntToStr(B)+' , C='+IntToStr(C)+' , D='+IntToStr(D)+' N='+IntTostr(N)); end; end; end; end; end; end; |
Re: Hilfe beim Programmieren von einer Gleichung
Hey danke für deine Hilfe das ist eine super Idee dies so zu schreiben.
|
Re: Hilfe beim Programmieren von einer Gleichung
Zitat:
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 |
Re: Hilfe beim Programmieren von einer Gleichung
Zitat:
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 11:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz