[MatLab] Gradiente
Salve, volevo provare a vedere un pò come utiilizzare matlab per calcolare il gradiente delle funzioni ma mi sono bloccata praticamente all'inizio. Voglio calcolare il gradiente della funzione x*y-2*x e ho iniziato a scrivere così:
Però poi mi sono bloccata, come dovrei fare?
a = 0; b = 3; nx = 3; ny = 3; dx = (b-a)/nx; x = linspace(a,b,dx); dy = (b-a)/ny; y = linspace(a,b,dy);
Però poi mi sono bloccata, come dovrei fare?
Risposte
Ma come vorresti calcolare il gradiente? Numericamente? Simbolicamente? Quel codice non fa molto, ma contiene già degli errori. Il terzo argomento di linspace è infatti il numero di valori da estrarre nell'intervallo. Per cui dovrebbero essere nx e ny invece di dx e dy..
Vorrei far uscire i valori numerici
Ma ti va bene usare la formula del gradiente calcolata "a mano" o vuoi/devi usare qualche metodo numerico per stimarti le derivate nei diversi punti?
Praticamente una ragazza ha provato a scrivere un programma per calcolarsi il gradiente di questa funzione e le usciva una matrice con i valori del gradiente, vorrei capire come si fa
Quello che continua a non essermi chiaro è in che modo vuoi che venga calcolato il gradiente. Il gradiente di quella funzione è \( ( y - 2, x ) \) e questa formula può essere usata direttamente per calcolarne il valore. Il metodo più semplice è usando meshgrid.
L'alternativa è quella di calcolarti il gradiente usando le differenze tra i valori della funzione nella griglia, usando insomma un metodo di derivazione numerico.
a = 0; b = 3; nx = 3; ny = 3; [X, Y] = meshgrid(linspace(a, b, nx), linspace(a, b, ny)); Dx = Y - 2; Dy = X;
L'alternativa è quella di calcolarti il gradiente usando le differenze tra i valori della funzione nella griglia, usando insomma un metodo di derivazione numerico.
La ragazza che ha fatto questo programma usava i cicli for