Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

93
Fondamenti di Informatica Calcolo Numerico Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 Calcolo Numerico

Transcript of Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

Page 1: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

FondamentidiInformaticaCalcolo Numerico

Prof. Chr i st ian Espos i toCorso d i Laurea in Ingegner ia Meccanica e Gest iona le (C lasse I )A .A . 2016/17

CalcoloNumerico

Page 2: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

OUTLINE◦ EquazioniAlgebricheLineari◦ Risoluzione

◦ CalcoloNumerico◦ IntegrazioneNumerica◦ DerivazioneNumerica

◦ CalcoloSimbolico◦ Variabiliedespressionisimboliche◦ Derivazione,IntegrazioneeLimiti◦ MuPAD

CalcoloNumerico 02/89

Page 3: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(1)

Le equazioni algebriche sono equazioni equivalenti ad unpolinomio uguagliato a zero. Il grado del polinomio è ilgrado dell’equazioni, e se si usano polinomi di primo gradosi hanno equazioni algebriche lineari:

5x – 2 y = 137x + 3y = 24

Si presentano in molte applicazioni dell’ingegneria, e possoessere risolte “a mano” con carta e penna, con specialicalcolatrici e con MATLAB.

MATLAB offre la maggiore potenza di calcolo e flessibilità.

CalcoloNumerico 03/89

Page 4: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(2)

I sistemi di equazioni algebriche lineari possono essereespressi con una notazione matriciale:

5x1 – 2x2 = 137x1 + 3x2 = 24

CalcoloNumerico 04/89

Page 5: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(2)

I sistemi di equazioni algebriche lineari possono essereespressi con una notazione matriciale:

5x1 – 2x2 = 137x1 + 3x2 = 24

CalcoloNumerico 05/89

5 −27 3

𝑥'𝑥( = 13

24A

matriceb

vettorex

vettore

Page 6: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(2)

I sistemi di equazioni algebriche lineari possono essereespressi con una notazione matriciale:

5x1 – 2x2 = 137x1 + 3x2 = 24

Un sistema di m equazioni in n incognite può essereespressa in forma matriciale, con una matrice deicoefficienti di dimensione m x n, un vettore delle incognite1 x n e un vettore dei termini noti 1 x n.

La soluzione di ax = b è pari a x = b/a se a ≠ 0. Anchenell’algebra matriciale si ha l’operazione di divisione, dausare per dividere opportunamente b per A.

CalcoloNumerico 06/89

5 −27 3

𝑥'𝑥( = 13

24𝐴𝑥 = 𝑏

Page 7: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(3)

L’inversa di una matrice è intesa come quella matrice, seesiste, tale che il prodotto matriciale tra le due restituiscela matrice identità:

A-1A=AA-1 =I.Applicando questa proprietà al sistema di equazioniabbiamo che:A-1Ax = A-1b

CalcoloNumerico 07/89

Page 8: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(3)

L’inversa di una matrice è intesa come quella matrice, seesiste, tale che il prodotto matriciale tra le due restituiscela matrice identità:

A-1A=AA-1 =I.Applicando questa proprietà al sistema di equazioniabbiamo che:A-1Ax = A-1b

A-1Ax = Ix =x

CalcoloNumerico 08/89

Page 9: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(3)

L’inversa di una matrice è intesa come quella matrice, seesiste, tale che il prodotto matriciale tra le due restituiscela matrice identità:

A-1A=AA-1 =I.Applicando questa proprietà al sistema di equazioniabbiamo che:A-1Ax = A-1b x = A-1b

A-1Ax = Ix =x

CalcoloNumerico 09/89

Page 10: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(3)

L’inversa di una matrice è intesa come quella matrice, seesiste, tale che il prodotto matriciale tra le due restituiscela matrice identità:

A-1A=AA-1 =I.Applicando questa proprietà al sistema di equazioniabbiamo che:A-1Ax = A-1b x = A-1b

A-1Ax = Ix =x

CalcoloNumerico 10/89

L’operazione di inversione di unamatrice è possibile solo se la matrice è◦ quadrata - se ha un numero uguale dirighe e colonne, detto ordine dellamatrice;

◦ non singolare – se il suo determinanteè diverso da zero.

Page 11: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(4)

Il determinante di una matrice quadrata A è un numeroche descrive alcune proprietà algebriche e geometrichedella matrice. Il determinante viene calcolato secondo variapprocci, assiomatici o costruttivi, e MATLAB mette adisposizione la funzione det() per il suo calcolo:

>> A = [5, -2; 7, 3];>> det(A)ans = 29.0000

Invece per il computo dell’inversa di una matrice èdisponibile la funzione inv():

>> inv(A)ans = 0.1034 0.0690 -0.2414 0.1724

CalcoloNumerico 11/89

Page 12: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(5)

Pertanto il seguente sistema di equazioni5x1 – 2x2 = 137x1 + 3x2 = 24

può essere risolto in MATLAB come segue:>> A = [5, -2; 7, 3];

>> b = [13; 24];>> x = inv(A)*bx = 3 1

CalcoloNumerico 12/89

Page 13: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(5)

Pertanto il seguente sistema di equazioni5x1 – 2x2 = 137x1 + 3x2 = 24

