Bài 4
Đề bài: Giải phương trình dang a*sin(x) + b*cos(x) = c.
Dua ve dang R*sin(x + phi) = c.
Tìm R = can(a^2 + b^2), tan(phi) = b/a.
Xuat nghiệm trong khoảng [0, 360] do.
Ví dụ: sin(x) + can(3)*cos(x) = 1
Kết quả:
a=1, b=1.732, c=1
R = 2.0, phi = 60.0 do
2*sin(x + 60) = 1 => sin(x+60) = 0.5
x + 60 = 30 => x = -30 (+ 360k)
x + 60 = 150 => x = 90 (+ 360k)
Nghiem trong [0, 360]: x = 90.0 do và x = 330.0 do (tu -30+360)
Đă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("He so a (truoc sin): "))
b = float(input("He so b (truoc cos): "))
c = float(input("Ve phai c: "))
R = math.sqrt(a**2 + b**2)
print(f"R = {round(R, 4)}")
if R == 0:
print("a va b khong the dong thoi bang 0")
elif abs(c / R) > 1:
print("Phuong trinh vo nghiem vi |c/R| > 1")
else:
phi = math.atan2(b, a)
phi_do = math.degrees(phi)
print(f"phi = {round(phi_do, 4)} do")
print(f"PT: {R}*sin(x + {round(phi_do,2)}) = {c}")
sin_val = c / R
alpha = math.asin(sin_val)
alpha_do = math.degrees(alpha)
nghiem = set()
for k in range(-5, 10):
x1 = alpha_do - phi_do + 360 * k
x2 = (180 - alpha_do) - phi_do + 360 * k
if 0 <= x1 <= 360:
nghiem.add(round(x1, 2))
if 0 <= x2 <= 360:
nghiem.add(round(x2, 2))
print("Nghiem trong [0, 360]:")
for ng in sorted(nghiem):
print(f" x = {ng} do")