Anteprima
Vedrai una selezione di 4 pagine su 11
Glossario di MatLab programmazione Pag. 1 Glossario di MatLab programmazione Pag. 2
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
Glossario di MatLab programmazione Pag. 6
Anteprima di 4 pagg. su 11.
Scarica il documento per vederlo tutto.
Glossario di MatLab programmazione Pag. 11
1 su 11
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

Operazioni puntuali

Operazioni puntuali vengono eseguite componente per componente, cioè termine ij si relazione con il

rispettivo termine ij

• C = A .* B C(i,j) = A(i,j)*B(i,j)

• C = A./B C(i,j) = A(i,j)/B(i,j) per tutti gli indici i e j

• C = A .^B C(i,j) = A(i,j)^B(i,j) per tutti gli indici i e j . Ciascun elemento di A viene elevato a

potenza, con esponente l’elemento corrispondente di B. Le operazioni puntuali (elemento per

elemento) non hanno una corrispondente operazione nell’algebra lineare. Esistono solo per

facilitare la scrittura di alcune operazioni.

C = A & B and (vero solo se entrambe sono vere)

C = A | B or (vero se almeno una è vera)

C = A ~ B not

C = xor(A, B) or esclusivo (vero se solo una della due è vera)

Size [m,n] = size(A) con m il numero di righe ed n il numero di colonne come variabili di output separate.

Se invece chiedo D = size(A) con A matrice mxn ottengo un vettore riga D=[m,n] contenente il numero di

righe e colonne nella matrice.

• Posso mettere dim=size(A) e per il controllo su matrice quadrata metto if dim(1)~=dim(2) ad

esempio. Altrimenti m~=n se metto [m,n]=size(A)

Det D=det(A) calcola il determinante della matrice A

B=inv(A) è l’inverso della matrice A, con A matrice quadrata

Diag( ) , A=diag(d) genera matrice A diagonale, sulla base del vettore d che viene inserito sulla diagonale. Se

chiedo diag(a,1) il vettore a viene inserito sulla codiagonale superiore e cosi via oppure diag(a,-1) viene

inserito in codiagonale inferiore e cosi via.

V=diag(D) estrae la diagonale principale di D

W=diag(D,k) se k>0 estrae la k-esima diagonale superiore se k<0 estrae la k-esima diagonale inferiore

• D=diag(diag(A)) estrae vettore dalla diagonale e lo reinserisce in una matrice sulla diagonale

• A=diag(d)+diag(cinf,-1)+diag(csup,1) crea matrice tridiagonale

T=triu(A) estrae la parte triangolare sup di A. T è una matrice triangolare sup.

• T=triu(A,k) estrae gli elementi che sono al di sopra della k-esima diagonale di A.

• T=triu(A,-1)-triu(A,2) è matrice triadiagonale

T=tril(A) estrae gli elementi che sono al di sotto della k-esima diagonale di A.

R = rank(A) calcola il numero di righe linearmente indipendenti di A

N=norm(A,n) calcola norma n di A e se n=1 calcola norma1 se n=2 calcola norma2 o se n=inf calcola

normainfinito.

• norm(X) is the same as norm(X,2).

Zeros A=zeros(m,n) crea matrice mxn con tutti 0 . se metto solo zeros(m) crea matrice mxm invece

Ones A=ones(m,n) crea mamtrice mxn con tutti 1

D=eye(m,n) crea matrice con 1 in diagonale e resto 0

eig(A) dà in output un vettore le cui componenti sono gli autovalori della matrice A.

• Eigs(mat,m) restituisce gli autovalori più grandi in valore assolto della matrice.

magic(N) is an N-by-N matrix constructed from the integers 1 through N^2 with equal row, column, and

diagonal sums. Produces valid magic squares for all N > 0 except N = 2.

Help

Esegue quale operazione? Riceve quale input? Da quale output?

Ciclo forma annidata posso inserire quanti “elseif” voglio.

If condizione1

If condizione oppure

Blocco1

Blocco istruzioni Elseif cond2

Else If cond1

Blocco2