può essere risolto in MATLAB come segue:>> A = [5, -2; 7, 3];

>> b = [13; 24];>> x = inv(A)*bx = 3 1

MATLAB non ha restituito alcun messaggio di errore,quindi ha potuto computare l’inversa della matrice A. Ciò siverifica quando la soluzione del sistema è unica.

CalcoloNumerico 13/89

Page 14: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(6)

Il metodo della matrice inversa ci dice se non esiste unasoluzione unica, ovvero quando A è singolare. Il limite diquesto metodo è che◦ non ci dice se il sistema non ha soluzioni;◦ non ci dice se ha un numero infinito di soluzioni;◦ si applica solo a sistemi con matrice quadrata.

Per ottenere maggiori informazioni sul sistema ènecessario guardare al rango delle sue matricicaratterizzanti.Il rango di una matrice è l’ordine più alto rispetto al qualeesistono matrici quadrate estratte da A con determinantediverso da zero.

CalcoloNumerico 14/89

Page 15: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(7)

In MATLAB possiamo determinare il rango di una matricecon la funzione rank():

>> A = [5, -2; 7, 3];>> rank(A)ans = 2

Un sistema Ax = b ammette soluzioni solo se rank(A) =rank([A b]). Se con r intendiamo il rango di A e con n ilnumero di incognite e rank(A) = rank([A b]), si ha:◦ se r = n, allora il sistema ammette una sola soluzione;◦ se r < n, esistono infinite soluzioni.

In un sistema omogeneo (b = 0), rank(A) è sempre pari arank([A b]), quindi si ha sempre la soluzione banale x = 0.Se rank(A) < n allora si ha una soluzione non nulla.

CalcoloNumerico 15/89

Page 16: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(8)

Esempio:>> A

A = 5 -2 7 3>> bb = 13 24>> rank(A)ans = 2>> rank([A b])ans = 2>> size(A)

ans = 2 2

CalcoloNumerico 16/89

Page 17: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(9)

Quando un sistema è caratterizzato da un elevato numerodi incognite e di equazioni, il metodo dell’inversa non ècomputazionalmente ottimale.MATLAB dispone del metodo della divisione a sinistra, chesi basa sulle riduzioni delle variabili di Gauss. Per impiegarequesto metodo bisogna digitare x=A\b.

>> AA = 5 -2 7 3>> bb = 13 24>> x=A\bx = 3.0000 1.0000

CalcoloNumerico 17/89

Page 18: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(10)

Questo metodo si basa sul trasformare il sistema assegnatoin un sistema a matrice triangolare superiore, e quindi nelrisolvere il sistema equivalente così ottenuto con unabackward substitution. Si basa sull’assunto che sistemi diequazioni con la matrice A triangolare sono di immediatarisoluzione.

CalcoloNumerico 18/89

1 1 01 3 13 7 −1

−225

A B

/𝑥 + 𝑦 = −2

𝑥 + 3𝑦 + 𝑧 = 23𝑥 + 7𝑦 − 𝑧 = 5

Page 19: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(10)

Questo metodo si basa sul trasformare il sistema assegnatoin un sistema a matrice triangolare superiore, e quindi nelrisolvere il sistema equivalente così ottenuto con unabackward substitution. Si basa sull’assunto che sistemi diequazioni con la matrice A triangolare sono di immediatarisoluzione.

CalcoloNumerico 19/89

1 1 01 3 13 7 −1

−225

A B

1 1 00 2 13 7 −1

−245

Sottraggo alla secondariga la prima riga.

/𝑥 + 𝑦 = −2

𝑥 + 3𝑦 + 𝑧 = 23𝑥 + 7𝑦 − 𝑧 = 5

Page 20: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(10)

Questo metodo si basa sul trasformare il sistema assegnatoin un sistema a matrice triangolare superiore, e quindi nelrisolvere il sistema equivalente così ottenuto con unabackward substitution. Si basa sull’assunto che sistemi diequazioni con la matrice A triangolare sono di immediatarisoluzione.

CalcoloNumerico 20/89

1 1 01 3 13 7 −1

−225

A B

1 1 00 2 13 7 −1

−245

1 1 00 2 10 4 −1

−2411

Sottraggo la terza riga con laseconda moltiplicata per 3.

/𝑥 + 𝑦 = −2

𝑥 + 3𝑦 + 𝑧 = 23𝑥 + 7𝑦 − 𝑧 = 5

Page 21: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(10)

Questo metodo si basa sul trasformare il sistema assegnatoin un sistema a matrice triangolare superiore, e quindi nelrisolvere il sistema equivalente così ottenuto con unabackward substitution. Si basa sull’assunto che sistemi diequazioni con la matrice A triangolare sono di immediatarisoluzione.

CalcoloNumerico 21/89

1 1 01 3 13 7 −1

−225

A B

1 1 00 2 13 7 −1

−245

1 1 00 2 10 4 −1

−2411

1 1 00 1 1/20 4 −1

−2211

Divido la seconda riga perdue.

/𝑥 + 𝑦 = −2

𝑥 + 3𝑦 + 𝑧 = 23𝑥 + 7𝑦 − 𝑧 = 5

