用Java创建方程组方法

用Java创建方程组方法,java,algorithm,geometry,triangulation,Java,Algorithm,Geometry,Triangulation,我试图建立一个Java方法,根据三个给定的坐标和距离计算x和y坐标。我使用了以下帖子:作为指导。我就是不能让它正常工作,也不能真正理解数学。对于给定的输入,我应该输出(1,4),但根据我的d1、d2、d3输出一系列不同的结果 public class Driver { public static void main (String[] args) { double x1 = 1; double y1 = 1; double

我试图建立一个Java方法,根据三个给定的坐标和距离计算x和y坐标。我使用了以下帖子:作为指导。我就是不能让它正常工作,也不能真正理解数学。对于给定的输入,我应该输出(1,4),但根据我的d1、d2、d3输出一系列不同的结果

    public class Driver {
    public static void main (String[] args)
    {
        double x1 = 1;
        double y1 = 1;
        double x2= 2;
        double y2 = 1;
        double x3= 3;
        double y3 = 1;
        double d1 = 3;
        double d2 = 2;
        double d3 = 1;
        Main control = new Main();
        control.GET_POINT(x1,y1,x2,y2,x3,y3,d1,d2,d3);
    }

}
w类/方法:

public class Main {

    public void GET_POINT(double x1, double y1,double x2,double y2,double x3,double y3, double r1, double r2, double r3){
       double A = x1 - x2;
       double  B = y1 - y2;
       double D = x1 - x3;
       double E = y1 - y3;

        double T = (r1*r1 - x1*x1 - y1*y1);
        double C = (r2*r2 - x2*x2 - y2*y2) - T;
        double  F = (r3*r3 - x3*x3 - y3*y3) - T;


        // Cramer's Rule

      double  Mx = (C*E  - B*F) /2;
       double My = (A*F  - D*C) /2;
      double  M  = A*E - D*B;

        double x = Mx/M;
        double y = My/M;
        System.out.println(x);
        System.out.println("and ");
        System.out.println( y);

    }

}

我想你的程序没有问题。问题是您选择的四个点具有相同的Y(距离向量为共线)。因此,克拉默方法用于求解线性系统的行列式M始终为零。所以程序中会出现两个零除法

在这种情况下,解决方案要简单得多:

(x-xi)^2+(y-yi)^2=di^2

但是y-yi=0。Threfore,x-xi=di

所以,我可以写

x-x1=d1

x-x2=d2

x-x3=d3

因此,使用这些方程中的任何一个,得到x=4,Y与其他点相同

[注:我认为这不是问题,但在计算Mx和My时,我不会除以2,而是除以2.0-只是为了确保不会发生整数除法]

我希望我能帮忙


丹尼尔

你能展示你的输出吗?@mrambo,如果还有其他问题,请告诉我!谢谢你,我感谢你的帮助!