# Solver



## Kerberus (11. Jan 2004)

Kennt jemand ein Computer-Programm das Gleichungssysteme  lösen kann?
Ich muss ein System umformen, da Java das nicht kann:

(x - x_1)^2 + (y - y_1)^2 = a^2  //erste Gleichung wobei x/y die Lösungsvariablen sind und x_1/y_1 Parameter
(x - x_2)^2 + (y - y_2)^2 = k^2 //zweite Gelichung

Ich sollte eine Lösung der art x = .....  und y = ...... haben. x/y sollten durch die Parameter ausgedrückt sein.


----------



## bröggle (11. Jan 2004)

hmmm vesuchs mal mit der Derive-Trial von www.derive.com , derive wurde vor einiger Zeit von Texas Instruments gekauft, bekanntlichst einer der größten Taschenrechner-Bauer.


Ich kanns nur empfehlen...


----------



## exorzist (11. Jan 2004)

Maple?
Excel?


----------



## Gast (22. Aug 2005)

wir haben im rahmen eines projektes 2 kreise geschnitten und die schnittpunkte ermittelt...

versucht nicht den code zu verstehen, sondern kopiert ihn höchstens (es hat keinen sinn - zu kompliziert *gg*)

        x1 = (Math.sqrt( -Math.pow(mx1, 4) + 4 * Math.pow(mx1, 3) * mx2 +
                        2 * Math.pow(mx1, 2) *
                        (Math.pow(r1, 2) - Math.pow(my1, 2) + 2 * my1 * my2 -
                         Math.pow(my2, 2) - 3 * Math.pow(mx2, 2) +
                         Math.pow(r2, 2)) -
                        4 * mx1 * mx2 *
                        (Math.pow(r1, 2) - Math.pow(my1, 2) + 2 * my1 * my2 -
                         Math.pow(my2, 2) - Math.pow(mx2, 2) + Math.pow(r2, 2)) -
                        Math.pow(r1, 4) +
                        2 * Math.pow(r1, 2) *
                        (Math.pow(my1, 2) - 2 * my1 * my2 + Math.pow(my2, 2) +
                         Math.pow(mx2, 2) + Math.pow(r2, 2)) - Math.pow(my1, 4) +
                        4 * Math.pow(my1, 3) * my2 -
                        2 * Math.pow(my1, 2) *
                        (3 * Math.pow(my2, 2) + Math.pow(mx2, 2) -
                         Math.pow(r2, 2)) +
                        4 * my1 * my2 *
                        (Math.pow(my2, 2) + Math.pow(mx2, 2) - Math.pow(r2, 2)) -
                        Math.pow(Math.pow(my2, 2) + Math.pow(mx2, 2) -
                                 Math.pow(r2, 2), 2)) * Math.abs(my1 - my2) +
              Math.pow(mx1, 3) - Math.pow(mx1, 2) * mx2 -
              mx1 *
              (Math.pow(r1, 2) - Math.pow(my1, 2) + 2 * my1 * my2 -
               Math.pow(my2, 2) + Math.pow(mx2, 2) - Math.pow(r2, 2)) +
              mx2 *
              (Math.pow(r1, 2) + Math.pow(my1, 2) - 2 * my1 * my2 +
               Math.pow(my2, 2) + Math.pow(mx2, 2) - Math.pow(r2, 2))) /
             (2 * (Math.pow(mx1, 2) - 2 * mx1 * mx2 + Math.pow(my1, 2) -
                   2 * my1 * my2 + Math.pow(my2, 2) + Math.pow(mx2, 2)));

        x2 = -(Math.sqrt( -Math.pow(mx1, 4) + 4 * Math.pow(mx1, 3) * mx2 +
                         2 * Math.pow(mx1, 2) *
                         (Math.pow(r1, 2) - Math.pow(my1, 2) + 2 * my1 * my2 -
                          Math.pow(my2, 2) - 3 * Math.pow(mx2, 2) +
                          Math.pow(r2, 2)) -
                         4 * mx1 * mx2 *
                         (Math.pow(r1, 2) - Math.pow(my1, 2) + 2 * my1 * my2 -
                          Math.pow(my2, 2) - Math.pow(mx2, 2) + Math.pow(r2, 2)) -
                         Math.pow(r1, 4) +
                         2 * Math.pow(r1, 2) *
                         (Math.pow(my1, 2) - 2 * my1 * my2 + Math.pow(my2, 2) +
                          Math.pow(mx2, 2) + Math.pow(r2, 2)) - Math.pow(my1, 4) +
                         4 * Math.pow(my1, 3) * my2 -
                         2 * Math.pow(my1, 2) *
                         (3 * Math.pow(my2, 2) + Math.pow(mx2, 2) -
                          Math.pow(r2, 2)) +
                         4 * my1 * my2 *
                         (Math.pow(my2, 2) + Math.pow(mx2, 2) - Math.pow(r2, 2)) -
                         Math.pow(Math.pow(my2, 2) + Math.pow(mx2, 2) -
                                  Math.pow(r2, 2), 2)) * Math.abs(my1 - my2) -
               Math.pow(mx1, 3) + Math.pow(mx1, 2) * mx2 +
               mx1 *
               (Math.pow(r1, 2) - Math.pow(my1, 2) + 2 * my1 * my2 -
                Math.pow(my2, 2) + Math.pow(mx2, 2) - Math.pow(r2, 2)) -
               mx2 *
               (Math.pow(r1, 2) + Math.pow(my1, 2) - 2 * my1 * my2 +
                Math.pow(my2, 2) + Math.pow(mx2, 2) - Math.pow(r2, 2))) /
             (2 * (Math.pow(mx1, 2) - 2 * mx1 * mx2 + Math.pow(my1, 2) -
                   2 * my1 * my2 + Math.pow(my2, 2) + Math.pow(mx2, 2)));

        y1 = Math.sqrt(Math.pow(r1, 2) - Math.pow(x1 - mx1, 2)) + my1;
        y2 = Math.sqrt(Math.pow(r1, 2) - Math.pow(x2 - mx1, 2)) + my1;
        System.out.println("x1, y1: " + x1 + " " + y1);
        System.out.println("x2, y2: " + x2 + " " + y2);


----------



## 0xdeadbeef (23. Aug 2005)

Die beiden oben genannten Gleichungen bilden ja noch nicht wirklich ein System, weil sie aufgelöst nach x und y ja jeweils von anderen Variablen abhängen. Was genau ist denn Zweck der Übung?

Aufgelöst nach x ergibt sich z.B. für die erste Gleichung:
    x = x_1+(2*y*y_1-y_1^2-y^2+a^2)^(1/2), x = x_1-(2*y*y_1-y_1^2-y^2+a^2)^(1/2)

Und für die zweite:
    x =  x_2+(2*y*y_2-y_2^2-y^2+k^2)^(1/2),  x = x_2-(2*y*y_2-y_2^2-y^2+k^2)^(1/2)  

Sind immer zwei Lösungen wegen des Quadrats...

Für y entsprechend:
    y = y_1+(-x^2+2*x*x_1-x_1^2+a^2)^(1/2), y = y_1-(-x^2+2*x*x_1-x_1^2+a^2)^(1/2)
und
    y = y_2+(-x^2+2*x*x_2-x_2^2+k^2)^(1/2), y = y_2-(-x^2+2*x*x_2-x_2^2+k^2)^(1/2)


----------