Page 22: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(10)

Questo metodo si basa sul trasformare il sistema assegnatoin un sistema a matrice triangolare superiore, e quindi nelrisolvere il sistema equivalente così ottenuto con unabackward substitution. Si basa sull’assunto che sistemi diequazioni con la matrice A triangolare sono di immediatarisoluzione.

CalcoloNumerico 22/89

/𝑥 + 𝑦 = −2

𝑥 + 3𝑦 + 𝑧 = 23𝑥 + 7𝑦 − 𝑧 = 5

1 1 01 3 13 7 −1

−225

A B

1 1 00 2 13 7 −1

−245

1 1 00 2 10 4 −1

−2411

1 1 00 1 1/20 4 −1

−2211

Sottraggo la terza riga con laseconda moltiplicata per 4.

1 1 00 1 1/20 0 −3

−223

Page 23: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(10)

Questo metodo si basa sul trasformare il sistema assegnatoin un sistema a matrice triangolare superiore, e quindi nelrisolvere il sistema equivalente così ottenuto con unabackward substitution. Si basa sull’assunto che sistemi diequazioni con la matrice A triangolare sono di immediatarisoluzione.

CalcoloNumerico 23/89

/𝑥 + 𝑦 = −2

𝑥 + 3𝑦 + 𝑧 = 23𝑥 + 7𝑦 − 𝑧 = 5

1 1 01 3 13 7 −1

−225

A B

1 1 00 2 13 7 −1

−245

1 1 00 2 10 4 −1

−2411

1 1 00 1 1/20 4 −1

−2211

Divido la terza riga per 3.

1 1 00 1 1/20 0 −3

−223

1 1 00 1 1/20 0 1

−22−1

Page 24: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

EquazioniAlgebricheLineari(10)

Questo metodo si basa sul trasformare il sistema assegnatoin un sistema a matrice triangolare superiore, e quindi nelrisolvere il sistema equivalente così ottenuto con unabackward substitution. Si basa sull’assunto che sistemi diequazioni con la matrice A triangolare sono di immediatarisoluzione.

CalcoloNumerico 24/89

/𝑥 + 𝑦 = −2𝑦 + 𝑧/2 = 2𝑧 = −1

1 1 01 3 13 7 −1

−225

A B

1 1 00 2 13 7 −1

−245

1 1 00 2 10 4 −1

−2411

1 1 00 1 1/20 4 −1

−2211

1 1 00 1 1/20 0 −3

−223

1 1 00 1 1/20 0 1

−22−1

/𝑥 = −9/2𝑦 = 5/2𝑧 = −1

Page 25: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(1)L’integrale di una funzione f(x) per a ≤ x ≤ b vieneinterpretato come l’area compresa fra la curva formatadalla funzione f(x), l’asse x e le due rette x = a e x =b.

Un integrale è detto definito sedispone di limiti di integrazione,mentre quando questi limiti sonoassenti lo si definisce indefinito.

MATLAB dispone di funzioni per il calcolo di integrali definitisecondo l’approccio trapezoidale e la regola di Simpson.

CalcoloNumerico 25/89

𝐴 = 5𝑓 𝑥 𝑑𝑥8

9

Page 26: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(2)L’approccio trapezoidale alla risoluzione numerica di unintegrale definito consiste nell’identificare una serie dipunti yi sulla curva di f(x)…

CalcoloNumerico 26/89

Page 27: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(2)L’approccio trapezoidale alla risoluzione numerica di unintegrale definito consiste nell’identificare una serie dipunti yi sulla curva di f(x), e di costruire una serie direttangoli di ampiezza a (pari per tutti o meno) ed altezzaf(yi). La somma delle aree di questi rettangoli fornisceun’approssimazione dell’area dell’integrale.

CalcoloNumerico 27/89

Page 28: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(2)L’approccio trapezoidale alla risoluzione numerica di unintegrale definito consiste nell’identificare una serie dipunti yi sulla curva di f(x), e di costruire una serie direttangoli di ampiezza a (pari per tutti o meno) ed altezzaf(yi). La somma delle aree di questi rettangoli fornisceun’approssimazione dell’area dell’integrale.

In alternativa è possibile ricorrere almetodo trapezoidale, dove vengonocostruiti dei trapezi tra puntiadiacenti della funzione f(x) e siapprossima l’integrale con la sommadelle aree dei trapezi.

CalcoloNumerico 28/89

Page 29: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(3)MATLAB mette a disposizione l’integrazione trapezoidalecon la funzione trapz(), che richiede in input gli array dellecoordinate x e y dei punti lungo la curva disegnata dallafunzione f(x) di cui si intende calcolare l’integrale definito.Dove il primo e l’ultimo punto appartengono agli intervallidi integrazione.

CalcoloNumerico 29/89

𝐴 = 5 sin 𝑥 𝑑𝑥=

>

Page 30: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(3)MATLAB mette a disposizione l’integrazione trapezoidalecon la funzione trapz(), che richiede in input gli array dellecoordinate x e y dei punti lungo la curva disegnata dallafunzione f(x) di cui si intende calcolare l’integrale definito.Dove il primo e l’ultimo punto appartengono agli intervallidi integrazione.

