diff --git a/Hello.java b/Hello.java index b8a5adfe3b425ec20719b83515964f3908bf759d..adf5ede0ff36bf359ab566f58dbcc6c656bea8ef 100644 --- a/Hello.java +++ b/Hello.java @@ -15,4 +15,46 @@ public class Hello { return a+b; } + + /** + * 求解二元一次方程 ax + b = 0 的根 + * @param a 方程的一次项系数,不能为0 + * @param b 方程的常数项 + * @return 方程的根 + * @throws IllegalArgumentException 当a为0时抛出,因为此时方程无解或有无穷多解 + */ + public static double solveLinearEquation(double a, double b) throws IllegalArgumentException { + if (a == 0) { + throw new IllegalArgumentException("Coefficient 'a' cannot be zero in a linear equation"); + } + return -b / a; + } + + /** + * 求解二元一次方程组: + * a1x + b1y = c1 + * a2x + b2y = c2 + * + * @param a1 第一个方程x的系数 + * @param b1 第一个方程y的系数 + * @param c1 第一个方程的常数项 + * @param a2 第二个方程x的系数 + * @param b2 第二个方程y的系数 + * @param c2 第二个方程的常数项 + * @return 包含x和y的解的数组,格式为[x, y] + * @throws IllegalArgumentException 当方程组无解或有无穷多解时抛出 + */ + public static double[] solveLinearSystem(double a1, double b1, double c1, + double a2, double b2, double c2) throws IllegalArgumentException { + double determinant = a1 * b2 - a2 * b1; + + if (determinant == 0) { + throw new IllegalArgumentException("The system of equations has no unique solution"); + } + + double x = (b2 * c1 - b1 * c2) / determinant; + double y = (a1 * c2 - a2 * c1) / determinant; + + return new double[]{x, y}; + } } \ No newline at end of file