Programma per la costruzione di una matrice Laplaciana
Function: [L] = laplacian(n)
Descrizione: Questo programma costruisce una matrice Laplaciana di dimensioni n x n.
L=zeros(n,n);
for i=1:n
L(i,i)=2;
end
for i=1:n-1
L(i+1,1)=-1;
L(i,i+1)=-1;
end
Programma per la costruzione della matrice di Hilbert
Function: H=matrice_hilbert(n)
Descrizione: Questo programma costruisce una matrice di Hilbert di dimensioni n x n.
H=zeros(n);
for i=1:n
for j=1:n
H(i,j)=1/(i+j-1);
end
end
Programma che risolve un sistema triangolare inferiore
Function: x=infsolve(L,b)
Descrizione: Questo programma risolve un sistema triangolare inferiore utilizzando la sostituzione in avanti.
n=size(L,1);
x=zeros(n,1);
for k=1:n
y=b(k);
for j=1:k-1
y=y-L(k,j)*x(j);
end
x(k)=y/L(k,k);
end
Programma per risolvere un sistema triangolare superiore
Function: x=supsolve(U,b)
Descrizione: Questo programma risolve un sistema triangolare superiore utilizzando la sostituzione all’indietro.
n=size(U,1);
x=zeros(n,1);
for k=n:-1:1
y=b(k);
for j=k+1:n
y=y-U(k,j)*x(j);
end
x(k)=y/U(k,k);
end
Risolvere un sistema lineare generico
Function: x=sys_solve(A,b)
Descrizione: Risolve un sistema lineare generico. Funziona solo quando lu(..) ritorna una fattorizzazione LU senza pivoting, cioè senza permutazione.
[L,U]=lu(A); y=infsolve(L,b); % risolve L*y=b x=supsolve(U,y); % risolve U*x=y
Programma che implementa la fattorizzazione LU di A
Function: [L,U]=fattlu(A)
Descrizione: Questo programma implementa la fattorizzazione LU di una matrice A.
n=size(A,1);
L=eye(n);
for i=1:n
L(i+1:n,i)=A(i+1:n,i)/A(i,i);
A(i+1:n,i:n)=A(i+1:n, i:n)-L(i+1:n,1)*A(i,i:n);
end
U=A;
Metodo delle potenze
Function: [x lambda]=powermethod(A,x0,k)
Descrizione: Esegue k passi del metodo delle potenze.
x=x0;
for i=1:k
x=A*x;
x=x/max(x); % per evitare possibili underflow o overflow
end
lambda=x'*A*x/(x'*x); % restituisce l'autovalore
Risoluzione del sistema lineare Ax=b con il metodo di Jacobi
Function: [x] = jacobisommatorie(A,b,x0,m)
Descrizione: Risoluzione del sistema lineare Ax=b utilizzando k passi del metodo di Jacobi (con le sommatorie).
n=size(A,1);
x_old=x0;
x_new=zeros(n,1);
for passo=1:m % passi dell'iterazione
for i=1:n
c=b(i);
for j=1:i-1
c=c-A(i,j)*x_old(j);
end
for j=i+1:n
c=c-A(i,j)*x_old(j);
end
x_new(i)=c/A(i,i);
end
x_old=x_new;
norm(b-A*x_new);
end
x=x_new;
Risoluzione del sistema lineare Ax=b con il metodo di Gauss-Seidel
Function: [x] = gaussseidel(A,b,x0,m)
Descrizione: Risoluzione del sistema lineare Ax=b utilizzando k passi del metodo di Gauss-Seidel (con sommatorie).
n=size(A,1);
x=x0;
for passo=1:m
for i=1:n
c=b(i);
for j=1:i-1
c=c-A(i,j)*x(j);
end
for j=i+1:n
c=c-A(i,j)*x(j);
end
x(i)=c/A(i,i);
norm(b-A*x);
end
end
Funzione per il processo di sostituzione all’indietro
Descrizione: Scrivere una funzione che, dati in input n e alpha, implementa un processo di sostituzione all’indietro e restituisce .
Nota: Il contenuto dell'ultimo programma non è completo e sembra mancare di una definizione della funzione o del calcolo richiesto. Si prega di fornire ulteriori dettagli per completare la funzione.
-
Laboratorio MATLAB - Prof. Gemignani
-
Funzioni matlab
-
Formulario Calcolo Numerico - Prof. Gemignani
-
Funzioni Python