Script Calcolo Numerico Con Matlab PDF

Title Script Calcolo Numerico Con Matlab
Course Calcolo Numerico
Institution Università degli Studi di Padova
Pages 11
File Size 72.7 KB
File Type PDF
Total Downloads 77
Total Views 149

Summary

Script Matlab principali argomenti di Calcolo Numerico per la facoltà di Ingegneria.
Argomenti: radici funzioni non lineari, quadratura numerica per il calcolo approssimato di un integrale definito, soluzione di sistemi lineari di equazioni, interpolazione e metodo dei minimi quadrati. ...


Description

Script Matlab per i principali argomenti studiati nel corso di Calcolo Numerico per la facoltà di Ingegneria. ! Ogni script è accompagnato da indicazioni sul procedimento seguito. ! INDICE: 1. Metodi per la soluzione di equazioni non lineari ! - Metodo di Newton-Raphson (Tangente Variabile)! - Metodo della Tangente Fissa! - Metodo della Regula Falsi (Secante Variabile)! - Metodo della Secante Fissa! 2. Metodi di quadratura per il calcolo approssimato di un integrale definito! - Metodo di Cavalier-Simpson composto! - Metodo dei Trapezi composto! 3.

4.

Metodi per la soluzione di sistemi di equazioni lineari !

- Metodo di Jacobi! - Metodo di Gaus-Seidel! - Metodo SOR!

Metodo di Interpolazione attraverso la formula dei minimi quadrati!

1. Metodi per la soluzione di equazioni non lineari Metodo di Newton-Raphson ( Tangente Variabile ) per la soluzione di equazioni non lineari! % 1) Completare la function con le variabili di input/ouput, in modo che sia! % adatta a qualunque funzione fun.! function [xvetnr,scvetnr,iternr, Mnr]=New_Rap(x0, toll, itmax, fun, der) ! %OUTPUT ( ciò che fornisce la function ): xvetnr (vettore soluzione x), scvetnr (vettore scarto), ! % iternr (numero di iterazioni per arrivare alla soluzione), Mnr (costante! % asintotica).! %IMPUT (i dati da fornire alla function nel solver affinchè lavori): x0 (prima soluzione ipotizzata), ! % toll (tolleranza), itmax (numero massimo iterazioni volute), fun! % (funzione), der (derivata della funzione).! % 2) preparare le array di ouput.! xvetnr=[];! scvetnr=[];! %3) inizializzare il ciclo ( tutte le variabili necessarie per lo! %svolgimento del ciclo e dipendenti dalle variabili di input ).! scarto=2*toll;! xk=x0;! iternr=0;! scartoold=0;! while scarto>toll && iternrtoll && itertftoll && iterrf < itmax % condizioni per svolgimento e interruzione ciclo! ! iterrf=iterrf+1; % incrementare le iterazioni! xkp1 = xk-(fun(xk)*((xk-xkm1)/(fun(xk)-fun(xkm1)))); %implementare il metodo della regula falsi! scarto=abs(xkp1-xk); %calcolare lo scarto ! Mrf= scarto/(scartoold).^1.618; %calcolare la costante asintotica! % 4) salvare le array di output! xvetrf(iterrf)=xkp1; ! scvetrf(iterrf)=scarto;! % 5) preparare le variabili per la nuova iterazione! xkm1 = xk ; ! xk = xkp1;! end! xvetrf=xvetrf(1:iterrf); ! scvetrf=scvetrf(1:iterrf);! !

Metodo della Secante Fissa per la soluzione di equazioni non lineari! % 1) Completare la function con le variabili di input/ouput, in modo che sia! % adatta a qualunque funzione fun.! function[scvetsf,xvetsf,itersf,Msf]=Sec_fis(x0,x1,fun,toll,itmax)! %OUTPUT ( ciò che fornisce la function ): xvetsf (vettore soluzione x), scvetsf (vettore scarto), ! % itersf(numero di iterazioni per arrivare alla soluzione), Msf (costante! % asintotica).! %IMPUT (i dati da fornire alla function nel solver affinchè lavori): x0, x1, ! % toll (tolleranza), itmax (numero massimo iterazioni volute), fun! % (funzione).! % 2) preparare le array di ouput.! xvetsf=zeros(itmax,1);! scvetsf=zeros(itmax,1);! %3) inizializzare il ciclo ( tutte le variabili necessarie per lo! %svolgimento del ciclo e dipendenti dalle variabili di input ).! scarto=2*toll;! xkm1=x0;! xk=x1;! fun1=fun(x1);! fun0=fun(x0);! itersf=0;! scartoold=0;! while scarto>toll && itersf < itmax % condizioni per svolgimento e interruzione ciclo! ! itersf=itersf+1; % incrementare le iterazioni! xkp1 = xk-(fun(xk)*((x1-x0)/(fun1-fun0))); %implementare il metodo della secante fissa! scarto=abs(xkp1-xk); %calcolare lo scarto ! Msf= scarto/(scartoold); %calcolare la costante asintotica! % 4) salvare le array di output! xvetsf(itersf)=xkp1;! scvetsf(itersf)=scarto;! % 5) preparare le variabili per la nuova iterazioni ! xkm1 = xk ; ! xk = xkp1;! scartoold=scarto;! end! xvetsf=xvetsf(1:itersf); ! scvetsf=scvetsf(1:itersf);! !

