线性方程式java

时间:2012-09-27 00:31:11

标签: java equation linear

我正在尝试将下面的等式转换为编程代码。目的是找到两条线的交叉点。和pront

(y1 - y2)x - (x1 - x2)y =(y1 - y2)x1 - (x1 - x2)y1

(y3 - y4)x - (x3 - x4)y =(y3 - y4)x3 - (x3 - x4)y3

我被告知使用cramers规则,但cramers规则有6个diff变量。我将从4个不同的点开始,作为8个变量(x1,y1,x2,y2,x3,y3,x4,y4)

我正在使用Java。任何帮助,将不胜感激。本网站上的所有问题都是针对不同类型的线性方程式,代码很复杂,我找不到任何与我相关的东西。

这就是我所拥有的,并不多,但从上述等式到可编程的转变真的让我感到困惑。

import java.util.Scanner;
public class E325 {
    public static void main(String[] args) {
    /* 
     * The purpose of this program is to find the intersect
     * of two lines given by the user by four points
     * 
     * Get the four points. x1,y1 x2,y2 x3,y3 x4,y4
     */
    Scanner input = new Scanner(System.in);
    System.out.print("Enter x1 y1, x2 y2, x3 y3, x4 y4: ");
    double x1 = input.nextDouble();
    double y1 = input.nextDouble();
    double x2 = input.nextDouble();
    double y2 = input.nextDouble();
    double x3 = input.nextDouble();
    double y3 = input.nextDouble();
    double x4 = input.nextDouble();
    double y4 = input.nextDouble();

    }
}

3 个答案:

答案 0 :(得分:4)

我不知道矩阵,所以我会以不同的方式解决它。

你知道足以计算每一行的m和b

m =(y2-y1)/(x2-x1)

b = y1 - m(x1)

计算一行的m和b,另一行计算m'和b'。

现在在十字路口,x,y在两条线上是相同的,所以 y = mx + b,y = m'x + b'。因此

mx + b = m'x + b'

x =(m'x + b' - b)/ m

将x插入mx + b以获得该x的y。

你仍然必须确保你找到的x,y在你的线上SEGMENTS;除非这些线是平行的,否则它们会在某处相交,但不一定在您开始使用的线段的端点之间。

答案 1 :(得分:1)

  

(y1 - y2)x - (x1 - x2)y =(y1 - y2)x1 - (x1 - x2)y1
  (y3 - y4)x - (x3 - x4)y =(y3 - y4)x3 - (x3 - x4)y3

     

我被告知使用cramers规则,但cramers规则有6个diff变量。

没有。那是完全错误的。 Cramer规则是一种求解Ax = b形式的方程式的简单技术,但其中A是NxN矩阵,x和b是N个向量。你需要做的是将这两个方程式表示为矩阵表达式。我会给你左手边对应上面的东西。我将离开右手边并将Cramer规则应用于你。

        A            *   x    = b

⌈ y1-y2   -(x1-x2) ⌉   ⌈ x ⌉
|                  | * |   |
⌊ y3-y4   -(x3-x4) ⌋   ⌊ y ⌋

将矩阵A与向量[x,y]相乘得出

⌈ y1-y2   -(x1-x2) ⌉   ⌈ x ⌉   ⌈ (y1-y2)*x - (x1-x2)*y ⌉
|                  | * |   | = |                       |
⌊ y3-y4   -(x3-x4) ⌋   ⌊ y ⌋   ⌊ (y3-y4)*x - (x3-x4)*y ⌋

请注意,此结果与您的方程对的左侧完全相同。

答案 2 :(得分:0)

一条线经过两点。

你有四个点和两个线。

一条线的等式是众所周知的:

y = m*x + b

其中m是斜率,b是y轴截距。

如果你有两行,它们看起来像这样:

-m1*x + y = b1
-m2*x + y = b2

你可以看到矩阵方程,不是吗?

[ -m1    1 ]{x} = {b1} 
[ -m2    1 ]{y}   {b2}

反转此项以求解两条线相交的(x,y)。如果你不能反转矩阵,则意味着它们不相交。

克莱默的规则?当然,写2x2的情况很容易。 LU分解会更加通用。