2
Si consideri la successione di funzioni f n ( x) =
atan( nx ) ; per ogni numero reale x fissato risulta:
1 se x > 0
lim f n ( x ) = sign( x ) = 0 se x = 0
n +
1 se x < 0
ovvero la successione converge semplicemente su tutto lasse reale alla funzione sign( x ) .
Il seguente script permette di visualizzare i grafici delle funzioni f n ( x ) , con n = 0,1,...,30 , assieme a quello della
funzione limite:
sfn='2/pi*atan(n*x)';
sf='sign(x)';
fn=fcnchk(sfn,'x','n','vectorized');
f=fcnchk(sf,'x','vectorized');
x m i n =- 5 ;
xmax=5;
y m i n =- 2 ;
ymax=2;
passo=0.01;
x=xmin:passo:xmax;
figure(1)
clf
for n=1:30
plot(x,fn(x,n),'b',x,f(x),'.k')
grid on
a x i s ( [ x m in xmax ymin ymax])
title(strcat('n=',num2str(n)))
legend(sfn,sf)
pause
end
Dallesame dei grafici ottenuti facile intuire che la convergenza alla funzione limite solo semplice in ( , + ) ,
mentre si ha convergenza uniforme in ogni sottoinsieme ( , a ] [ b, +) , con a < 0 < b .
Esercizi proposti:
Per ognuna delle seguenti successioni di funzioni rappresentare i grafici delle funzioni f n ( x ) assieme a quello della
funzione limite f ( x ) ( sufficiente modificare opportunamente lo script usato per lesempio precedente); dire poi in
quali sottoinsiemi dellinsieme di convergenza semplice la successione converge uniformemente.
1
nx se x 0
2. f n (x ) = con x R ; f ( x ) = lim f n ( x) = x
1 + nx 2 n +
0 se x = 0
1
3. f n (x ) = con xR; f ( x ) = lim f n ( x) = 0
1 + ( x n) 2 n +
1
2. Serie di Taylor.
Sia f : ( a, b) R una funzione derivabile infinite volte in ( a, b ); allora in ogni x0 ( a, b) possibile definire
la serie di Taylor di centro x0 associata alla funzione f :
f ( x 0 ) f ( n ) ( x0 )
f ( n) ( x0 )
T ( f , x0 ) := f ( x0 ) + f ( x0 )( x x0 ) + ( x x0 ) 2 + ... + ( x x0 ) n + ... = ( x x0 ) n
2! n! k=0 n !
Se tale serie converge ad f (x ) nei punti di un opportuno intervallo ( x0 R, x 0 + R) ( a,b) di raggio R > 0 si
dice che la funzione analitica o sviluppabile in serie di Taylor. Gli elementi della successione delle somma parziali
della serie sono detti polinomi di Taylor di centro x0 della funzione.
Il symbolic math toolbox di Matlab permette di calcolare i polinomi di Taylor di una funzione mediante il comando
t a y l o r ( e s p r , v a r , x 0 , n ) che genera il polinomio di Taylor della funzione definita dallespressione simbolica
e s p r rispetto alla variabile v a r di centro x 0 e grado n - 1 ; ad esempio i comandi:
>> syms x
>> t=taylor(sin(x),x,0,8)
restituiscono
t =
x-1/6*x^3+1/120*x^5-1/5040*x^7
Utilizzando il seguente script possiamo visualizzare il grafico della funzione sin( x ) assieme a quello di alcuni dei
polinomi di Taylor centrati nellorigine ad essa associati:
syms x;
fun='sin(x)';
f = s y m ( f u n);
x m i n =- 4 * p i ;
xmax=4*pi;
y m i n =- 2 ;
ymax=2;
passo=0.01;
x0=0;
xx=xmin:passo:xmax;
L1='Polinomio di Taylor di grado: ';
figure(1)
for k=1:2:31
t=taylor(f,x,x0,k+1);
yy=subs(t,xx);
clf
hold on
ezplot(f,[xmin xmax],1)
plot(xx,yy,'r')
axis([xmin,xmax,ymin,ymax])
L=strcat(L1,int2str(k));
legend(fun,L)
grid on
pause
end
Modifichiamo lo script precedente in modo da visualizzare i grafici dei polinomi di Taylor della funzione log(1 + x ) :
syms x;
fun='log(1+x)';
f=sym(fun);
x m i n =- 2 ;
xmax=2;
2
y m i n =- 3 ;
ymax=2;
passo=0.01;
x0=0;
xx=xmin:passo:xmax;
L1='Polinomio di Taylor di grado: ';
figure(1)
for k=1:20
t=taylor(f,x,x0,k+1);
yy=subs(t,xx);
clf
hold on
ezplot(f,[xmin xmax],1)
plot(xx,yy,'r')
axis([xmin,xmax,ymin,ymax])
L=strcat(L1,int2str(k));
legend(fun,L)
grid on
pause
end
Esercizi proposti:
Rappresentare graficamente con Matlab la successione delle somme parziali delle seguenti serie di Taylor; determinare
di ogni serie linsieme di convergenza semplice e di convergenza uniforme.
xn x2 n
a) ex = b) cos x = ( 1) n
n =0 n! n= 0 ( 2n)!
x 2 n+1
x 2n+1
c) atan x = (1) n d) sinh x =
n =0 2n + 1 n =0 ( 2n + 1)!
x 2n 1
cosh x = =x
n
e) f)
n =0 ( 2n)!
1 x n=0
3
3. Serie di Fourier.
+1 se 2k x < (2 k + 1)
f (x) = x ( , + ), k Z
1 se (2 k + 1) x < (2k + 2)
Per definire in Matlab tale funzione possiamo usare, ad esempio, il seguente m-file:
function y=oq(x,T)
x=x*2/T;
y=ones(size(x)).*((mod(floor(x),2)==0)-(mod(floor(x),2)==1));
a0
+ a k cos( kx) + bk sin( kx)
2 1 1
dove:
1
a k = sign( x) cos( kx) dx = 0 (la funzione dispari)
0 se k pari
1 2 2 cos( kx)
bk =
sign( x ) sin( kx)dx = sin( kx)dx =
k 0 = 4
se k dispari
k
0
e quindi la serie :
function y=Fourier_ondaquadra(x,n)
y=0;
for k=0:n
y=y+4/((2*k+1)*pi)*sin((2*k+1)*x);
end
con le seguenti istruzioni possiamo poi rappresentare il grafico di f (x ) assieme a quello delle somme parziali della
serie di Fourier associata:
x=-4*pi:.01:4*pi;
y=oq(x,2*pi);
L1='Onda rettangolare';
figure(1)
clf
hold off
for n=0:20
y1=Fourier_ondaquadra(x,n);
L2=strcat('Somma parziale di ordine:',int2str(n));
4
plot(x,y,'.b',x,y1,'k')
a x i s ( [- 4 * p i 4 * p i -2 2 ] )
legend(L1,L2)
grid on
pause
end
Esercizi proposti:
f (x ) = x x [ , ]
2
La serie di Fourier associata ha coefficienti:
0 se k pari
1 2
ak =
f ( x)cos( kx) dx = x cos( kx )dx = 4
0 2 se k dispari
k 2
1
bk =
f (x )sin( kx) dx = 0 (la funzione pari)
cos ((2 k + 1) x )
4
(2 k + 1)
k =0
2
Rappresentare con Matlab il grafico di f (x ) assieme con quello delle somme parziali della serie di Fourier ad
essa associata.
f u n c t i o n y = o t(x,T)
x=x*2/T;
for k=1:length(x)
i f m o d ( f l oo r ( x ( k ) ) , 2 ) = = 0
y ( k ) = - ( x ( k )- f l o o r ( x ( k ) ) ) + 1 / 2 ;
else
y ( k ) = x ( k ) - f l o o r ( x ( k ) ) -1 / 2 ;
end
end
y=T/2*y;
mentre la successione delle somme parziali della serie di Fourier associata pu essere calcolata con il file:
% C a l c o l a l a s o m m a p a r z i a l e d e l la s e r i e d i F o u r i e r a s s o c i a t a a l l a f u n z i o n e
% f ( x ) = p i / 2 - x s e 0 < = x < 1 , p a r i , di periodo T=2*pi
function y=Fourier_ondatriangolare(x,n)
y=0;
for k=0:n
y=y+4/((2*k+1)^2*pi)*cos((2*k+1)*x);
end
5
2
1
a0 =
xdx = 2
0
a
2
1
ak =
x cos(kx)dx = 0
0
2
1 2
bk =
x sin(kx)dx = k
0
e quindi della forma:
2
sin ( kx )
k =1 k
Rappresentare con Matlab il grafico di f (x ) assieme con quello delle somme parziali della serie di Fourier ad
essa associata.
f u n c t i o n y = d s(x,T)
x=x/T;
y=T*(x - f l o o r ( x ) ) ;
function y=Fourier_dentedisega(x,n)
y=pi*ones(size(x));
for k=1:n
y=y - 2 / k * s i n ( k * x ) ;
end