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 h0 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 x3 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 nn 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]