gpt4 book ai didi

java - 在 Java 中创建方程组方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:46:37 24 4
gpt4 key购买 nike

我正在尝试建立一个 Java 方法来根据三个给定的坐标和距离计算 x 和 y 坐标。我使用了以下帖子:Determining The Coordinates Of A Point Based On Its Known Difference From Three Other Points指导。我只是无法让它正常工作并且不太了解数学。对于我给定的输入,我应该输出 (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);
}

}

带方法的类:

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(距离 vector 是共线的)。因此,Cramer 方法用于求解线性系统的行列式 M 始终为零。因此,您的程序中会出现两次被零除。

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

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

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

所以,我可以写

x-x1=d1

x-x2=d2

x-x3=d3

因此,使用这些等式中的任何一个,您都会得到 x=4,并且 Y 与其他点相同。

[PS:我认为这不是问题,但在 Mx 和 My 的评估中我会除以 2 而不是除以 2 - 只是为了确保没有发生整数除法]

希望我能帮到您。

丹尼尔

关于java - 在 Java 中创建方程组方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21803408/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com