Thursday, April 23, 2020

Giải phương trình bậc 2 trong java

Trong đại số sơ cấp, phương trình bậc hai là phương trình có dạng:
với x là ẩn số chưa biết và a, b, c là các số đã biết sao cho a khác 0. Các số a, b, và c là những hệ số của phương trình và có thể phân biệt bằng cách gọi tương ứng hệ số bậc hai, hệ số bậc một, và hằng số hay số hạng tự do.[1]

phương trình bậc hai chỉ có một ẩn nên nó được gọi là phương trình "đơn biến". Phương trình bậc hai chỉ chứa lũy thừa của x là các số tự nhiên, bởi vậy chúng là một dạng phương trình đa thức, cụ thể là phương trình đa thức bậc hai do bậc cao nhất là hai.

Các cách giải phương trình bậc hai phổ biến là nhân tử hóa (phân tích thành nhân tử), phương pháp phần bù bình phương, sử dụng công thức nghiệm, hoặc đồ thị. Giải pháp cho các vấn đề tương tự phương trình bậc hai đã được con người biết đến từ năm 2000 trước Công Nguyên.
Phương trình bậc hai ax2 + bx + c = 0 có thể viết được thành (px + q)(rx + s) = 0. Trong một vài trường hợp, điều này có thể thực hiện bằng một bước xem xét đơn giản để xác định các giá trị p, q, r, và s sao cho phù hợp với phương trình đầu. Sau khi đã viết được thành dạng này thì phương trình bậc hai sẽ thỏa mãn nếu px + q = 0 hoặc rx + s = 0. Giải hai phương trình bậc nhất này ta sẽ tìm ra được nghiệm.
Viết chương trình giải phương trình bậc 2 trong java. Phương trình bậc 2 có dạng:

Kiến thức sử dụng trong bài này, java.util.Scanner được sử dụng để đọc dữ liệu nhập vào từ bàn phím và từ khóa static trong java. Bạn cũng nên tìm hiểu về package trong java.

Bài này được viết trên eclipse, bạn có thể tham khảo bài tạo chương trình java đầu tiên trên eclipse.
public class BaiTap1 {
    private static Scanner scanner = new Scanner(System.in);
 
    public static void main(String[] args) {
        System.out.print("Nhập hệ số bậc 2, a = ");
        float a = BaiTap1.scanner.nextFloat();
        System.out.print("Nhập hệ số bậc 1, b = ");
        float b = BaiTap1.scanner.nextFloat();
        System.out.print("Nhập hằng số tự do, c = ");
        float c = scanner.nextFloat();
        BaiTap1.giaiPTBac2(a, b, c);
    }
 
    public static void giaiPTBac2(float a, float b, float c) {
        // kiểm tra các hệ số
        if (a == 0) {
            if (b == 0) {
                System.out.println("Phương trình vô nghiệm!");
            } else {
                System.out.println("Phương trình có một nghiệm: "
                        + "x = " + (-c / b));
            }
            return;
        }
        // tính delta
        float delta = b*b - 4*a*c;
        float x1;
        float x2;
        // tính nghiệm
        if (delta > 0) {
            x1 = (float) ((-b + Math.sqrt(delta)) / (2*a));
            x2 = (float) ((-b - Math.sqrt(delta)) / (2*a));
            System.out.println("Phương trình có 2 nghiệm là: "
                    + "x1 = " + x1 + " và x2 = " + x2);
        } else if (delta == 0) {
            x1 = (-b / (2 * a));
            System.out.println("Phương trình có nghiệm kép: "
                    + "x1 = x2 = " + x1);
        } else {
            System.out.println("Phương trình vô nghiệm!");
        }
    }
}
Kết quả:
Nhập hệ số bậc 2, a = 2
Nhập hệ số bậc 1, b = 1
Nhập hằng số tự do, c = -1
Phương trình có 2 nghiệm là: x1 = 0.5 và x2 = -1.0
Trong ví dụ trên, phương thức Math.sqrt(double a) được sử dụng để tính căn bậc 2 của a.

No comments:

Post a Comment