Matroids Matheplanet Forum Index
Moderiert von Spock mire2
Mathematische Software & Apps » Mathematica » Solve mit 4 Variablen optimieren
Autor
Ausbildung Solve mit 4 Variablen optimieren
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 1589
  Themenstart: 2021-12-04

Hallo zusammen, die einfache Aufgabe \sourceon mathematica Solve[62748517/19487171==a^b/c^d && 6 13, b -> 7, c -> 11, d -> 7}} \sourceoff Das geht ja mit einer For -Schleife schneller... Es muss doch elegantere Befehle geben, die ohne For oder ohne extreme Einschränkung funktionieren... Oder Näherungslösungen -> wäre Ideal... Grüße


Wahlurne Für hyperG bei den Matheplanet-Awards stimmen
   Profil
rlk
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 16.03.2007
Mitteilungen: 11208
Wohnort: Wien
  Beitrag No.1, eingetragen 2021-12-04

Hallo hyperG, warum faktorisierst Du nicht einfach Zähler und Nenner? Servus, Roland


Wahlurne Für rlk bei den Matheplanet-Awards stimmen
   Profil
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 1589
  Beitrag No.2, vom Themenstarter, eingetragen 2021-12-04

\quoteon(2021-12-04 13:35 - rlk in Beitrag No. 1) Hallo hyperG, warum faktorisierst Du nicht einfach Zähler und Nenner? Servus, Roland \quoteoff Das war nur ein Beispiel, wo zufällig die Zahlen im Zähler und Nenner mit den Potenzen übereinstimmen. Es soll universell funktionieren nach der Art: Abs[f[a,b,c,d]-1.1234567891011]<10^-10 Die Frage lautet, warum "Solve" hierfür unbrauchbar ist, weil: - man entweder die Suchgrenzen so eng stecken muss, dass das Ergebnis schon fast "sichtbar" ist - oder warum Solve so schnell abbricht Da sind 4 verschachtelte For-Schleifen schneller! Ich kann mir nicht vorstellen, dass noch kein anderer mehr als 3 Variablen gesucht hat... Ist ja auch eine Art nichtlineares Gleichungssystem mit zu wenigen Randbedingungen & Mehrfachlösungen. Mich interessiert aber nur die 1. Fundstelle mit den kleinsten Werten. Es muss doch was anderes außer "Solve" oder for for for for geben...


Wahlurne Für hyperG bei den Matheplanet-Awards stimmen
   Profil
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 1589
  Beitrag No.3, vom Themenstarter, eingetragen 2021-12-04

Außerdem können Nenner & Zähler durch Kürzen meist Primzahlen werden. Die Potenzen sollen aber nicht extrem groß werden, sondern schön kurz. Beispiel für Nenner oder Zähler 755555555555555555555555555555551: nicht 755555555555555555555555555555551^1 sondern (10^32*68-41)/9=(10^32*68-5)/9-4 Da es mehrere Lösungen gibt \sourceon nameDerSprache (582^12+767315727706295485703073915326)/2 (602^12+1198859697482719605640081676957)/3 (5249^9-2525476027810817543424035575045)/4 (5380^9+1703913527221725282929777777755)/5 (5490^9+2781535610091031218384333333306)/6 (5585^9+1897572922592791509157644748232)/7 (5669^9-2808197382692201710191136078221)/8 (2417^10-4034453486430840101103977028490)/9 (5811^9+148298743065406003784608179619)/10 \sourceoff besteht doch die Hoffnung, dass sich die großen Offsets in Nenner & Zähler "herauskürzen" und somit der Ausdruck in die Gültigkeit des Suchbereiches fällt...


Wahlurne Für hyperG bei den Matheplanet-Awards stimmen
   Profil
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 1589
  Beitrag No.4, vom Themenstarter, eingetragen 2021-12-04

