Giải phương trình bậc 3 bằng Python
Đề bài: Viết chương trình bằng ngôn ngữ lập trình Python giải phương trình bậc 2 (đủ): ax^2 + bx + c = 0 (a, b != 0)
Code tham khảo dưới đây được viết trên Python ver 3.8: # Ho ten: Hoang Van Tuan # Website: timoday.edu.vn # Thu vien import math # Nhap du lieu a = float(input('Nhap he so a: ')) while a == 0: if a == 0: print('Hay nhap lai he so a!') a = float(input('Nhap he so a: ')) b = float(input('Nhap he so b: ')) while b == 0: if b == 0: print('Hay nhap lai he so b!') b = float(input('Nhap he so b: ')) c = float(input('Nhap he so c: ')) # Giai va bien luan delta = b * b - 4 * a * c if delta > 0: x1 = (-b + math.sqrt(delta)) / (2 * a) x2 = (-b - math.sqrt(delta)) / (2 * a) print('Phuong trinh co 2 nghiem phan biet la:') print('x1 = ', x1) print('x2 = ', x2) elif delta == 0: x = -b / (2 * a) print('Phuong trinh co nghiem kep la:') print('x1 = x2 = ', x) else: print('Phuong trinh vo nghiem')
Các thẻ: lap trinhlập trình python Hướng dẫn chi tiết:Phương trình bậc 1 (bậc nhất) là phương trình có dạng: ax + b = 0 Sau đây là một giải thuật cho phương trình bậc nhất:
+ Nhập vào các hệ số a và b + Nếu a==0: - Nếu b==0 => Vô số nghiệm (hay vô định) - Nếu b!=0 => Vô nghiệm + Nếu a!=0: Phương trình có nghiệm là x = -b/a Còn dưới đây là lưu đồ cho thuật toán: Sau đây là đoạn code demo: # Bài toán: Hãy viết chương trình giải phương # trình bậc nhất 1 ẩn: ax + b = 0 # Lập trình: a = float(input("Nhập hệ số a: " )) b = float(input("Nhập hệ số b: " ))if a ==0 :if b ==0 : print("Vô số nghiệm" )else : print("Vô nghiệm" )else : print("Phương trình có nghiệm x =" , -b / a)Tham khảo:
Hãy viết chương trình giải phương trình bậc hai một ẩn ax^2 + bx + c = 0 bằng Python, đây là phương trình mà bạn đã được học ở bậc trung học cơ sở lớp 9.
Bài giải -------------------- ######## -------------------- Trước tiên bạn cần phải biết cách giải phương trình bậc hai, và cũng từ công thức toán học đó mà ta đưa ra được thuật toán giải phương trình này bằng ngôn ngữ Python. Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. Để giải phương trình bậc hai ax^2 + bx + c = 0 thì ta phải tính chỉ số Delta, dựa vào kết quả này mà ta xác định được nghiệm. Cụ thể như hình sau: Ok, bây giờ ta sẽ viết chương trình trong Python như sau: Bài viết này được đăng tại [free tuts .net] Bước 1: Nhập các số a, b và c. Kiểm tra điều kiện một trong hai số a và b phải khác 0. Bước 2: Tính Delta Bước 3: Dựa vào Delta để tìm ra nghiệm của phương trình (có 3 trường hợp như trong hình). # HỌC PYTHON TẠI FREETUTS.NET # TÁC GIẢ: CƯỜNG NGUYỄN # Giải phương trình bậc hai 1 ẩn ax^2 + bx + c = 0 import math print("Chương trình đăng tại freetuts.net!") # Nhập số a và kiểm tra điều kiện khác 0 print("Nhập vào số a: ") a = int(input()) print("Nhập vào số b: ") b = int(input()) while True: if a == 0 and b == 0: print("Một trong hai số a và b phải khác 0: ") print("Nhập lại số a: ") a = int(input()) print("Nhập lại số b: ") b = int(input()) else: break # Nhập số c print("Nhập vào số c: ") c = int(input()) # Tính Delta delta = b**2 - 4 * a * c # Nghiệm if delta < 0: print("Phương trình vô nghiệm") elif delta == 0: print("Phương trình có nghiệm kép x1 = x2 = ", -(b / (2 * a)) ) else: print("Phương trình có hai nghiệm phân biệt:") print("x1 = ", (-(b) + math.sqrt(delta))/(2*a) ) print("x1 = ", (-(b) - math.sqrt(delta))/(2*a) ) Ví dụ mình giải phương trình x^2 - 5x + 4 = 0 thì có hai nghiệm: x1 = 4 và x2 = 1. Danh sách bài tập Python cơ bản Cùng chuyên mục:
Hãy viết chương trình giải phương trình bậc nhất một ẩn bằng Python (ax + b = 0), đây là bài toán giải phương trình khá đơn giản đã được học ở cấp II, hãy dùng ngôn ngữ Python để giải nó.
Bài giải -------------------- ######## -------------------- Trước tiên bạn cần phải biết cách giải phương trình bậc nhất một ẩn trong toán học đã nhé, sau đó bạn mới biết thuật toán để giải bằng Python. Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức. Giả sử ta có phương trình ax + b = 0, đây là phương trình chỉ có một nghiệm duy nhất đó là: x = -b/a. Vậy các bước để giải nó trong Python như sau: Bước 1: Yêu cầu nhập vào hai số a và b Bài viết này được đăng tại [free tuts .net] Bước 2: Kiểm tra nếu a = 0 thì yêu cầu nhập lại số a, vì phương trình này có điều kiện a # 0. Bước 2: Tìm nghiệm bằng công thức x = -b/a Bài giải như sau: # HỌC PYTHON TẠI FREETUTS.NET # TÁC GIẢ: CƯỜNG NGUYỄN # Giải phương trình bậc nhất 1 ẩn ax + b = 0 print("Chương trình đăng tại freetuts.net!") # Nhập số a và kiểm tra điều kiện khác 0 print("Nhập vào số a: ") a = int(input()) while True: if a == 0: print("Vui lòng nhập số a khác 0: ") a = int(input()) else: break # Nhập số b print("Nhập vào số b: ") b = int(input()) # Nghiệm print("Nghiệm của phương trình là x = ", (-b / a)) Chạy chương trình lên và nếu bạn nhập a = 0 thì Python sẽ nhắc bạn nhập lại như sau: Nhập đúng thì kết quả sẽ như hình sau: Danh sách bài tập Python cơ bản Cùng chuyên mục:Bài toán #include #include #include #include #include using namespace std; #define float long double float a, b, c, d; vector<float> Result; float h(float x) { return a * x * x * x + b * x * x + c * x + d; } int sign(float x) { if (fabs(x) <= 1e-9) return 0; return x > 0 ? 1 : -1; } void decide(float x) { Result.push_back(x); } bool solve(float a, float b, float c, float &x1, float &x2) { if (sign(a) == 0) { if (sign(b) == 0) return false; x1 = x2 = -c / b; return true; } float d = b * b - 4 * a * c; if (sign(d) == 0) { x1 = x2 = -b / (2 * a); return true; } else if (sign(d) > 0) { x1 = (-b - sqrt(d)) / (2 * a); x2 = (-b + sqrt(d)) / (2 * a); if (x1 > x2) swap(x1, x2); return true; } return false; } void search1(float ll, float rr) { if (::isinf(ll)) { ll = rr - 100; while (sign(h(ll)) > 0) ll -= (rr - ll); } if (::isinf(rr)) { rr = ll + 100; while (sign(h(rr)) < 0) rr += (rr - ll); } //printf("search1(%Lg, %Lg)\n", ll, rr); if (sign(h(ll)) == 0) return decide(ll); if (sign(h(rr)) == 0) return decide(rr); if (sign(h(ll)) > 0 || sign(h(rr)) < 0) return; float mm = (ll + rr) / 2; for (int i = 1; i <= 100; i++) { h(mm) > 0 ? rr = mm : ll = mm; mm = (ll + rr) / 2; } return decide(mm); } void search2(float ll, float rr) { //printf("search2(%g, %g)\n", ll, rr); if (sign(h(ll)) == 0) return decide(ll); if (sign(h(rr)) == 0) return decide(rr); if (sign(h(ll)) < 0 || sign(h(rr)) > 0) return; float mm = (ll + rr) / 2; for (int i = 1; i <= 100; i++) { h(mm) < 0 ? rr = mm : ll = mm; mm = (ll + rr) / 2; } return decide(mm); } int main() { while (cin >> a >> b >> c >> d) { if (sign(a) == 0) { float x1, x2; if (solve(b, c, d, x1, x2)) { decide(x1); decide(x2); } } else { if (a < 0) { a = -a, b = -b, c = -c, d = -d; } float x1, x2; if (solve(3 * a, 2 * b, c, x1, x2)) { search1(-1.0 / 0.0, x1); search2(x1, x2); search1(x2, +1.0 / 0.0); } else { search1(-1.0 / 0.0, 0); search1(0, +1.0 / 0.0); } } sort(Result.begin(), Result.end()); Result.erase(unique(Result.begin(), Result.end()), Result.end()); cout.precision(6); for (float x : Result) cout << (fabs(x) <= 1e-15 ? 0.0 : x) << endl; Result.clear(); } } |