Laboratorio di Matematica Computazionale

Laboratorio di Matematica Computazionale
A.A. 2007-2008
Lab. 7
Toolbox Simbolico
Introduzione
Il Toolbox Simbolico di MATLAB definisce un nuovo data type: gli
oggetti simbolici, per rappresentare variabili simboliche, funzioni,
espressioni, matrici etc., con le quali è possibile svolgere
semplificazioni algebriche, operazioni di calcolo differenziale,
integrale, etc.
Gli esempi seguenti illustrano la differenza tra una variabile
MATLAB standard e i
corrispondenti oggetti simbolici:
>> a=sqrt(2)
a=
1.4142
Utilizzando il comando sym si converte il 2 in un oggetto simbolico:
>>a=sqrt(sym(2))
a=
2^(1/2)
MATLAB mostra la notazione simbolica relativa all'operazione
estrazione di radice quadrata, senza fornirne l'effettivo valore
numerico, Per ottenere il valore numerico di un oggetto simbolico si
ricorre al comando double:
>> double(a)
ans =
1.4142
Per generare una frazione come oggetto simbolico si pone
>> a=sym(3)/sym(4)
a=
3/4
la somma di due frazioni definite come oggetti simbolici, ricorre alle
note regole di calcolo aritmetico che fa ricorso alla determinazione del
minimo comun denominatore, quindi posto
>> b=sym(2)/sym(5)
b=
2/5
>> a+b
ans =
23/20
si confronti il risultato con quello corrispondente al comando
>> 3/4+2/5
1
5 2
● Si scriva la seguente espressione simbolica  3  6   3


2
● Si definisca la quantità 2 come variabile simbolica e la si trasformi
nella sua corrispondente quantità numerica
● Si definiscano le quantità
2
2
e
3 2
come variabili simboliche, se ne
esegua
la somma e se ne valuti la corrispondente quantità numerica
● Si calcoli ricorrendo al calcolo simbolico, la quantità
1  x   1
x
( il cui
valore esatto è 1)
>>x=sym('1e-15')
>>((1+x)-1)/x
la si confronti con la quantità ottenuta con i comandi
>>y=1e-15
>>((1+y)-1)/y
Dare una giustificazione dei diversi risultati ottenuti
Funzioni Simboliche
Utilizzando i comandi
>>syms a b c x
>>p=sym('a*x^2+b*x+c')
si assegni l'espressione simbolica a  x 2  b  x  c alla variabile
simbolica p, creando le variabili corrispondenti ai termini a, b, c, x .
Si possono quindi eseguire operazioni analitiche su p (x ) , quali
differenzazione, integrazione, sostituzione etc. Si determinino le
soluzioni dell’equazione p( x)  0 con il comando
>>solve(p)
per meglio visualizzarle si utilizzi il comando
>>pretty(ans)
Si definiscano le funzioni simboliche polinomiali p  a  x  b  x  c e
q  bx e si calcoli p  q e p  q
Successivamente si utilizzi il comando subs per sostituire i valori dei
parametri
2
● a =2, b=3, c=1
utilizzando i comandi
>> p1=subs(p, [a b c], [2 3 1])
>> q1=subs(q,b,3)
se ne calcoli la differenza e il prodotto con i valori dei parametri
indicati, definendoli con i seguenti comandi
● a =2, b=4, c=-1
>> subs(p, a, 2)
>> subs(ans, b,4)
>> subs(ans, c, -1)
2
Calcolare infine p in x=2, con
>> p2=subs(ans, x, 2)
>> p2^2
Derivate, limiti ed integrali di funzioni simboliche
-Per determinare la derivata di una funzione costante, occorre definire
la costante come variabile simbolica
>>c=sym('5')
>>diff(c)
si confronti il risultato con quello ottenuto con il comando:
>>diff(5)
3
2
-Definire il polinomio p  x  15  x  44  .x  12
utilizzando il comando diff si calcoli la derivata di p
>>diff(p)
con il comando int l'integrale definito tra a,b
>>syms a b
>>pretty(int(p,a,b))
-Si crei la funzione simbolica
>> sym x
>> f=(log(x)+x)/x
se ne calcoli la derivata prima e seconda, utilizzando dopo la
derivazione il comando simplify
-Si definisca la seguente funzione a due variabili
>> syms x y
>>f=exp(x^2-y^2)
si calcoli la derivata parziale rispetto a x con il comando
>> diff(f,x)
si calcoli il gradiente della funzione nel punto (1,1)
>>gradf=[diff(f,x) diff(f,y)]
>> subs(gradf, [x y], [1 1])
se ne calcoli il punto critico con il comando
>>[x0,y0]=solve(diff(f,x), diff(f,y))
Esercizi
1. Calcolare i massimi e i minimi dei seguenti polinomi:
3x 3  x 2  15 x  5
x 5  4 x 4  10 x 3  26 x 2  11x  30
2. Calcolare le derivate rispetto ad x, utilizzando, se necessario il
comando simplify
f ( x)  x n
f ( x)  sin( ax  b)
 x2  4 

