Bài 4
Đề bài: Nhập hệ số a, b, c, d của hàm bậc ba f(x) = ax^3 + bx^2 + cx + d.
Tìm GTLN và GTNN trên đoạn [m, n] bằng cach:
1. Tìm tat ca điểm cực trị trong (m, n)
2. Tính giá trị tai cực trị và tai 2 đầu mut
3. So sánh và ket luan
Ví dụ: f(x) = x^3 - 3x + 1 trên [-2, 2]
Kết quả:
f'(x) = 3x^2 - 3 = 0 => x = -1 và x = 1
f(-2) = -1, f(-1) = 3, f(1) = -1, f(2) = 3
GTLN = 3, GTNN = -1
Đăng nhập để giáo viên có thể giao bài và nhận bài nộp của bạn.
Câu trả lời
import math
a = float(input("a (bac 3): "))
b = float(input("b (bac 2): "))
c = float(input("c (bac 1): "))
d = float(input("d (hang so): "))
m = float(input("Can trai m: "))
n = float(input("Can phai n: "))
def f(x):
return a*x**3 + b*x**2 + c*x + d
# Tim diem cuc tri trong (m, n)
A2, B2, C2 = 3*a, 2*b, c
delta = B2**2 - 4*A2*C2
diem_xet = [m, n]
if delta > 0 and abs(A2) > 1e-12:
x1 = (-B2 - math.sqrt(delta)) / (2*A2)
x2 = (-B2 + math.sqrt(delta)) / (2*A2)
for x0 in [x1, x2]:
if m < x0 < n:
diem_xet.append(x0)
print(f"\nCac diem can xet: {[round(x,4) for x in sorted(diem_xet)]}")
gia_tri = {}
for x0 in diem_xet:
gia_tri[round(x0,6)] = round(f(x0), 6)
for x0, y0 in sorted(gia_tri.items()):
print(f" f({x0}) = {y0}")
gtln = max(gia_tri.values())
gtnn = min(gia_tri.values())
print(f"\nTren [{m}, {n}]: GTLN = {gtln}, GTNN = {gtnn}")