MATLAB cheatsheet
GENERALI:
-Fixed point con 4 cifre decimali: format short
-Fixed point con 14 cifre decimali: format long (si scrive nella riga precedente)
-Controllare la dimensione di una variabile: size(v)
-sopprimere output inserire ; alla fine della riga
-rimuovere testo dalla command window: clc
-rimuovere le variabili esistenti: clear
-commento: %
-due punti: n1:n2 indica dal numero 1 al numero 2
MATRICI / VETTORI:
-Creazioine di un Array: a = [1 2 3 4]
-Creare una matrice: a = [1 3 5; 2 4 6; 7 8 10]
-Creare una matrice composta da zeri: z= zeros(righe,colonne)
-Creare una matrice che come entrate ha solo 1: z= ones(righe,colonne)
-Generare un vettore riga: v[inizio : passo : fine]
-linspacegenera valori equispaziati: linspace(vIniziale , vFinale , numValori)
( si può anche fare con v= inizio:step:fine)
-Accedere ad un elemento di un vettore: z=v(posizione) (inserire “end” per ultimo el.) oppure per
estrarre molteplici elementi: z=v([vettore posizioni])
-Accedere ad un elemento di una matrice: z=M(riga,colonna) (inserire “end” per ultimo el.)
-Accedere agli elementi di una riga di una M : v=M(riga,posizione 1° vett cercato: ultimo vett cercato)
-Accedere agli elementi di una riga/colonna di una matrice: z=M ( riga, : ) z=M( : , colonna)
-Estrarre una sottomatrice: z= M ( [ vettore riga ] , [ vettore colonna ] )
-Cambiare elementi di una matrice: M ( riga , colonna ) = [ nuovoVal ; nuovoVal ]
-rimuovere una riga: m ( riga, : ) = [ ] (stessa cosa si può fare per una colonna)
-Determinare la lunghezza di un vettore: lenght(v)
-Vettore trasposto: v’
-Norma di un vettore: norm(v)
-somma algebrica tra vettori (v e w): v+w
-prodotto scalare tra vettori (v,w): v*w’ oppure dot(v,w)
-prodotto componente per componente: v.*w
-elevamento a potenza componente per componente: v.^n (n scalare)
-concatenare due vettori v e w: z=[v w]
-eliminare delle componenti da un vettore v: v(comp1 : comp2) = []
-sostituire componenti di un vettore v con quelle di un vettore w: v(c1:c2)=w;
-crea una matrice identita’: e=eye(n)
-crea una matrice di numeri casuali compresi tra 0 e 1: r=rand(n)
-crea una matrice di numeri casuali (anche negativi) : r=randn(n)
-crea una matrice di numeri casuali interi: r=randi(m,n)
-elevare a potenza ogni elemento di una matrice (non la matrice intera): M2=M.^2 (.
=>element by element)-> N.B. devono avere le stesse dimensioni
-diagonale di una matrice: d=diag(M) (la
funzione diag si può usare anche per creare una matrice diagonale: D=diag(vettore)
-matrice triangolare: M=triu(matrice) ->superioreM=tril(mat) ->inferiore
-somma degli elementi delle colonne di una matrice: s = sum(A,1)
-somma degli elementi delle righe di una matrice: s = sum(A,2)
-prodotto scallare di v e w: ps=sum(v.*w)
Polyval e polyfit
Spline
Condizionamento di un sistema lineare
Comandi PA=LU automatica
Fattore R nella fattorizzazione di Cholesky
Fattorizzazione QR della matrice A
SOLUZIONE QR
b=A*x;
[Q,R]=qr(A);
xQR=R\(Q'*b);
Sistema sovradeterminato
Autovalori
Numero di condizionamento di ogni autovalore
Valori singolari
rank
rank
Sistema triangolare superiore SOSTITUZIONE ALL’INDIETRO
Sistema triangolare inferiore SOSTITUZIONE IN AVANTI
Metodo delle eliminazioni di GAUSS
Determinare L e U dopo algoritmo di Gauss
Polinomio interpolante dei punti
Polinomio interpolante la funzione
Esempio formula dei trapezi
Approssimare con i polinomi interpolanti di grado n = 5 le funzioni f1(x) = sin(x) nell’intervallo [0, π] e f2(x) = 1/(1 + x
2 ) nell’intervallo [−2π, 2π]. Utilizzare sia i nodi equispaziati che i nodi di Chebyshev-Lobatto
% definizione intervallo [a,b] nel quale dobbiamo studiare la funzione
a = 0;
b = pi;
z = linspace(a,b); %vettore che rappresenta l'intervallo [a,b]
f = @(x) sin(x); %funzione originale
fz = f(z); % fz rappresenta la funzione originale calcolata nell'intervallo [a,b]
n = 40; %grado del polinomio interpolante
x = linspace(a,b,n+1); %nodi equispaziati
%t = -cos((2*(1:n+1)-1)*pi/(2*(n+1)));
%x = (b-a)/2*t+(b+a)/2; % ---versione nodi Chebyshev traslati---
y = f(x); %funzione calcolata nei nodi
c = polyfit(x,y,n); %trova i coefficienti del polinomio interpolante
p = polyval(c,z); % calcola i valori che il polinomio interpolante assume nell'intervallo [a,b]
plot(z,p,'b',z,fz,'r',x,y,'ko','linewidth',3)
%plotta il grafico--> (z,p) = funzione approssimata, (z,fz) = f originale
%(x,y) = punti equispaziati
% -NB- ,aumentando il grado del polinomio aumenta l'errore (no con nodi di chebishev)
Rappresentare graficamente la spline cubica soddisfacente la condizione “not-a-knot” e interpolante la funzione f(x)
= 1/(1 + x 2 ) in 6 nodi equidistanti nell’intervallo [−5, 5]. Confrontare i grafici ottenuti con quelli dell’esercizio 1 e
commentare i risultati.
a = -5; %intervallo [a,]
b = 5;
z = linspace(a,b);
f = @(x) 1./(1+x.^2); %funzione origunale
fz = f(z); %funzione calcolata in [a,b]
n=5;
x = linspace(a,b,n); %nodi
y = f(x);
s = spline(x,y,z); %comando che restituisce una spline not a knot
plot(x,y,'ko',z,fz,'r',z,s,'b','linewidth',3)
err = norm(s-fz,inf) %errore = norma infinito di spline-funzione
% -NB- piu nodi ci sono --> minore errore
Metodo delle potenze
Metodo delle potenze inverse
QR