[Matlab] Problemi con 'contour' e 'surfc'

Messaggioda nato_pigro » 08/04/2012, 11:11

Sia 'funzione' una function contenete una funzione bidimensionale. Quello che vorrei riuscire a fare è disegnare il grafico della funzione con 'surfc' in 'figure(2)' e le linee di livello con 'contour' in 'figure(1)', nella regione$[-2,2]x[-2,2]$.

Codice: Seleziona tutto
    pic=51;                  %finitezza griglia
    x=linspace(-2,2,pic);                        %|
    y=linspace(-2,2,pic);                        %|(0)
    [X,Y]=meshgrid(x,y);                        %|
    Z=zeros(length(x),length(y));                       %inizializzo
    for i=1:pic                                      %(1)
        for j=1:pic
            Z(i,j)=feval(@funzione,[x(i),y(j)]);             %valuto la funzione
        end
    end
    figure(1)
    contour(Y,X,Z,30);                          %(2)
    xlabel('x');
    ylabel('y');
    hold on
    figure(2)
    surfc(Y,X,Z);                                  %(2')
    xlabel('x');
    ylabel('y');


Ho due problemi:
(1): vorrei togliere questo 'for' ma se metto qualcosa tipo
Codice: Seleziona tutto
Z(:,:)=feval(funzione,[x(:),y(:)]);

mi da errore.
Ci sono metodi più veloci? Magari anche senza usare 'feval'...

(2) e (2'): Il codice per come l'ho scritto mi dà esattamente quello che vorrei, il problema è che per farlo funzionare ho dovuto invertire 'Y' e 'X' e non capisco il perchè.

(0): Non è un vero problema. Credo che quelle 3 righe di codice siano comprimibile in una, utilizzando bene il comando 'meshgrid', il problema è che faccio come ho sempre fatto non funziona, potrebbe essere per problemi di compatibilità con 'feval'?

Grazie. :)
Il principio di conservazione dell'energia per un pigro ha un altro significato.
Avatar utente
nato_pigro
Advanced Member
Advanced Member
 
Messaggio: 2517 di 2538
Iscritto il: 10/08/2006, 15:07
Località: Imperia

Torna a Analisi Numerica e Ricerca Operativa

Chi c’è in linea

Visitano il forum: Nessuno e 0 ospiti