Sei sulla pagina 1di 1

clear

clc
x=input('inserire vettore colonna di primo tentativo') ;
k=0;
eps=10e-20;
epsf=10e-20;
a=10;
b=10;
c=10;
F=zeros(10000,1);
X=zeros(10000,2);
G=zeros(10000,2);
while a>eps && b>eps && c>epsf && k<10000
format long
k=k+1;
f=funzione(x);
g=gradiente(x);
H=Hessiana(x);
if det(H)~=0
H_inv=inv(H);
d=H_inv\(-g);
if g'*d>0
d=-g;
else
end
else d=-g;
end
d=d/norm(d);
[alfa,ALFA]=alfa_esatta(x,d);
xn=x+alfa.*d;
fn=funzione(xn);
a=norm(g);
b=norm(xn-x)/max(norm(x),1);
c=norm(fn-f)/max(norm(f),1);
F(k)=f;
X(k,1)=x(1);
X(k,2)=x(2);
G(k,1)=g(1);
G(k,2)=g(2);
x=xn;
end
format short
disp('punti')
disp(X(k,:))
disp('valore funzione')
disp(F(k))
disp('gradiente')
disp(G(k,:))
velocita_convergenza

Potrebbero piacerti anche