0

我有这个任务要求我编写一个代码来确定二次方程的根(ax^2 + bx + c = 0)。但我必须使用大学的图书馆(type.lib.Equation;)。

我几乎把一切都弄清楚了,除了有两个根的情况。我可以得到第一个根,但我仍在四处寻找第二个根

到目前为止我的代码

import java.util.Scanner;
import java.io.PrintStream;
import type.lib.Equation;

public class Check05A
{

    /**
     * @param args
     */
    public static void main(String[] args)
    {
        PrintStream output = System.out;
        Scanner input = new Scanner(System.in);

        output.println("Enter a,b,c pressing ENTER after each... ");
        double a = input.nextDouble();
        double b = input.nextDouble();
        double c = input.nextDouble();
        output.print("The equation: ");
        Equation x = new Equation(a, b, c);
        output.print(x);
        int root = x.getRootCount();




        if(root == 0)
        {
            output.println(" has no real roots.");
        }
        if(root == 1)
        {
            double r1 = x.getRoot(root);
            output.println(" has the single root: " + r1);
        }
        if(root == 2)
        {
            double r1 = x.getRoot(root);
            double r2 = -x.getRoot(root);
            output.println(" has the two roots: " + r2 + " and " + r1);
        }
        if(root == -1)
        {

            output.println("\nis an identity - any value is a root.");
        }









    }

}

例如 1, 2, -4 应输出为:

“有两个根:-3.23606797749979 和 1.2360679774997898”

4

2 回答 2

0

你只是把负号放在根 1 上。

情况并非总是如此。

查找二次方程求根的公式:

x=\frac{-b \pm \sqrt {b^2-4ac}}{2a}.

在你的函数 x.getRoot() 中,返回一个数组中的两个值。

于 2013-10-18T05:26:08.387 回答
0

*请注意,此答案仅适用于使用 If 语句查找任何 n 次多项式的根的 TI-84 计算器。如果这不能回答您的问题,请继续。

我制作了一个 TI-84 程序,它有助于找到任何 n 次多项式的根。这是代码:

(请注意,Z 和 S 被设置为 f 和 g 的导数;您必须自己找到这些(稍后我将使用参数更新此代码,它将自己获取 f' 和 g'。将 z 和 s 设置为1 使用它来查找 GCF 或根!)(此外,在 vars 中找到 Y1,如果您在单击 vars 按钮后立即 tab,按 enter,然后再次输入)

首先,将您正在使用的函数放入 Y1、Y2 等...

在此处输入代码 :Prompt F,G`:Prompt Z:Prompt S:If Y1=F:If Y2=G:F*G=FS+GZ->H :If X≥Y:XY=I->I:Disp I:If I=0:If I>0:重复 XY=J->J:Disp J

而已!超级简单,但很有帮助!让我知道任何改进(我将很快制作一个衍生查找程序,以便很快嵌入到这段代码中!)

非常感谢,祝您代码愉快!-埃文

于 2021-12-03T10:17:25.310 回答