Argomento13 Equazioni Algebriche Lineari e Calcolo Numerico

Post on 02-Jan-2022

6 views 0 download

Transcript of 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

OUTLINE◦ EquazioniAlgebricheLineari◦ Risoluzione

◦ CalcoloNumerico◦ IntegrazioneNumerica◦ DerivazioneNumerica

◦ CalcoloSimbolico◦ Variabiliedespressionisimboliche◦ Derivazione,IntegrazioneeLimiti◦ MuPAD

CalcoloNumerico 02/89

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

EquazioniAlgebricheLineari(2)

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

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

CalcoloNumerico 04/89

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

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𝐴𝑥 = 𝑏

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

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

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

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.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 𝑥 𝑑𝑥=

>

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

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%.

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%.

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

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

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

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

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

CalcoloNumerico 37/89

𝐴 = 5 sin 𝑥 𝑑𝑥=

>

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 𝑥 𝑑𝑥=

>

IntegrazioneNumerica(7)Consideriamo un esempio più complesso:

CalcoloNumerico 39/89

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

>

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 𝑥(𝑥 𝑑𝑥(=�

>

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)

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)

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

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 − 𝑦'∆𝑥

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∆𝑥

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∆𝑥

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

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

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 𝑥�

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

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)

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

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.

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

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.

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

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.

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

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.

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.

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)

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

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

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

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 = −∞

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

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.

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.

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.

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

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

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

MuPAD (2)

CalcoloNumerico 73/89

MuPAD (2)

CalcoloNumerico 74/89

È possibile inserire un’espressionesimbolica.

MuPAD (2)

CalcoloNumerico 75/89

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

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;

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.

MuPAD (5)

CalcoloNumerico 78/89

Operazioni di calcolo simbolicome derivate, limiti, integrali etc.

MuPAD (5)

CalcoloNumerico 79/89

Approssimazioni, assegnazioni edichiarazioni di espressioni efunzioni.

MuPAD (5)

CalcoloNumerico 80/89

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

MuPAD (5)

CalcoloNumerico 81/89

Definizioni di matrici.

MuPAD (5)

CalcoloNumerico 82/89

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

MuPAD (5)

CalcoloNumerico 83/89

Principali operazioni dainvocare su funzioni edespressioni.

MuPAD (5)

CalcoloNumerico 84/89

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

MuPAD (5)

CalcoloNumerico 85/89

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

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

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:

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:

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:

MuPAD (6)

CalcoloNumerico 89/89

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

MuPAD (6)

CalcoloNumerico 90/89

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

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

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:

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:

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

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

• Capitolo11• Paragrafi1-5(cenni)

93/89CalcoloNumerico