Aiutino per prgramma matlab

di Anonimizzato9379 il
1 risposte
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!!

1 Risposte

  • Dovresti allegare anche le funzioni 'gradiente' e 'funzione' in modo che si possano riprodurre i tuoi risultati e capire dov'è il problema...
Devi accedere o registrarti per scrivere nel forum
1 risposte