-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathlagrange_search.m
More file actions
30 lines (25 loc) · 949 Bytes
/
Copy pathlagrange_search.m
File metadata and controls
30 lines (25 loc) · 949 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function alpha = lagrange_search(f_a, low, max)
a = linspace(low, max, 3);
f1 = f_a(a(1));
f2 = f_a(a(2));
f3 = f_a(a(3));
% gama_1 = @(a) (a - a(2))*(a - a(3))/((a(1)- a(2))*(a(1) - a(3)));
% gama_2 = @(a) (a - a(1))*(a - a(3))/((a(2)- a(1))*(a(2) - a(3)));
% gama_3 = @(a) (a - a(1))*(a - a(2))/((a(3)- a(1))*(a(3) - a(2)));
%
% q = @(a) f1*gama_1(a) + f2*gamma_2(a) + f3*gamma_3(a);
res = (f1*(a(2) + a(3))/((a(1) - a(2))*(a(1) - a(3))) + ...
f2*(a(1) + a(3))/((a(2) - a(1))*(a(2) - a(3))) + ...
f3*(a(1) + a(2))/((a(3) - a(1))*(a(3) - a(2)))) / ...
(f1*2/((a(1) - a(2))*(a(1) - a(3))) + ...
f2*2/((a(2) - a(1))*(a(2) - a(3))) + ...
f3*2/((a(3) - a(1))*(a(3) - a(2))));
if (res >= low) && (res <= max)
alpha = res;
else
if(f1 > f2)
alpha = a(1);
else
alpha = a(2);
end
end