Ganzzahlige Optimierung oder so ^^



  • ALso das genaue Problem ist in diesem Falle:

    a*(a+1) * b*(b+1) = 8000000



  • a*(a+1) * b*(b+1) = 8000000

    Schritt 1: Gleichung nach b umstellen, gibt für jedes a zwei Lösungen für b.
    Für -1 <= a <= 0 gibt es gar keine Lösung.
    Schritt 2: Tabelle aufstellen für -400 <= a <= 400, passendes b ausrechnen und runden.

    Beste Lösungen:

    a      b
    36    -78
    36     77
    77    -37
    77     36
    -37   -78 
    -37    77 
    -78   -37
    -78    36
    

    Dafür ist | a*(a+1) * b*(b+1) - 8000000 | = 8, und etwas besseres habe ich nicht geraten. Falls es etwas tolleres gibt, vermutlich nur für a > 400.

    Leider nicht sehr mathematisch. Geht es hübscher?!



  • Also geht es gar nicht um ein Optimierungsproblem in erster Linie sondern um das Loesen impliziter Funktionen. Schaue dir mal an, wie man in der Computergrafik effizient implizite Funktionen im 2D zeichnet. Oder Contourlines oder Isolines oder ...

    Was hindert dich daran, a=1 zu setzen und b ausrechnen? Ausgehend von diesem Punkt kannst du die Kurve verfolgen. Marching Squares sei als Stichwort genannt. Aus der Loesungsmenge wird dann das Element mit dem kleinsten Fehler herausgenommen.

    Demnach muss ich mich korrigieren:

    Gibt es da ein Standardvorgehen, das unabhängig von f ist?

    Ja!


Anmelden zum Antworten