Ragazzi ho un problema. Ho da scrivere un programma in matlab per laminimizzazione di una funzione mediante metodo del gradiente coniugato con ricerca del passo unidmensionale inesatta senza uso di derivate. Il mio problema sta proprio nella ricerca del passo. Io uso il metodo della bisezione. e non ho problemi nel metodo in se per se che è piuottosto semplice, il mio problema è la determinazione dell'intervallo [a,b] all'interno del quale sono sicuro ci sia uno e un solo zero della funzione, cioè l'intervallo all'interno del quale la funzione cambia di segno. Vi posto il programma:
$input:
x = [12;23];
d = -gradiente(x); %dove gradiente è l'm.file che fa il gradiente della funzione
%ricerca intervallo:
%fisso un passetto delta_alfa
delta_alfa = 0.5;
x_1 = x + delta_alfa*d ;
x_2 = x ;
while ( funzione(x_1)*funzione(x_2) > 0 )
x_2 = x_1;
x_1 = x_1 + delta_alfa*d;
end
x_max = x_1;
x_min = x_2;
Il ciclo while però nn soddisfa mai la condizione in quanto non converge ma diverge
HELP!!