2. Metodi di quadratura per il calcolo approssimato di un integrale definito Metodo di Simpson per il calcolo approssimato di un integrale definito! % 1) Completare la function con le variabili di input/ouput affinchè sia! % utilizzabile per la soluzione di qualunque sistema di equazioni lineari.! function[x,w,Is]=simpson_composta(n,a,b,f)! %OUTPUT: x (nodi integrazione), w (pesi integrazione), Is (valore! %approssimato dell'integrale).! %INPUT: n (numero sottointervalli di ab), a-b (estremi intervallo di! %integrazione), f (funzione).! h=(b-a)/n; % 2) calcolare l'ampiezza di ogni sottointervallo! x=linspace(a,b,2*n+1)'; % 3) creare un insieme di punti equispaziati (distanza h/2) tra a e b! y=f(x);! w=ones(2*n+1,1); % 4) calcolare pesi. w è una matrice di tutti 1! w(3:2:2*n-1)=2; %ATTENZIONE: per la formula di Simpson, i nodi dispari valgono 2, quelli pari 4;! w(2:2:2*n)=4;! w=w*h/6;! Is=w'*y; %% 5) calcolare valore approssimato dell'integrale! end!

Metodo dei Trapezi per il calcolo approssimato di un integrale definito! % 1) Completare la function con le variabili di input/ouput affinchè sia! % utilizzabile per la soluzione di qualunque sistema di equazioni lineari.! function [x,w,Itrap]=trapezi_composta(n,a,b,f)! %OUTPUT: x (nodi integrazione), w (pesi integrazione), Itrap (valore! %approssimato dell'integrale).! %INPUT: n (numero sottointervalli di ab), a-b (estremi intervallo di! %integrazione), f (funzione).! h=(b-a)/n; %% 2) calcolare l'ampiezza di ogni sottointervallo! x=linspace(a,b,n+1)'; %% 3) creare un insieme di punti equispaziati (distanza h) tra a e b! y=f(x);! w=ones(n+1,n); %% 4) calcolare pesi. w è una matrice di tutti 1! w(1)=0.5; %% ATTENZIONE: per la formula dei trapezi, i nodi agli estremi valgono 0.5! w(n+1)=0.5;! % 5) valutare funzione nei nodi! Itrap=h*w'*fx; end !

%% 6) calcolare valore approssimato dell' integrale!

3. Metodi per la soluzione di sistemi di equazioni lineari Metodo di Jacobi per la soluzione di sistemi di equazioni lineari! % 1) Completare la function con le variabili di input/ouput affinchè sia! % utilizzabile per la soluzione di qualunque sistema di equazioni lineari.! function[xkp1ja,scartoja,scvetja,iterja]=jacobi(MatA,bvet,x0,toll,itmax,n)! %OUTPUT: xkp1ja (soluzione x), scartoja(lo scarto), scvetja (il vettore! %dello scartoja), iterja (il numero di iterazioni).! %INPUT:MatA (matrice quadrata A dei coefficienti delle equazioni), bvet (vettore! %soluzioni), x0, toll (tolleranza), itmax (numero iterazioni massime), n! %(dimensione matrice quadrata A)! % 2) inizializzare il ciclo ( tutte le variabili necessarie per lo! %svolgimento del ciclo e dipendenti dalle variabili di input ).! scartoja=2*toll;! iterja=0;! xk=x0;! scvetja=[]; % preparare array output per vettore scarto! matD=diag(diag(MatA)); %matD: matrice diagonale con diagonale la diagonale di MatA! matI=eye(n); % matI: matrice identità con la dimensione di MatA! vetQ=matD\bvet; %% ATTENZIONE: verificare che bvet abbia dimensione compatibile con matD).! while scartoja>toll && iterjatoll && itersor...


Similar Free PDFs