>> x = linspace(0, pi, 10);>> y = sin(x);>> A = trapz(x, y)A = 1.9797

CalcoloNumerico 30/89

𝐴 = 5 sin 𝑥 𝑑𝑥=

> Risoluzione inMATLAB

Page 31: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(3)MATLAB mette a disposizione l’integrazione trapezoidalecon la funzione trapz(), che richiede in input gli array dellecoordinate x e y dei punti lungo la curva disegnata dallafunzione f(x) di cui si intende calcolare l’integrale definito.Dove il primo e l’ultimo punto appartengono agli intervallidi integrazione.

>> x = linspace(0, pi, 10);>> y = sin(x);>> A = trapz(x, y)A = 1.9797

CalcoloNumerico 31/89

Risoluzione inMATLAB

𝐴 = 5 sin 𝑥 𝑑𝑥=

>

La risoluzione esatta di questointegrale è A = 2, MATLAB commetteun errore pari a 0,0203, ovvero 1%.

Page 32: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(3)MATLAB mette a disposizione l’integrazione trapezoidalecon la funzione trapz(), che richiede in input gli array dellecoordinate x e y dei punti lungo la curva disegnata dallafunzione f(x) di cui si intende calcolare l’integrale definito.Dove il primo e l’ultimo punto appartengono agli intervallidi integrazione.

>> x = linspace(0, pi, 100);>> y = sin(x);>> A = trapz(x, y)A = 1.9998

CalcoloNumerico 32/89

Risoluzione inMATLAB

𝐴 = 5 sin 𝑥 𝑑𝑥=

>

Con un numero maggiori di punticommettiamo un errore pari a0,0002, ovvero 0,01%.

Page 33: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(4)Il difetto dell’uso della funzione trapz() è che richiede unaserie di punti della funzione di cui bisogna computarel’integrale definito. Un approccio alternativo è offerto dallaquadratura, che usa la regola di Cavalieri-Simpson perapprossimare l'integrale della funzione f(x) con quello dellasuccessione di funzioni quadratiche tra punti adiacenti.

CalcoloNumerico 33/89

Page 34: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(4)Il difetto dell’uso della funzione trapz() è che richiede unaserie di punti della funzione di cui bisogna computarel’integrale definito. Un approccio alternativo è offerto dallaquadratura, che usa la regola di Cavalieri-Simpson perapprossimare l'integrale della funzione f(x) con quello dellasuccessione di funzioni quadratiche tra punti adiacenti.

CalcoloNumerico 34/89

Page 35: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(4)Il difetto dell’uso della funzione trapz() è che richiede unaserie di punti della funzione di cui bisogna computarel’integrale definito. Un approccio alternativo è offerto dallaquadratura, che usa la regola di Cavalieri-Simpson perapprossimare l'integrale della funzione f(x) con quello dellasuccessione di funzioni quadratiche tra punti adiacenti.

MATLAB mette a disposizione questometodo con la funzione quad() cherichiede in ingresso la funzione daintegrare e i due estremi diintegrazione. La funzione è passataper mezzo di un handle di funzione.

CalcoloNumerico 35/89

Page 36: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(5)Una variabile MATLAB può anche contenere un valore ditipo funzione, ed in questo caso prende il nome di handle.L’handle può essere applicato a opportuni argomenti perottenere una invocazione della funzione.Esempio di un handle di una funzione esistente:>> seno = @sin>> seno(pi/2)ans = 1

Esempio di un handle di una funzione definita ex-novo:>> sq=@(x)x^2>> sq(8)ans = 64

CalcoloNumerico 36/89

Page 37: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(6)Ipotizziamo di voler calcolare l’integrale dell’esempioprecedente:

CalcoloNumerico 37/89

𝐴 = 5 sin 𝑥 𝑑𝑥=

>

Page 38: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(6)Ipotizziamo di voler calcolare l’integrale dell’esempioprecedente:

>> seno = @sin;>> A = quad(seno, 0, pi)A = 2.0000

In alternativa, è possibile usare il nome della funzione,passandola come stringa:>> A = quad('sin', 0, pi)A = 2.0000

CalcoloNumerico 38/89

Risoluzione conlaquadratura

𝐴 = 5 sin 𝑥 𝑑𝑥=

>

Page 39: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(7)Consideriamo un esempio più complesso:

CalcoloNumerico 39/89

