Skip to content

Commit 8aed004

Browse files
committed
initial commit UOA
0 parents  commit 8aed004

15 files changed

Lines changed: 784 additions & 0 deletions

ConjugateG.m

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
function X_est = ConjugateG(x,iteration )
2+
A = [3 -1 0 ; -1 3 -1 ; 0 -1 3] ;
3+
b= [1;2;3] ;
4+
r = ones(3,iteration) ;
5+
p = ones(3,iteration) ;
6+
X = ones(3,iteration) ;
7+
alpha = ones(1,iteration) ;
8+
beta = ones(1,iteration) ;
9+
r(: , 1) = A*x(:,1) -b ;
10+
p(:,1) = -r(: , 1) ;
11+
k = 1 ;
12+
X(:,1) = x ;
13+
while r(: , k) ~= 0
14+
alpha(k) = (- r(: , k)' * p(: , k)) / (p(:,k)' * A * p(:,k)) ;
15+
X (:,k+1) = X(:,k) + alpha(k) * p(:,k) ;
16+
r (:,k+1) = A*X(:,k+1) -b ;
17+
beta (k+1) = (r(:,k+1)' * A * p(:,k))/(p(:,k)' * A * p(:,k)) ;
18+
p(:,k+1) = -r(:,k+1) + beta(k+1) * p(:,k) ;
19+
k = k+1 ;
20+
end
21+
X_est = X(:,end)
22+
X;
23+
r
24+
25+
end
26+

