Cho f(x)=a*x^2+b*x+c (a>0). Thực hiện gradient descent với learning rate lr, xuất phát x0, dừng khi |f'(x)| < eps hoặc đạt tối đa maxit bước.
In ra số bước đã thực hiện và giá trị x cuối cùng, cách nhau khoảng trắng. (Kiểm tra điều kiện dừng ở đầu mỗi vòng, trước khi cập nhật.)
k = 0
while k < maxit and |f'(x)| >= eps:
x = x - lr*f'(x)
k = k + 1
in k, x
a=1,b=0,c=0,x0=10,lr=0.1,eps=1,maxit=100: dừng khi |2x|<1 tức |x|<0.5.
Dòng 1: a b c. Dòng 2: x0 lr. Dòng 3: eps maxit.
a > 0; 0 < lr <= 0.5; 0 < eps <= 10; 1 <= maxit <= 100000.
Một dòng: số_bước x. Số bước là số nguyên; x in theo Số thực in với định dạng {:.6f} (6 chữ số thập phân).
Ví dụ:
Đầu vào:
1 0 0
10 0.1 1
100
Đầu ra:
14 0.439805
Giải thích:
Đang tải editor...