𝐴 = 5 cos 𝑥(𝑥 𝑑𝑥(=�

>

Page 40: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

IntegrazioneNumerica(7)Consideriamo un esempio più complesso:

>> funzione = @(x)cos(x.^2);>> A = quad(funzione, 0, sqrt(2*pi))

A = 0.6119

In alternativa, posso compattare le due righe in un solocomando:>> A = quad(@(x)cos(x.^2), 0, sqrt(2*pi))A = 0.6119

CalcoloNumerico 40/89

Risoluzione conlaquadratura

𝐴 = 5 cos 𝑥(𝑥 𝑑𝑥(=�

>

Page 41: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(1)La derivata di una funzione in un determinato punto èinterpretabile graficamente come la pendenza dellatangente al grafico della funzione in quel punto. Piùformalmente risulta pari al limite del rapportoincrementale della funzione nel punto al tenderedell’incremento a zero:

Come è possibile determinare laderivata di una funzione f(x) in undeterminato punto xD?

CalcoloNumerico 41/89

𝑑𝑦𝑑𝑥 = lim

∆E→>

Δ𝑦Δ𝑥

y=f(x)

Page 42: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(2)Consideriamo il grafo della funzione nel piano cartesiano.

La derivata di f(x) nel punto xD èdata dalla pendenza della rettache passa per il punto (xD, yD),dove yD è l’uscita della funzionecon input pari a xD.

CalcoloNumerico 42/89

y

x xD

yD

y=f(x)

Page 43: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(2)Consideriamo il grafo della funzione nel piano cartesiano.

La derivata di f(x) nel punto xD èdata dalla pendenza della rettache passa per il punto (xD, yD),dove yD è l’uscita della funzionecon input pari a xD.

Non disponendo di un secondopunto su questa retta, nonpossiamo stimarne la pendenza.

Tale problema può essere ovviato usando dei punti vicini,fissando una distanza dal punto xD pari a Δx.

CalcoloNumerico 43/89

y

y=f(x)

x xD

yD

Page 44: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(3)Metodo delle differenze all’indie-tro: si consideri la retta tra i punti(x1, y1) e (xD, yD), la cui pendenzaè data da:

CalcoloNumerico 44/89

y

y=f(x)

x xD

yD

x1 x2

y1

y2

Δx Δx

𝑚I =𝑦J − 𝑦'∆𝑥

Page 45: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(3)Metodo delle differenze all’indie-tro: si consideri la retta tra i punti(x1, y1) e (xD, yD), la cui pendenzaè data da:

Metodo delle differenze inavanti: si usi la retta tra (xD, yD) e(x2, y2), la cui pendenza è:

CalcoloNumerico 45/89

y

y=f(x)

x xD

yD

x1 x2

y1

y2

Δx Δx

𝑚I =𝑦J − 𝑦'∆𝑥

𝑚K =𝑦( − 𝑦J∆𝑥

Page 46: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(3)Metodo delle differenze all’indie-tro: si consideri la retta tra i punti(x1, y1) e (xD, yD), la cui pendenzaè data da:

Metodo delle differenze inavanti: si usi la retta tra (xD, yD) e(x2, y2), la cui pendenza è:

Metodo delle differenze centrali: si assuma la retta tra (x1,y1) e (x2, y2), la cui pendenza è:

CalcoloNumerico 46/89

y

y=f(x)

x xD

yD

x1 x2

y1

y2

Δx Δx

𝑚I =𝑦J − 𝑦'∆𝑥

𝑚K =𝑦( − 𝑦J∆𝑥

𝑚L =𝑚I +𝑚K

2 =𝑦( − 𝑦'2∆𝑥

Page 47: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(4)MATLAB mette a disposizione la funzione diff() per la stimadella derivata di una funzione. Tale funzione prende iningresso un vettore di punti e restituisce la serie delledifferenze tra punti adiacenti dell’input.

x = [x(1), x(2), …, x(n)]

CalcoloNumerico 47/89

Page 48: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(4)MATLAB mette a disposizione la funzione diff() per la stimadella derivata di una funzione. Tale funzione prende iningresso un vettore di punti e restituisce la serie delledifferenze tra punti adiacenti dell’input.

x = [x(1), x(2), …, x(n)]diff(x) = [x(2) – x(1), x(3) – x(2), … x(n) – x(n-1)]

CalcoloNumerico 48/89

Page 49: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(4)MATLAB mette a disposizione la funzione diff() per la stimadella derivata di una funzione. Tale funzione prende iningresso un vettore di punti e restituisce la serie delledifferenze tra punti adiacenti dell’input.

x = [x(1), x(2), …, x(n)]diff(x) = [x(2) – x(1), x(3) – x(2), … x(n) – x(n-1)]

Utilizziamo diff() per la stima della derivata dinel punto x = 4.La risoluzione esatta ci dice chePertanto f’(4) = 0,25.

CalcoloNumerico 49/89

𝑓 𝑥 = 𝑥�

𝑓N(𝑥) =12 𝑥�

Page 50: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(5)In MATLAB la derivata di una funzione può essere stimatacon diff(y)/diff(x), dove x e y sono le coordinate di n puntidella funzione in esame per i tre metodi:

>> x1 = 2:.1:4; x2 = 4:.1:6; x3 = [x1 x2];>> y1 = sqrt(x1); y2 = sqrt(x2); y3 = [y1 y2];

CalcoloNumerico 50/89

Page 51: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(5)In MATLAB la derivata di una funzione può essere stimatacon diff(y)/diff(x), dove x e y sono le coordinate di n puntidella funzione in esame per i tre metodi:

>> x1 = 2:.1:4; x2 = 4:.1:6; x3 = [x1 x2];>> y1 = sqrt(x1); y2 = sqrt(x2); y3 = [y1 y2];

CalcoloNumerico 51/89

Definisco i tre intervalli dipunti (x,y)

Page 52: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(5)In MATLAB la derivata di una funzione può essere stimatacon diff(y)/diff(x), dove x e y sono le coordinate di n puntidella funzione in esame per i tre metodi:

>> x1 = 2:.1:4; x2 = 4:.1:6; x3 = [x1 x2];>> y1 = sqrt(x1); y2 = sqrt(x2); y3 = [y1 y2];

>> diff1 = diff(y1)/diff(x1)diff1 = 0.2929

CalcoloNumerico 52/89

Page 53: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(5)In MATLAB la derivata di una funzione può essere stimatacon diff(y)/diff(x), dove x e y sono le coordinate di n puntidella funzione in esame per i tre metodi:

>> x1 = 2:.1:4; x2 = 4:.1:6; x3 = [x1 x2];>> y1 = sqrt(x1); y2 = sqrt(x2); y3 = [y1 y2];

>> diff1 = diff(y1)/diff(x1)diff1 = 0.2929

CalcoloNumerico 53/89

Metodo delle differenzeall’indietro – Errore pari a 0.0429.

Page 54: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(5)In MATLAB la derivata di una funzione può essere stimatacon diff(y)/diff(x), dove x e y sono le coordinate di n puntidella funzione in esame per i tre metodi:

>> x1 = 2:.1:4; x2 = 4:.1:6; x3 = [x1 x2];>> y1 = sqrt(x1); y2 = sqrt(x2); y3 = [y1 y2];

>> diff1 = diff(y1)/diff(x1)diff1 = 0.2929>> diff2 = diff(y2)/diff(x2)diff2 = 0.2247

CalcoloNumerico 54/89

Page 55: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(5)In MATLAB la derivata di una funzione può essere stimatacon diff(y)/diff(x), dove x e y sono le coordinate di n puntidella funzione in esame per i tre metodi:

>> x1 = 2:.1:4; x2 = 4:.1:6; x3 = [x1 x2];>> y1 = sqrt(x1); y2 = sqrt(x2); y3 = [y1 y2];

>> diff1 = diff(y1)/diff(x1)diff1 = 0.2929>> diff2 = diff(y2)/diff(x2)diff2 = 0.2247

CalcoloNumerico 55/89

Metodo delle differenze in avanti– Errore pari a 0.0253.

Page 56: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(5)In MATLAB la derivata di una funzione può essere stimatacon diff(y)/diff(x), dove x e y sono le coordinate di n puntidella funzione in esame per i tre metodi:

>> x1 = 2:.1:4; x2 = 4:.1:6; x3 = [x1 x2];>> y1 = sqrt(x1); y2 = sqrt(x2); y3 = [y1 y2];

>> diff1 = diff(y1)/diff(x1)diff1 = 0.2929>> diff2 = diff(y2)/diff(x2)diff2 = 0.2247>> diff3 = diff(y3)/diff(x3)diff3 = 0.2588

CalcoloNumerico 56/89

Page 57: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

DerivazioneNumerica(5)In MATLAB la derivata di una funzione può essere stimatacon diff(y)/diff(x), dove x e y sono le coordinate di n puntidella funzione in esame per i tre metodi:

>> x1 = 2:.1:4; x2 = 4:.1:6; x3 = [x1 x2];>> y1 = sqrt(x1); y2 = sqrt(x2); y3 = [y1 y2];

>> diff1 = diff(y1)/diff(x1)diff1 = 0.2929>> diff2 = diff(y2)/diff(x2)diff2 = 0.2247>> diff3 = diff(y3)/(2*diff(x3))diff3 = 0.2588

CalcoloNumerico 57/89

Metodo delle differenze centrali –Errore commesso pari a 0.0088.

Page 58: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

CalcoloSimbolico(1)Per calcolo simbolico si intende la manipolazione divariabili e la risoluzione di espressioni ed equazioni in cuisono trattate variabili di tipo simbolico, senza considerarneun ipotetico valore numero.Grazie al Symbolic Math Toolbox, Matlab ci fornisce un setdi istruzioni per il calcolo simbolico, che si basa sull’uso divariabili con sym e syms, che verranno impiegate per ladefinizione di un’ espressione simbolica.

>> syms x y z

oppure>> x = sym(’x’);

CalcoloNumerico 58/89

Page 59: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

CalcoloSimbolico(1)Per calcolo simbolico si intende la manipolazione divariabili e la risoluzione di espressioni ed equazioni in cuisono trattate variabili di tipo simbolico, senza considerarneun ipotetico valore numero.Grazie al Symbolic Math Toolbox, Matlab ci fornisce un setdi istruzioni per il calcolo simbolico, che si basa sull’uso divariabili con sym e syms, che verranno impiegate per ladefinizione di un’ espressione simbolica.

>> syms x y z

oppure>> x = sym(’x’);

CalcoloNumerico 59/89

Crea nel workspace le variabilisimboliche x, y e z.

Page 60: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

CalcoloSimbolico(1)Per calcolo simbolico si intende la manipolazione divariabili e la risoluzione di espressioni ed equazioni in cuisono trattate variabili di tipo simbolico, senza considerarneun ipotetico valore numero.Grazie al Symbolic Math Toolbox, Matlab ci fornisce un setdi istruzioni per il calcolo simbolico, che si basa sull’uso divariabili con sym e syms, che verranno impiegate per ladefinizione di un’ espressione simbolica.

>> syms x y z

oppure>> x = sym(’x’);

CalcoloNumerico 60/89

Metodo alternativo per creareuna variabile simbolica x.

Page 61: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

CalcoloSimbolico(2)Una volta definite una serie di variabili simboliche,possiamo definire una espressione in termini funzionali.Ipotizziamo di voler rappresentare la seguente funzione:

>> syms x y

>> f = 1/exp(sin(xˆ2+yˆ2))

A questo punto posiamo effettuare le tipiche operazioni dicalcolo simboli, come derivate, integrali e limiti.

CalcoloNumerico 61/89

𝑓(𝑥, 𝑦) =1

𝑒STU(EVWXV)

Page 62: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

CalcoloSimbolico(3)◦ Per la derivazione si usa la funzione diff() passando

come ingresso la funzione simbolica, la variabilesimbolica di derivazione e l’ordine di derivazione.

>> syms x y

>> f = 1/exp(sin(x^2+y^2))

f = exp(-sin(x^2 + y^2))

>> df = diff(f, x, 1)

df = -2*x*exp(-sin(x^2 + y^2))*cos(x^2 + y^2)

CalcoloNumerico 62/89

Page 63: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

CalcoloSimbolico(4)◦ Per il calcolo dell’integrale indefinito della funzione

simbolica f(x,y) si impiega la funzione MATLAB int cherichiede come input la funzione da integrare e lavariabile di integrazione.

>> syms a b

>> s = sin(a * b);

>> int(s, b)

ans = -cos(a*b)/a

◦ Èpossibilefornireanchedegliestremidiintegrazione.>> int(s, b, 0 ,2 * pi/a)

ans = 0

CalcoloNumerico 63/89

Page 64: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

CalcoloSimbolico(5)◦ Per il calcolo del limite di una funzione simbolica è

possibile usare la funzione MATLAB limit(), che richiedein input la funzione, la variabile di cui calcolare il limite,il valore a cui il limite deve tendere e il verso del limite,se è da destra si passa ’right’, mentre se è da sinistra sipassa ‘left’.

CalcoloNumerico 64/89

Page 65: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

CalcoloSimbolico(6)

>> syms x

>> f = (1- 2*x)/(9 - x^2);

>> limit(f, x, 3, 'left')

ans = -Inf

CalcoloNumerico 65/89

limE→YZ

1 − 2𝑥9 − 𝑥(

limE→YZ

1 − 2𝑥9 − 𝑥( =

−50W = −∞

Page 66: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

CalcoloSimbolico(7)

>> syms x

>> f = (7 - x)/(x - 2);

>> limit(f, x, 2, 'right')

ans = Inf

CalcoloNumerico 66/89

limE→(\

7 − 𝑥𝑥 − 2 =

50W = +∞

limE→(\

7 − 𝑥𝑥 − 2

Page 67: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

ValutareEspressioniSimbolicheIn MATLAB è possibile valutare espressioni simboliche conla funzione subs, nel modo seguente:>> syms x>> y = x^2y = x^2

CalcoloNumerico 67/89

Definiamo un’espressione simbo-lica e un valore da usare per lasua valorizzazione.

Page 68: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

ValutareEspressioniSimbolicheIn MATLAB è possibile valutare espressioni simboliche conla funzione subs, nel modo seguente:>> syms x>> y = x^2y = x^2>> y(2)Index exceeds matrix dimensions.Error insym/subsref (line 805) R_tilde= builtin('subsref',L_tilde,Idx);

CalcoloNumerico 68/89

Se proviamo a valorizzare l’espressionecon la sintassi di una chiamatafunzionale otteniamo un errore.

Page 69: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

ValutareEspressioniSimbolicheIn MATLAB è possibile valutare espressioni simboliche conla funzione subs, nel modo seguente:>> syms x>> y = x^2y = x^2>> y(2)Index exceeds matrix dimensions.Error insym/subsref (line 805) R_tilde= builtin('subsref',L_tilde,Idx);>> subs(y, 2)ans = 4

CalcoloNumerico 69/89

La soluzione corretta è quella di impiegare subs() dopoaver valorizzato la variabile simbolica. Tale funzionesostituisce le variabili simboliche con i valori numericipassati come secondo input. Se tale sostituzione nonproduce uno scalare, ma un’espressione, utilizzarevpa() con input l’espressione da risolvere.

Page 70: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

ValutareEspressioniSimbolicheIn MATLAB è possibile valutare espressioni simboliche conla funzione subs, nel modo seguente:>> y = sqrt(1-x) y = (1 - x)^(1/2) >> z = subs(y, 4) z = 3^(1/2)*1i >> vpa(z, 3) ans = 1.73i

CalcoloNumerico 70/89

Page 71: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (1)MuPAD è un package di MATLAB che offre un riccoventaglio di funzionalità per il calcolo simbolico, ed èincluso nel toolbox Symbolic Math. Questo pacchetto offreun’interfaccia con un editore per l’inserimento diespressioni simboli e l’esecuzione di operazioni per ilcalcolo simbolico.

Per poter invocare questo editor basta digitare mupad sulprompt dei comandi.

CalcoloNumerico 71/89

Page 72: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (1)MuPAD è un package di MATLAB che offre un riccoventaglio di funzionalità per il calcolo simbolico, ed èincluso nel toolbox Symbolic Math. Questo pacchetto offreun’interfaccia con un editore per l’inserimento diespressioni simboli e l’esecuzione di operazioni per ilcalcolo simbolico.

Per poter invocare questo editor basta digitare mupad sulprompt dei comandi.

CalcoloNumerico 72/89

Page 73: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (2)

CalcoloNumerico 73/89

Page 74: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (2)

CalcoloNumerico 74/89

È possibile inserire un’espressionesimbolica.

Page 75: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (2)

CalcoloNumerico 75/89

È possibile rappresentare grafica-mente l’espressione per un datoinsieme di input.

Page 76: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (3)

CalcoloNumerico 76/89

L’editor consente di inserire comandi per il calcolodi espressioni numeriche. Per il calcolo simbolicosi ha una differenza tra espressioni e funzioni:◦ per assegnare ad un identificativo un’espressione

bisogna impiegare l’operatore ‘:=‘, mentre pereliminarlo si usa la funzione delete() passando ininput l’identificativo da cancellare;

◦ l’espressione è diversa da una funzione perchénon è possibile la sua valutazione per un datovalore delle sue variabili simboliche;

Page 77: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (4)◦ è possibile definire una funzione nel modo

seguente:<nome> := <incognita> -> <espressione>

◦ è possibile valutare una funzione per un datovalore delle sue incognite, oppure combinare piùfunzioni ed espressioni.

CalcoloNumerico 77/89

MuPAD dispone di vari comandi a supporto dell’analisi diespressioni e funzioni. Tali comandi possono essereinvocati da riga di comando, oppure possono essere sceltiper mezzo dell’interfaccia.

Page 78: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 78/89

Operazioni di calcolo simbolicome derivate, limiti, integrali etc.

Page 79: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 79/89

Approssimazioni, assegnazioni edichiarazioni di espressioni efunzioni.

Page 80: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 80/89

Principali funzioni ed operazionibuilt-in di MATLAB, simboli edunità di misura fisiche.

Page 81: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 81/89

Definizioni di matrici.

Page 82: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 82/89

Funzioni per i diagrammi 2De 3D di espressioni e funzioni.

Page 83: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 83/89

Principali operazioni dainvocare su funzioni edespressioni.

Page 84: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 84/89

◦ La funzione expand() espande una espressione putilizzando una serie di regole:

Page 85: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 85/89

◦ La funzione expand() espande una espressione putilizzando una serie di regole;

◦ La funzione factor() fattorizza un’espressione datain input:

Page 86: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 86/89

◦ La funzione expand() espande una espressione putilizzando una serie di regole;

◦ La funzione factor() fattorizza un’espressione datain input;

◦ La funzione normal() trova un denominatorecomune per le espressioni razionali:

Page 87: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 87/89

◦ La funzione expand() espande una espressione putilizzando una serie di regole;

◦ La funzione factor() fattorizza un’espressione datain input;

◦ La funzione normal() trova un denominatorecomune per le espressioni razionali;

◦ La funzione simplify() serve a semplificareun’espressione:

Page 88: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (5)

CalcoloNumerico 88/89

◦ La funzione expand() espande una espressione putilizzando una serie di regole;

◦ La funzione factor() fattorizza un’espressione datain input;

◦ La funzione normal() trova un denominatorecomune per le espressioni razionali;

◦ La funzione simplify() serve a semplificareun’espressione;

◦ La funzione solve() serve a risolvere un’equazionesimbolica:

Page 89: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (6)

CalcoloNumerico 89/89

◦ La funzione diff() calcola la derivata simbolica diuna espressione:

Page 90: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (6)

CalcoloNumerico 90/89

◦ La funzione diff() calcola la derivata simbolica diuna espressione;

◦ La funzione int() computa l’integrale diun’espressione simbolica:

Page 91: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (6)

CalcoloNumerico 91/89

◦ La funzione diff() calcola la derivata simbolica diuna espressione;

◦ La funzione int() computa l’integrale diun’espressione simbolica;

◦ La funzione sum() determina la sommatoria diuna data espressione in un determinatointervallo:

Page 92: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

MuPAD (6)

CalcoloNumerico 92/89

◦ La funzione diff() calcola la derivata simbolica diuna espressione;

◦ La funzione int() computa l’integrale diun’espressione simbolica;

◦ La funzione sum() determina la sommatoria diuna data espressione in un determinatointervallo;

◦ La funzione limit() serve a determinare il limite diuna espressione simbolica:

Page 93: Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

Riferimenti• Capitolo8• Paragrafi1[Metodimatricialiperrisolvereleequazionilineari],e2[Ilmetododelladivisioneasinistra].

• Capitolo9• Paragrafi1[Integrazionenumerica],e2[Derivazionenumerica].

• Capitolo11• Paragrafi1-5(cenni)

93/89CalcoloNumerico