Tìm x' sao cho f(x') lớn nhất trong khoảng [a, b]


THUẬT TOÁN LEO ĐỒI THEO NGUYÊN LÝ THAM LAM
- n là hằng nguyên dương cho trước.
- delta là 1 hằng thực xác định

Code:

x1 = Random[Real, {a, b}];
For[i = 1, i ≤ n, i++,
       x2 = Random[Real, {x1 - delta, x1 + delta}];
       If[f[x1] < f[x2], x1 = x2];
    ];


CODE MẪU

Code:

(*Tim x1 sao cho f(x1) lon nhat tron khoang [a, b]
    Phuong phap : leo doi theo nguyen ly tham lam.*)
Clear[y, f, x, a, b, x1, x2, i, delta, m];
y = Input["Nhap f(x) = "];
f[x_] = y;
a = Input["Nhap vao a"];
b = Input["Nhap vao b"];
n = Input["Nhap so lan lap n "];
m = Input["Nhap so doan can chia m"];
delta = (b - a)/m;
x1 = Random[Real, {a, b}];
For[i = 1, i ≤ n, i++,
       x2 = Random[Real, {x1 - delta, x1 + delta}];
       If[f[x1] < f[x2], x1 = x2];
    ];
Print["f(x)=", y, " tren [", a, ",", b, "], co f(", x1, ") lon nhat"];