簡體   English   中英

用Java創建方程系統方法

[英]Creating a System of Equations Method in Java

我正在嘗試建立一個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);
    }

}

帶有方法的類:

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(距離向量為colinar)。 因此,克萊默方法用來求解線性系統的行列式M始終為零。 因此,您的程序中會產生兩個零除。

在這種情況下,解決方案要簡單得多:

(X-11)^ 2 +(Y基)^ 2 =二^ 2

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

所以我可以寫

X-X1 = D1

X-X 2 = D2

X-X3 = D3

因此,使用這些方程式中的任何一個,您將獲得x = 4且Y與其他點相同。

[PS:我認為這不是問題,但是在Mx和My的求值中,我將除以2.0而不是除以2-以確保不會發生整數除法]

希望我能幫上忙。

丹尼爾

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM