Mục lục bài viết

1. Biện luận phương trình bậc hai ax2 + bx + c = 0

Phương trình bậc hai là phương trình có dạng ax2 + bx + c = 0. Trong đó a, b, và c là các hằng số và x là biến số. Các bước giải và biện luận phương trình bậc hai như sau:

– Nếu a = 0 thì phương trình trở thành phương trình bậc nhất bx + c = 0.

– Nếu a ≠ 0 thì xét Delta = b2 – 4ac:

+Trường hợp 1: Nếu Delta > 0 thì phương trình có 2 nghiệm phân biệt x1 = (-b + sqrt(Delta))/2a và x2 = (-b – sqrt(Delta))/2a.

+Trường hợp 2: Nếu Delta = 0 thì phương trình có nghiệm kép x = -b/2a.

+Trường hợp 3: Nếu Delta < 0 thì phương trình có vô nghiệm.

Ví dụ:

+Trường hợp 1: Cho phương trình 4x2 – 2x – 6 = 0. Delta =(-2)– 4.4.(-6) = 4 + 96 = 100, Delta > 0

Phương trình đã cho có 2 nghiệm phân biệt: x1 = (-(-2) + sqrt(100))/(2.4) = 3/2 và x2 = (-(-2) – sqrt(100))/(2.4) = -1

+Trường hợp 2: Cho phương trình x2 – 4x + 4 = 0.

Delta = (-4)– 4.4.1 = 0, phương trình đã cho có nghiệm kép: x1 = x2 = -(-4)/(2.1) = 2

+Trường hợp 3: Cho phương trình 3x2 + 2x + 5 = 0. Delta = 2– 4.3.5 = -56, Delta < 0, phương trình đã cho vô nghiệm.

2. Chương trình C++ biện luận và giải phương trình bậc hai

Sử dụng câu lệnh if…else để biện luận và giải phương trình bậc hai. Lưu ý: Trong bài này, chúng ta chi xét trường hợp a ≠ 0, còn a = 0 thì các bạn có thể xem bài phương trình bậc nhất bx + c = 0.

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    float a, b, c;
    cout << "Nhap he so a: ";
    cin >> a;
    cout << "Nhap he so b: ";
    cin >> b;
    cout << "Nhap he so c: ";
    cin >> c;

    if (a == 0) {
        cout << "Day khong phai la phuong trinh bac hai." << endl;
    } else {
        float delta = b * b - 4 * a * c;
        if (delta < 0) {
            cout << "Phuong trinh vo nghiem." << endl;
        } else if (delta == 0) {
            float x = -b / (2 * a);
            cout << "Phuong trinh co nghiem kep x = " << x << endl;
        } else {
            float x1 = (-b + sqrt(delta)) / (2 * a);
            float x2 = (-b - sqrt(delta)) / (2 * a);
            cout << "Phuong trinh co hai nghiem phan biet:" << endl;
            cout << "x1 = " << x1 << endl;
            cout << "x2 = " << x2 << endl;
        }
    }

    return 0;
}

Ta có thể sử dụng hàm để tái sử dụng và tách biệt quá trình tính toán:

#include <iostream>
#include <cmath>
using namespace std;

// Ham giai phuong trinh bac hai
void giaiPhuongTrinhBacHai(float a, float b, float c) {
    float delta = b * b - 4 * a * c;
    if (delta < 0) {
        cout << "Phuong trinh vo nghiem." << endl;
    } else if (delta == 0) {
        float x = -b / (2 * a);
        cout << "Phuong trinh co nghiem kep x = " << x << endl;
    } else {
        float x1 = (-b + sqrt(delta)) / (2 * a);
        float x2 = (-b - sqrt(delta)) / (2 * a);
        cout << "Phuong trinh co hai nghiem phan biet:" << endl;
        cout << "x1 = " << x1 << endl;
        cout << "x2 = " << x2 << endl;
    }
}

int main() {
    float a, b, c;
    cout << "Nhap he so a: ";
    cin >> a;
    cout << "Nhap he so b: ";
    cin >> b;
    cout << "Nhap he so c: ";
    cin >> c;

    if (a == 0) {
        cout << "Day khong phai la phuong trinh bac hai." << endl;
    } else {
        giaiPhuongTrinhBacHai(a, b, c);
    }

    return 0;
}

Trong cách này, chúng ta tạo một hàm riêng có tên giaiPhuongTrinhBacHai để giải phương trình bậc hai. Hàm này nhận ba tham số là các hệ số a, b và c và thực hiện các bước tính toán tương tự như cách trước. Sau đó, trong hàm main, chúng ta kiểm tra hệ số a và gọi hàm giaiPhuongTrinhBacHai nếu a khác 0.

Tác giả

Vinh Lê

Giảng viên CNTT, chia sẻ tutorial lập trình & phần cứng tại Góc Học IT. Hơn 500 bài viết hướng dẫn từ cơ bản đến nâng cao.

Gợi ý tiếp theo

Tìm dãy số Fibonacci trong C++

Học tiếp