f ( x)  ln  2
x

4


x 1
f ( x)  x
e
f ( x)  e
x2
x 1
3. Calcolare il limite notevole
lim
x

1  
 n
n
n
con il seguente comando limit
>> syms x n
>> limit('(1+x/n)^n',n, inf)
ans =
exp(x)
4. Calcolare applicando la definizione, la derivata di sin(x)
f ( x  h)  f ( x )
h
f ' ( x)  lim
h0
utilizzando
>> syms x h
>> limit('(sin(x+h)-sin(x))/h',h, 0)
5. Dopo aver definito e rappresentato graficamente la funzione
f ( x) 
x
x
calcolarne il limite destro e sinistro per x che tende a 0
>> syms x h
>> limit(x/abs(x),x,0,'left')
>> limit(x/abs(x),x,0,'rigth')
6. Calcolare la derivata destra e sinistra per x tendente a 0, della
funzione
f ( x)  x  x  2
7. Calcolare i seguenti integrali definiti ed indefiniti

x
dx
1 x
2
 x ln x dx
2

 1  x sin( 2 )dx
x
0
9
x
4 1  x dx
8. Calcolare l’area della parte di piano compresa tra le curve
y  x2  3 x  2
y  x 2  x  2
dopo averle rappresentato graficamente, trovato le intersezioni
tra le curve risolvendo il sistema
>> [x0,y0]=solve('x^2-3*x+2-y' , 'y+x^2-x-2')
Esercizio
Si studi la funzione
3 x2  6  x 1
f ( x)  2
x  x3
Considerando i seguenti passi
- definizione della funzione simbolica
- grafico con il comando ezplot
>> ezplot(f)
>> ezplot(f, [a b])
(intervallo di default)
(nell’ intervallo [a,b])
- calcolo degli asintoti orizzontali e verticali
(comandi limit, solve)
- calcolo dei punti estremali (comandi diff, solve)
- calcolo dei punti di flesso (comandi diff, solve)
Matrici simboliche
9. Si crei la seguente matrice simbolica
>> syms a b c
>> A = [a b c; b c a; c a b]
eseguire la somma su righe
10.
Si generino le matrici di rotazione bidimensionale A e B
>> syms a b
>> A=[cos(a) sin(a); sin(a) cos(a)]
>> B=[cos(b) sin(b); sin(b) cos(b)]
se ne calcoli il prodotto, si determini la matrice di rotazione
finale associata ad una rotazione di  e una successiva rotazione
di
11.
3

4
Sia A la matrice
k 4 2 
A  0  3  2
0 4 3 
con k parametro reale. Si determini per quali valori di k
la matrice A è diagonabilizzabile.
Si utilizzi a tal scopo la seguente proprietà:
A  R nn diagonalizzabile se e solo R n se ammette una base di
autovettori di A.
Si verifichino poi numericamente i risultati ottenuti
12.
Si consideri la funzione
g ( x)  e x  sin x 
Usando il comando
>>T=taylor(g,8,2)
si calcolino i primi 8 termini dello sviluppo in serie di
Taylor di g(x), in un intorno del punto x=2.
Usando i comandi ezplot e subs si tracci il grafico di g(x) e
del polinomio approssimante di Taylor nell’intervallo [1. 3]