Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
x = [1 4 5 3 -4 5]
y = [-1; 0; -5; 13; 4; -5]
length(x)
length(y)
z=x+y
z=x+y
a=x*y
a=y*x
x=[x 10]
n=length(x)
x=x(n:-1:1)
>> [a k]=min(x)
>> sort(x)
In questo caso possiamo osservare come le funzioni predefinite max e min
possano dare due tipi di output diversi, cio`e possono fornire solo il valore
del massimo (o del minimo) del vettore ma anche lindice della componente
massima (o minima).
Vediamo ora alcune istruzioni che riguardano le matrici.
>>
; 0 7 6
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
A = [1 4 5 3; 0 1 -4 5; 3 4 5 6; -1 0 1 9 ...
-9]
A(1:3,4)
A(2,2:4)
A(:,4)
A(5,:)
A(1:3,2:4)
A([1 5],:)=A([5 1],:)
[m,n]=size(A)
x=max(A)
x=max(max(A))
B=cos(A)
fplot(funz,[0 2*pi]);
hold on
g=inline(2+sin(x).*cos(x));
y1=feval(g,x);
plot(x,y1);
Si pu`o osservare che lopzione hold on rimane attiva per tutta la sessione
di lavoro. Questo vuol dire che tutti i grafici che saranno tracciati successivamente si andranno a sovrapporre sulla stessa figura. Per disattivare tale
opzione `e sufficiente listruzione
>> hold off
Esercitazione 2
Argomento: Sistemi triangolari
Scopo: Implementare i metodi di sostituzione in avanti e allindietro per
sistemi triangolari inferiori e superiori.
function x=indietro(A,b)
%
% Sintassi x=indietro(A,b)
%
% Risolve un sistema triangolare superiore utilizzando
% il metodo di sostituzione allindietro
%
% Parametri di input:
% A = Matrice triangolare superiore
% b = Vettore colonna
%
% Parametri di output:
% x = Vettore soluzione
%
n=length(b);
x=zeros(n,1);
if abs(A(n,n))<eps
error(La matrice A e singolare );
end
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
x(k)=b(k);
for i=k+1:n
x(k)=x(k)-A(k,i)*x(i);
end
if abs(A(k,k))<eps
error(La matrice A e singolare );
else
x(k)=x(k)/A(k,k);
end
end
if abs(A(k,k))<eps
error(La matrice A e singolare );
else
x(k)=x(k)/A(k,k);
end
end
Esempi di applicazione: Per verificare il funzionamento dellalgoritmo
consideriamo un sistema lineare avente una matrice dei coefficienti triangolare
inferiore.
>> A=tril(rand(9));
>> b=ones(9,1);
>> x=avanti(A,b)
Esercitazione 3
Argomento: Il metodo di eliminazione di Gauss
Scopo: Risoluzione di un sistema lineare Ax = b utilizzando il metodo di
eliminazione di Gauss senza strategie di pivoting.
function x=gauss(A,b);
%
% Sintassi x=gauss(A,b)
%
% Risolve un sistema lineare utilizzando il
% metodo di eliminazione di Gauss
%
% Parametri di input:
% A = Matrice dei coefficienti
% b = Vettore dei termini noti
%
% Parametri di output:
% x = Vettore soluzione
%
[m, n]=size(A);
if m=n
error(Metodo non applicabile);
end
if length(b)=n
error(Metodo non applicabile);
end
for k=1:n
if abs(A(k,k))<eps
error(Elemento pivotale nullo );
end
for i=k+1:n
A(i,k)=A(i,k)/A(k,k);
for j=k+1:n
A(i,j)=A(i,j)-A(k,j)*A(i,k);
end
b(i)=b(i)-b(k)*A(i,k);
end
8
end
x=indietro(A,b);
1
i+j1
i, j = 1, . . . , n.
H=
1
1/2
1/3
1/4
1/2
1/3
1/4
1/5
1/3
1/4
1/5
1/6
1/4
1/5
1/6
1/7
>>
>>
>>
>>
>>
>>
>>
>>
clear
format long e
n=15;
A=hilb(n);
x=ones(n,1);
b=A*x;
y=gauss(A,b)
norm(x-y,inf)
10
Esercitazione 4
Argomento: Il metodo di eliminazione di Gauss con pivot parziale
Scopo: Risoluzione di un sistema lineare utilizzando il metodo di eliminazione
di Gauss con strategia di pivoting parziale.
function x=gausspiv(A,b);
%
% Sintassi x=gausspiv(A,b)
%
% Risolve un sistema lineare utilizzando il metodo
% di eliminazione di Gauss con pivoting parziale
%
% Parametri di input:
% A = Matrice dei coefficienti
% b = Vettore dei termini noti
%
% Parametri di output:
% x = Vettore soluzione
%
[m, n]=size(A);
if m=n
error(Metodo non applicabile);
end
if length(b)=n
error(Metodo non applicabile);
end
for k=1:n
[pivot indice]=max(abs(A(k:n,k)));
riga=indice+k-1;
if riga=k
A([riga k],:)=A([k riga],:);
b([riga k])=b([k riga]);
end
if abs(A(k,k))<eps
error(Elemento pivotale nullo );
end
for i=k+1:n
11
A(i,k)=A(i,k)/A(k,k);
for j=k+1:n
A(i,j)=A(i,j)-A(k,j)*A(i,k);
end
b(i)=b(i)-b(k)*A(i,k);
end
end
x=indietro(A,b);
12