Ich habe noch den Befehl FindInstance gefunden, um gleich nach der 1. Fundstelle abzubrechen. Beispiel: \sourceon mathematica FindInstance[ Abs[126595648879415617958644221730901643/ 315153946879642594915701611978840 - a^b/c^d] < 2/10^35 && 2 < a < 9999 && 2 < c < 9999 && 2 < b < 999 && 2 < d < 999, {a, b, c, d}, Integers, 1] Out: The methods available to FindInstance are insufficient to find the \ requested instances or prove they do not exist \sourceoff Bringt also auch nix :-( Wenn ich die Lösung kenne & per Solve alle 4 Variablen stark einschränke, findet er aber eine exakte Lösung... Das muss doch eleganter & schneller gehen!!!


Wahlurne Für hyperG bei den Matheplanet-Awards stimmen
   Profil
endy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 10.01.2011
Mitteilungen: 3263
  Beitrag No.5, eingetragen 2021-12-31 17:01

Hallo. Das Problem aus dem Startbeitrag ist anscheinend zu leicht für mma. Wenn man die Aufgabe schwieriger macht kann mma sie lösen: \sourceon mathematica Clear @ "Global`*" Solve[62748517/19487171 == a^b/c^d && 6 < a < 22 && 6 < c < 22 && 6 < b < 22 && 6 < d < 22, {a, b, c, d}, Integers] Solve[62748517/19487171 == a^b/c^d && 6 < c < 22 && 6 < b < 22 && 6 < d < 22, {a, b, c, d}, Integers] Reduce[62748517/19487171 == a^b/c^d && 6 < a < 22 && 6 < c < 22 && 6 < b < 22 && 6 < d < 22, {a, b, c, d}, Integers] Reduce[62748517/19487171 == a^b/c^d && 6 < c < 22 && 6 < b < 22 && 6 < d < 22, {a, b, c, d}, Integers] FindInstance[ 62748517/19487171 == a^b/c^d && 6 < a < 22 && 6 < c < 22 && 6 < b < 22 && 6 < d < 22, {a, b, c, d}, Integers] FindInstance[ 62748517/19487171 == a^b/c^d && 6 < c < 22 && 6 < b < 22 && 6 < d < 22, {a, b, c, d}, Integers] \sourceoff Warum mma dieses Verhalten zeigt verstehe ich nicht. Gruss endy


Wahlurne Für endy bei den Matheplanet-Awards stimmen
   Profil
endy
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 10.01.2011
Mitteilungen: 3263
  Beitrag No.6, eingetragen 2022-01-01 11:05

Hallo. Jetzt verstehe ich es. \sourceon mathematica (* In *) Clear @ "Global`*" SetSystemOptions[ "ReduceOptions" -> "ExhaustiveSearchMaxPoints" -> {1000, 100000}]; sol = Solve[ 62748517/19487171 == a^b/c^d && 6 < a < 22 && 6 < b < 22 && 6 < c < 22 && 6 < d < 22, {a, b, c, d}, Integers] (* Out *) {{a -> 13, b -> 7, c -> 11, d -> 7}} \sourceoff Der rechte Wert von "ReduceOptions" -> "ExhaustiveSearchMaxPoints" -> {1000, 100000}] ist vom System standardmäßig auf 10000 eingestellt und diesen Wert muss man erhöhen,z.B. auf 100000 ,damit mma diese Methode auf das Problem anwendet und dann eine Lösung findet. Gruss endy


   Profil
hyperG
Senior Letzter Besuch: in der letzten Woche
Dabei seit: 03.02.2017
Mitteilungen: 1589
  Beitrag No.7, vom Themenstarter, eingetragen 2022-01-01 14:19

\quoteon(2022-01-01 11:05 - endy in Beitrag No. 6) ... SetSystemOptions[ "ReduceOptions" -> "ExhaustiveSearchMaxPoints" -> {1000, 100000}]; ... \sourceoff ... standardmäßig auf 10000 ... Gruss endy \quoteoff Danke endy, genau das habe ich gesucht, damit die Berechnung nicht vorzeitig abbricht. Allerdings geht die Berechnungszeit sehr schnell hoch, weshalb ich dann mit c++ & weiteren Optimierungen viel verbessern konnte: hier Kitaktus hat z.B. mathematisch anders optimiert. Da ich keine "Scheinlösung" (nahe der echten Lösung) einbaute, konnte er es mit weniger Genauigkeit sehr schnell lösen. Wenn Du willst, kannst Du es ja mal probieren, bevor ich auflöse... Grüße Gerd


   Profil
hyperG hat die Antworten auf ihre/seine Frage gesehen.

Wechsel in ein anderes Forum:
 Suchen    
 
All logos and trademarks in this site are property of their respective owner. The comments are property of their posters, all the rest © 2001-2022 by Matroids Matheplanet
This web site was originally made with PHP-Nuke, a former web portal system written in PHP that seems no longer to be maintained nor supported. PHP-Nuke is Free Software released under the GNU/GPL license.
Ich distanziere mich von rechtswidrigen oder anstößigen Inhalten, die sich trotz aufmerksamer Prüfung hinter hier verwendeten Links verbergen mögen.
Lesen Sie die Nutzungsbedingungen, die Distanzierung, die Datenschutzerklärung und das Impressum.
[Seitenanfang]