Cuachy.m

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
function P_c = Cuachy(xx, Delta)
2+
f = @(x) (x(2)-x(1)^2)^2+(1-x(1))^2 ;
3+
gf = @(x) [ 2*x(1) - 4*x(1)*(- x(1)^2 + x(2)) - 2 ; - 2*x(1)^2 + 2*x(2)];
4+
hf = @(x) [ 2+12*x(1)^2-4*x(1) , -4*x(1) ; -4*x(1) , 2 ];
5+
6+
BB = hf(xx) ;
7+
gg = gf (xx) ;
8+
9+
Toe = @(g,B) (g'*B*g <=0) * 1 + (g'*B*g >0) * min( 1 , norm(g,2)^3/(Delta*g'*B*g) ) ;
10+
11+
P_c = (-Toe(gg,BB) * Delta/norm(gg,2)) * gg;
12+
min_val_Cauchy_model = f(xx)+ gg'*P_c
13+
14+
15+
16+
end

NewtonCubic.m

Lines changed: 111 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,111 @@
1+
function F = Newton_backtrack(x1,c,itr_num)
2+
f = @(x) 100*(x(2)-x(1)^2)^2+(1-x(1))^2 ;
3+
gf = @ (x) [-2*(1-x(1))-400*x(1)*(x(2)-x(1)^2) ; 200*(x(2)-x(1)^2)] ;
4+
hf = @ (x) [-400*x(2)+1200*x(1)^2+2 -400*x(1) ; -400*x(1) 200 ] ;
5+
phi = @ (Alpha,x,p) 100*((Alpha*p(2)+x(2))-(Alpha*p(1)+x(1))^2)^2+(1-(Alpha*p(1)+x(1)))^2;
6+
gphi = @ (Alpha,x,p) 200*(p(2) - 2*p(1)*(x(1) + Alpha*p(1)))*(x(2) + Alpha*p(2) - (x(1) + Alpha*p(1))^2) + 2*p(1)*(x(1) + Alpha*p(1) - 1);
7+
8+
9+
%x0 = [0,1]'
10+
alpha_arr = .9*ones(1,itr_num) ;
11+
X = ones(2,itr_num) ;
12+
F = ones(1,itr_num) ;
13+
%P=[0;0]
14+
x_nxt = x1 ;
15+
for k = 1:itr_num
16+
X(:,k) = x_nxt ;
17+
P = -gf( X(:,k) ) ;
18+
ii=2;
19+
alpha_arr_check = .9*ones(1,10000);
20+
A_0 = 0.2 ;
21+
A_n1 = 4 ;
22+
A_p1 =1 ;
23+
if gf( X(:,k))' * (((hf(X(:,k)))) *gf( X(:,k) )) >= 0
24+
%disp('posdef')
25+
P = -inv((hf(X(:,k)))) *gf( X(:,k) ) ;
26+
else
27+
%disp('indef')
28+
%hf(X(:,k))
29+
P = -inv((hf(X(:,k)))) *gf( X(:,k) ) ;
30+
X(:,k) ;
31+
end
32+
33+
while ( phi(A_0 , X(:,k) , P) > phi(0, X(:,k) , P) + c* A_0 *gphi(0 , X(:,k) , P) )%eval( subs(phi, [Alpha , x1,x2,p1, p2 ] , [alpha_arr_check(ii) , X(1,k) ,X(2,k) , P(1) , P(2) ])) <= eval( subs(phi, [Alpha , x1,x2,p1, p2 ] , [0 , X(1,k) ,X(2,k) , P(1) , P(2) ])) + c * alpha_arr_check(ii) * eval( subs(gphi, [Alpha , x1,x2,p1, p2 ] , [alpha_arr_check(ii) , X(1,k) ,X(2,k) , P(1) , P(2) ])) )
34+
35+
%disp('in while')
36+
%disp(A_0)
37+
%disp(phi(A_0 , X(:,k) , P))
38+
%disp(phi(0, X(:,k) , P) + c* A_0 *gphi(0 , X(:,k) , P))
39+
40+
A_0 = -.5*gphi(0 , X(:,k) , P)*A_n1 ^2/(phi(A_n1 , X(:,k) , P)-phi(0, X(:,k) , P)-gphi(0 , X(:,k) , P)*A_n1);
41+
42+
%d1 = eval(subs(gphi,Alpha,alpha_arr_check(ii-1)) + subs(gphi,Alpha,alpha_arr_check(ii)) -3* (subs(phi,Alpha,alpha_arr_check(ii-1)) - subs(phi,Alpha,alpha_arr_check(ii)))/(alpha_arr_check(ii-1)-alpha_arr_check(ii)));
43+
%%subs (d1,)
44+
%d2 = sign(alpha_arr_check(ii)-alpha_arr_check(ii-1)) *sqrt(d1^2 - eval(subs(gphi,Alpha,alpha_arr_check(ii-1))*subs(gphi,Alpha,alpha_arr_check(ii)))) ;
45+
%alpha_arr_check(ii+1) = alpha_arr_check(ii) - (alpha_arr_check(ii) - alpha_arr_check(ii-1)) *( (eval(subs(gphi,Alpha,alpha_arr_check(ii))) + d2 - d1 /(eval( subs(gphi,Alpha,alpha_arr_check(ii)) - subs(phi,Alpha,alpha_arr_check(ii-1))) +2*d2 ) )) ;
46+
%d1
47+
%d2
48+
49+
50+
d1 = gphi(A_n1 , X(:,k) , P) + gphi(A_0 , X(:,k) , P) - 3* (phi(A_n1 , X(:,k) , P) - phi(A_0 , X(:,k) , P))/(A_0 - A_n1);
51+
d2 = sign (A_0 - A_n1) *sqrt(d1^2 - gphi(A_n1 , X(:,k) , P) * gphi(A_0 , X(:,k) , P));
52+
A_p1 = A_0 - (A_0 - A_n1) *( gphi(A_0 , X(:,k) , P) + d2 - d1) / (A_0 - A_n1 +2*d2);
53+
%A_p1 = A_0
54+
55+
56+
%AB = [A_n1^2 ,-A_0^2 ; -A_n1^3,A_0^3] * [phi(A_0 , X(:,k) , P)-phi(0, X(:,k) , P)-gphi(0 , X(:,k) , P)*A_0;
57+
%phi(A_n1 , X(:,k) , P)-phi(0, X(:,k) , P)-gphi(0 , X(:,k) , P)*A_n1 ] *1/(A_n1^2 * A_0^2*(A_0 - A_n1))
58+
%aa = AB(1) ;
59+
%bb = AB(2) ;
60+
%A_p1 = (-bb + sqrt(bb^2 - 3*aa*gphi(0 , X(:,k) , P)))/(3*aa)
61+
%
62+
%ii = ii + 1;
63+
A_n1 = A_0 ;
64+
A_0 = A_p1;
65+
%if abs(A_0 - A_n1) <= 0.001 || A_0 <= 0.01
66+
% A_0 = .5*A_n1
67+
%end
68+
end
69+
70+
alpha_arr(k) = A_0;
71+
F(k) = f(X(:,k)) ;
72+
x_nxt = X(:,k) + alpha_arr(k) * P ;
73+
P;
74+
alpha_arr(k) ;
75+
76+
end
77+
78+
% cvx_begin
79+
% variable x(2)
80+
% minimize(100*(x(2)-x(1)^2)^2+(1-x(1))^2 )
81+
% subject to
82+
%
83+
% cvx_end
84+
% x
85+
disp('X')
86+
X(:,end)
87+
disp('Alpha')
88+
alpha_arr(end)
89+
90+
%figure
91+
%
92+
%subplot(1,2,1);
93+
%plot(1:itr_num , (alpha))
94+
%
95+
%
96+
%title(strcat(' x_0 = ',mat2str(x1)))
97+
%xlabel('iteration')
98+
%ylabel('alpha(BackTraking)')
99+
%
100+
%
101+
%subplot(1,2,2);
102+
%plot(1:itr_num , log(F))
103+
%%surf(X(1,:) , X(2,:) , F)
104+
%title(strcat('Newton_backtrack', ' x_0 = ',mat2str(x1) , ' F* = ' ,mat2str(F(end)) , ' X* = ' ,mat2str(X(:,end)) ))
105+
%xlabel('iteration')
106+
%ylabel('log(F_k*)')
107+
108+
109+
return
110+
111+
end

Newton_backtrack.m

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
function F = Newton_backtrack(x1,ro,c,itr_num)
2+
f = @(x) 100*(x(2)-x(1)^2)^2+(1-x(1))^2 ;
3+
gf = @ (x) [-2*(1-x(1))-400*x(1)*(x(2)-x(1)^2) ; 200*(x(2)-x(1)^2)] ;
4+
hf = @ (x) [-400*x(2)+1200*x(1)^2+2 -400*x(1) ; -400*x(1) 200 ] ;
5+
6+
%x0 = [0,1]'
7+
alpha = ones(1,itr_num) ;
8+
X = ones(2,itr_num) ;
9+
F = ones(1,itr_num) ;
10+
%P=[0;0]
11+
x_nxt = x1 ;
12+
for k = 1:itr_num
13+
X(:,k) = x_nxt ;
14+
%disp ('hessian :')
15+
%hf(X(:,k))
16+
17+
if gf( X(:,k))' * (((hf(X(:,k)))) *gf( X(:,k) )) >= 0
18+
%disp('posdef')
19+
P = -inv((hf(X(:,k)))) *gf( X(:,k) ) ;
20+
else
21+
%disp('indef')
22+
%hf(X(:,k))
23+
P = -inv((hf(X(:,k)))) *gf( X(:,k) ) ;
24+
X(:,k) ;
25+
end
26+
while ( f( X(:,k) + alpha(k) * P) > f( X(:,k)) + c*alpha(k)* gf( X(:,k))' * P )
27+
alpha(k) = ro * alpha (k) ;
28+
end
29+
F(k) = f(X(:,k)) ;
30+
x_nxt = X(:,k) + alpha(k) * P ;
31+
32+
end
33+
34+
% cvx_begin
35+
% variable x(2)
36+
% minimize(100*(x(2)-x(1)^2)^2+(1-x(1))^2 )
37+
% subject to
38+
%
39+
% cvx_end
40+
% x
41+
disp('X')
42+
X(:,end)
43+
disp('alpha')
44+
alpha(end)
45+
46+
figure
47+
48+
subplot(1,2,1);
49+
plot(1:itr_num , (alpha))
50+
51+
52+
title(strcat(' x_0 = ',mat2str(x1)))
53+
xlabel('iteration')
54+
ylabel('alpha(BackTraking)')
55+
56+
57+
subplot(1,2,2);
58+
plot(1:itr_num , log(F))
59+
%surf(X(1,:) , X(2,:) , F)
60+
title(strcat('Newton_backtrack', ' x_0 = ',mat2str(x1) , ' F* = ' ,mat2str(F(end)) , ' X* = ' ,mat2str(X(:,end)) ))
61+
xlabel('iteration')
62+
ylabel('log(F_k*)')
63+
64+
65+
return
66+
67+
end

Report1_96131054.pdf

525 KB
Binary file not shown.

TR.m

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
function X_star = TR (xx,eta, Delta_hat,Delta0,itration)
2+
f = @(x) (x(2)-x(1)^2)^2+(1-x(1))^2 ;
3+
gf = @(x) [ 2*x(1) - 4*x(1)*(- x(1)^2 + x(2)) - 2 ; - 2*x(1)^2 + 2*x(2)];
4+
hf = @(x) [ 2+12*x(1)^2-4*x(1) , -4*x(1) ; -4*x(1) , 2 ];
5+
g= gf(xx);
6+
B = hf(xx) ;
7+
mdl = @ (p) f(xx) + g'*p + p'* B *p;
8+
9+
%gf(xx) ;
10+
%hf(xx) ;
11+
%P_dog = dogleg ( xx, 10)
12+
13+
X = ones(2,itration) ;
14+
P_dog = ones(2,itration) ;
15+
Delta = ones(1,itration) ;
16+
Delta(1) = Delta0 ;
17+
X(:,1) = xx;
18+
for k = 1:itration
19+
P_dog(:,k) = dogleg ( X(:,k), Delta(k)) ;
20+
ro = (f(X(:,k)) - f(X(:,k)+P_dog(:,k)) ) / (mdl([0 0]') - mdl(P_dog(:,k)) );
21+
22+
if ( ro <.25 )
23+
Delta(k+1) = Delta(k)/4 ;
24+
else
25+
if (ro>.25 & norm(P_dog(:,k),2)==Delta(k))
26+
Delta(k+1) = min(2*Delta(k) , Delta_hat) ;
27+
else
28+
Delta(k+1) = Delta(k) ;
29+
end
30+
end
31+
if(ro > eta)
32+
X(:,k+1) = X(:,k) +P_dog(:,k) ;
33+
else
34+
X(:,k+1) = X(:,k) ;
35+
end
36+
37+
38+
end
39+
X_star = X(:,end);
40+
X ;
41+
42+
end

dogleg.m

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
1+
function P_star = dogleg(xx, Delta)
2+
f = @(x) (x(2)-x(1)^2)^2+(1-x(1))^2 ;
3+
gf = @(x) [ 2*x(1) - 4*x(1)*(- x(1)^2 + x(2)) - 2 ; - 2*x(1)^2 + 2*x(2)];
4+
hf = @(x) [ 2+12*x(1)^2-4*x(1) , -4*x(1) ; -4*x(1) , 2 ];
5+
6+
B = hf(xx) ;
7+
g = gf (xx) ;
8+
9+
10+
P_B = -inv(B) *g;
11+
P_U = - ((g'*g) /(g'*B*g) ) * g;
12+
13+
f = @(x) (x(2)-x(1)^2)^2+(1-x(1))^2 ;
14+
P_hat = @(t) ((0<=t)&(t<=1)) * t' *P_U + ((1<t)&(t<=2)) * (P_U + (t'-1) *(P_B - P_U));
15+
mdl = @ (p) f(xx) + g'*p + p'* B *p;
16+
syms t x
17+
%eqn = norm(P_U + (t-1)*(P_B-P_U),2) == Delta
18+
eqn = (P_U(1) + (t-1)*(P_B(1)-P_U(1))) ^2 + (P_U(2) + (t-1)*(P_B(2)-P_U(2))) ^2 == Delta^2;
19+
tt = eval(solve(eqn,t));
20+
21+
22+
%P_star = 0 ;
23+
24+
if(norm(P_B,2) <= Delta || tt(2) >=2)
25+
%disp('xx+P_B')
26+
xx+P_B;
27+
v_star = f(xx+P_B) ;
28+
P_star = P_B ;
29+
30+
else
31+
if (imag(tt(2)) ~= 0)
32+
tt(2) = 0 ;
33+
end
34+
if ( 0 <=tt(2) & tt(2) < 1 )
35+
%disp ('0< < 1')
36+
P_star = tt(2) * P_U ;
37+
xx+P_star ;
38+
else
39+
if (1 <=tt(2) & tt(2) < 2)
40+
P_star = (P_U + (tt(2)-1) *(P_B - P_U));
41+
%disp ('1< < 2')
42+
xx+P_star ;
43+
end
44+
end
45+
%end
46+
end
47+
%disp('out of trust')
48+
%T = 0.1:.1:2;
49+
%sz = size(T)
50+
%lst = [] ;
51+
%my_p = 0;
52+
%toe = 0.1;
53+
%min_val_dog_model = 1000 ;
54+
%for kk = 0:.1:2
55+
% p_t = P_hat( kk )
56+
% %kk
57+
% %disp('norm p_t ')
58+
% %norm(p_t,2)
59+
% if(norm(p_t,2) <= Delta)
60+
% disp('||p_t|| <= Delta')
61+
% if(min_val_dog_model > mdl(p_t) )
62+
% min_val_dog_model = mdl(p_t);
63+
% my_p = p_t;
64+
% toe = kk ;
65+
% end
66+
% %mdl_out = mdl(p_t) ;
67+
% %lst = [lst,mdl_out];
68+
% end
69+
%end
70+
%[m,i] = min ( mdl_out ) ;
71+
%P_star = P_hat( T(i) ) ;
72+
%P_star = my_p ;
73+
74+
75+
%disp ('min_val_dog_model : ')
76+
%T(i)
77+
%m
78+
%min_val_dog_model
79+
%toe
80+
%end
81+
82+
end

0 commit comments

Comments
 (0)