btvn.vn
Tìm kiếm Đăng nhập

Đóng gói phép giải phương trình bậc hai

Lưu trên thiết bị này
Kĩ thuật lập trình — CS · Chọn bài khác

Rẽ nhánh theo a và biệt thức

Với `ax²+bx+c=0`, điều kiện `a≠0` mới là phương trình bậc hai. Tính `Δ=b²−4ac`: nếu Δ<0 thì không có nghiệm thực; Δ=0 có nghiệm kép `−b/(2a)`; Δ>0 có hai nghiệm `(−b+√Δ)/(2a)` và `(−b−√Δ)/(2a)`. Ví dụ `x²−3x+2=0` có Δ=1 và hai nghiệm 2, 1. Hai công thức nghiệm phải dùng hai dấu khác nhau; dùng dấu cộng hai lần sẽ lặp cùng một nghiệm.

Hàm trả dữ liệu để chương trình chính trình bày

```python from math import sqrt def nghiem_bac_hai(a, b, c): if a == 0: raise ValueError("a phải khác 0") delta = b * b - 4 * a * c if delta < 0: return () if delta == 0: return (-b / (2 * a),) return ((-b + sqrt(delta)) / (2 * a), (-b - sqrt(delta)) / (2 * a)) ``` Gọi `nghiem_bac_hai(1, -3, 2)`, `nghiem_bac_hai(1, 2, 1)` và `nghiem_bac_hai(1, 0, 1)` lần lượt cho `(2.0, 1.0)`, `(-1.0,)` và `()`: hai nghiệm thực phân biệt, một nghiệm kép, không có nghiệm thực. Có thể lưu hàm vào `phuong_trinh.py` rồi để `main.py` nhập và diễn đạt thông báo. Giá trị trả về rỗng chỉ có nghĩa **không có nghiệm thực** trong phạm vi bài; không kết luận không có nghiệm phức.

Bài luyện

`x²−3x+2=0` có hai nghiệm thực nào?
Chọn một đáp án

Bài luyện

Khi nào `ax²+bx+c=0` không còn là phương trình bậc hai?
Chọn một đáp án

Bài luyện

Với Δ<0, hàm trong bài trả `()` để nói điều gì?
Chọn một đáp án

Đang học