Blocco 2 Else if cond2

Else

end ….

Blocco3 end

end end

Errori

• Runtime , operazioni che non hanno senso (ex. Fare operazione puntuale tra matrici di dimensione

differente). Non tutti i runtime vengono riconosciuti da matlab.

A\B è in matlab il Metodo di eliminazione di gauss con pivoting parziale con A nxn matrice dei coefficienti

e B nx1 vettore dei termini noti.

Factorial factorial(N) for scalar N, is the product of all the integers from 1 to N

Sort(x) riordina in ordine crescente o discendente le componenti del vettore x o la matrice.

B=sort(A,DIM,’DIRECTION’) con ‘ascend’ che c’è di default oppure ‘descend’.

• [B,I] = sort(A,...) also returns a sort index I which specifies how the elements of A were rearranged

to obtain the sorted output B.

• Ex. Sort(nnz) riordina in modo crescente il vettore nnz e S e P sono : S il vettore riordinato e P il

vettore degli indici di riga che indica come sono stati riposizionate le componenti. Allora se ho

matrice A la ridefinisco cambiandone le righe con A=A(P,:) .

[S,P] = sort(nnz);

A=A(P,:);

max max(x) dà il valore del massimo degli elementi di x se x è vettore, se x è matrice max(x) è vettore riga

contenente il massimo elemento di tutte le colonne.

Se chiedo [m,p]=max(x) ottengo m massimo e p la posizione in cui compare m (se ci sono più di un m allora

p è la prima posizione assunta da m). Se invece chiedo max(X,Y) con X e Y vettori o cmq di dimensioni

compatibili, ottengo un vettore le cui componenti sono il massimo tra i valori delle componenti di X e Y.

min Smallest component. For vectors, min(X) is the smallest element in X. For matrices, min(X) is a row

vector containing the minimum element from each column. [Y,I] = min(X) returns the indices of the

minimum values in vector I.if the values along the first non-singleton dimension contain more than one

minimal element, the index of the first one is returned. min(X,Y) returns an array with the smallest

elements taken from X or Y. X and Y must have compatible sizes.

Contare il tempo

to=cputime Dt=ti-to Tic (avvia)

oppure

ciclo If Dt>T Toc (ferma, e calcola di suo il Dt)

ti=cputime Break

end

il tempo di esecuzione viene stampato sulla finestra dei comandi. (command window)

arresto? If abs(xn-c)<eps , Break , end

Assey assey=@(x)[0] per trovare lo 0

Definire funzione

f=’(x-1).^6’ o per 2 variabili f='x.*exp(-x.^2-y.^2)' oppure con anonymous function @ che è un puntatore

ad una funzione f=@(x)[(x-1).^6]

eval y=eval(f) o y=eval(f,x) valuta la funzione in ogni elemento di x.

(Codice sarebbe f=@.. ; x=linspace(e,r,t);y=eval(f) cioe y=f(x).)

Function files condivide solo input e output con la memoria principale

• Function[output1,output2]=nomefun(input1,input2)

• La funzione termina con l’ultima istruzione (nelle versioni più recenti di Matlab si consiglia l’uso del

comando end) oppure al primo eventuale comando return.

• Lo help della funzione lo scrivo con %

• Una funzione può contenere un’altra funzione (sotto-funzioni) mentre uno script può solo

richiamare funzioni memorizzate in altri file .m . Una sotto-funzione può essere richiamata solo

dalla funzione all’interno della quale è definita

input nome_variabile=input (‘ stringa di caratteri tra apici ’ )

vettori a piu dimensioni

con N=3 A(i,j,k) è vettore di matrici della stessa dimensione

• A(i,j,k) i = indice di riga j = indice di colonna della k-sima matrice contenuta nella k-sima

componente di A

Esempio: B = A(:,:,k) B è una matrice

a = A(i,j,k) a è l’ elemento avente indice di riga i e indice di colonna j della k-sima matrice di A

• In generale si può definire una struttura dati con N indici A(i,j,…….,k)

• I(3,2,1) estrae l’elemento di posizione (3,2) nella prima componente di I

fprintf fprintf(fid,’formato’,variabili) con variabili in ordine di come ho messo i formati.

• fprintf('un intero %d e una stringa %s\n', x, s) %10s visualizza una stringa di 10 caratteri

• %s stringa %6.2f visualizza un numero con 6 cifre di cui 2

• %d intero decimali

• %e notazione scientifica

• %f decimale %-5d visualizza un intero con 5 cifre allineato a

• %g compatta sinistra

• \n carattere di ritorno a capo

• \t carattere di tabulazione

fprintf('%d\t %3.2f\t %+6.5f\t %-6.5f\n',[(1:k);x;f1;f2])

n x(n) cos(x(n)) sin(x(n))

1 0.00 +1.00000 0.00000

2 0.63 +0.80902 0.58779

3 1.26 +0.30902 0.95106

Generata matrice le cui righe vengono lette per colonne fprintf !

fprintf('la soluzione del sistema è x= \n ')

fprintf('%+6.5f \n',x)

fid = fopen ('stringa', 'w') fid identifica il file di cui 'stringa‘ definisce il nome 'w‘ indica la modalità con

cui è aperto il file, ovvero scrittura fprintf(fid, 'formato', variabili) scrive nel file identificato dalla

variabile fid le variabili con il formato assegnato fclose (fid) chiude il file identificato da fid

• Fid1=fopen(‘exp.txt’,’w’)

Fscanf legge per righe CICLI

Cicli controllati for-end, cicli condizionati while-end, strutture condizionali if elseif else end, uscita

controllata break.

• Posso scrivere sulla stessa riga ma serve la virgola “,” di separazione.

• for ind=m:p:n , end cioè da m a n con passo p , oppure se metto ind=m:n sotto intendo passo p=1.

CRTL C blocca esecuzione

While a senza condizione lo fa fino a quando a non va a 0. Ad ex. [While a while b end end] , nel while

a(quando lo vede per la prima volta) while b (agisce ora su b finche b non è 0 e poi ma solo poi torna su a).

• while (err1>eps) & (err2>eps)

• while (err1>eps) | (err2>eps)

• inizializzare fuori dal ciclo while le variabili E1 e E2 e porle uguali al vettore vuoto, cioè E1=[]; E2=[];.

All’interno del ciclo while aggiungere le assegnazioni E1 = [E1 err1]); e E2 = [E2 err2]); subito dopo

le assegnazioni alle variabili err1 e err2

comandi generici

whose, whos is a long form of WHO. It lists all the variables in the current workspace, together with

information about their size, bytes, class, etc.

close ALL closes all the open figure windows.

Error error(‘ bla bla ‘) dà errore visualizzato in rosso

break consente di uscire in manier forzata da un ciclo, quando viene eseguito matlab salta direttamente

all’istruzione end con cui termina il ciclo.

• Terminate execution of WHILE or FOR loop. break terminates the execution of FOR and WHILE

loops. In nested loops, break exits from the innermost loop only. break is not defined outside of a

FOR or WHILEl oop. Use RETURN in this context instead.

• interrompe indipendentemente se è verificata una condizione in if…end. Implementa il metodo di

arresto a posteriori

Return interrompe immediatamente l’esecuzione del programma

• return causes a return to the invoking function or to the keyboard. Normally functions return

when the end of the function is reached. A return statement can be used to force an early return.

• Non prevede parametri di input. le istruzioni successive nello script non vengono proprio eseguite.

Polyfit , P = polyfit(X,Y,N) con X vettore dei nodi , Y vettore dei valori della funzione nei nodi e N il grado

del polinomio P. Output è proprio polinomio di grado N, P che è stato trovato con il metodo dei minimi

quadrati. P è vettore riga di lunghezza N+1 contenente i coefficienti del p

Dettagli
Publisher
A.A. 2018-2019
11 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher StudentHelper di informazioni apprese con la frequenza delle lezioni di Metodi numerici con elementi di programmazione e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università degli Studi di Roma La Sapienza o del prof Bruni Vittoria.