> restart:

MAO_TP - E1

Évaluation du 10/01/2007

>

On charge quelques bibliothèques

Vérifier les numéros de version des bibliothèmes disponibles

> with(pldx): # il faut la version 29

`pldx v6789-29  ;  author : <douillet@ensait.fr>  ;...

> with(simul): # il faut la version 21

`simul v68-21  ;  author : <douillet@ensait.fr>  ; ...

Warning, the name ever_loaded has been redefined

> with(LinearAlgebra):

> xima:= proc(pl); op(1,pl): convert(%,list): map(op,%): map2(op,2,%); (max@op)(%); end:

> kernelopts(ASSERT=true); with(plots, display);

false

[display]

> xmacro(); macro(ptplo=plots[pointplot]);

moy, var, cov, xab, nbr

moy, var, cov, xab, nbr, ptplo

>

Homographies A

Construction du sujet

1.7, -2.3; (z-%[1])/(z-%[2]); phi:= unapply(%,z);

1.7, -2.3

(z-1.7)/(z+2.3)

phi := proc (z) options operator, arrow; (z-1.7)/(z...

-0.8*phi(z)=phi(Z); (normal@expand)(solve(%, Z)); f:= unapply(%, z);

-.8*(z-1.7)/(z+2.3) = (Z-1.7)/(Z+2.3)

-(7.*z-351.9000000)/(90.*z+47.)

f := proc (z) options operator, arrow; -(7.*z-351.9...

>

Points fixes

> f := unapply((-7.*z+351.9)/(90.*z+47.), z);

f := proc (z) options operator, arrow; (-7.*z+351.9...

> alpha, beta:= solve(f(z)=z);

alpha, beta := -2.300000000, 1.700000000

> ka, kb:= D(f)(alpha), D(f)(beta);

ka, kb := -1.250000000, -.8000000000

Escargot

> plot(f(t), t=-10..10, view=[-10..10, -10..10],
color=black, linestyle=16, discont=true),
plot(t, t=-10..10): display(%); pl1:=%:

[Maple Plot]

>

> x0:= -2.7; li:= seq( (f@@k)(x0), k=0..40);

x0 := -2.7

li := -2.7, -1.891836735, -2.962251653, -1.69686369...
li := -2.7, -1.891836735, -2.962251653, -1.69686369...
li := -2.7, -1.891836735, -2.962251653, -1.69686369...
li := -2.7, -1.891836735, -2.962251653, -1.69686369...
li := -2.7, -1.891836735, -2.962251653, -1.69686369...

> abs(li[-1]-li[-2]);

.13154582e-1

>

> pl4:= plots[pointplot]([li[1]$3, seq(X$4, X=li[2..-2]), li[-1]$3 ], style=line, color=magenta):

repérage de coordonnées sur le graphe

> display(pl1, pl4, view=[-8..8, -8..8], tickmarks=[[-2.7,-10,4],[-10,4]], labels=[``,``]);

[Maple Plot]

>

>

Homographies B

Construction du sujet

1.7, -2.4; (z-%[1])/(z-%[2]); phi:= unapply(%,z);

1.7, -2.4

(z-1.7)/(z+2.4)

phi := proc (z) options operator, arrow; (z-1.7)/(z...

-0.8*phi(z)=phi(Z); (normal@expand)(solve(%, Z)); f:= unapply(%, z);

-.8*(z-1.7)/(z+2.4) = (Z-1.7)/(Z+2.4)

-(5.500000000*z-183.6000000)/(45.*z+26.)

f := proc (z) options operator, arrow; -(5.50000000...

>

Points fixes

> f:= unapply( (-5.5*z+183.6)/(45.*z+26.) , z);

f := proc (z) options operator, arrow; (-5.5*z+183....

> alpha, beta:= solve(f(z)=z);

alpha, beta := -2.400000000, 1.700000000

> ka, kb:= D(f)(alpha), D(f)(beta);

ka, kb := -1.250000000, -.7999999998

Escargot

> plot(f(t), t=-10..10, view=[-10..10, -10..10],
color=black, linestyle=16, discont=true),
plot(t, t=-10..10): display(%); pl1:=%:

[Maple Plot]

>

> x0:= -2.7; li:= seq( (f@@k)(x0), k=0..40);

x0 := -2.7

li := -2.7, -2.078010471, -2.888871224, -1.91817612...
li := -2.7, -2.078010471, -2.888871224, -1.91817612...
li := -2.7, -2.078010471, -2.888871224, -1.91817612...
li := -2.7, -2.078010471, -2.888871224, -1.91817612...
li := -2.7, -2.078010471, -2.888871224, -1.91817612...

> abs(li[-1]-li[-2]);

.17975781e-1

>

> pl4:= plots[pointplot]([li[1]$3, seq(X$4, X=li[2..-2]), li[-1]$3 ], style=line, color=magenta):

repérage de coordonnées sur le graphe

> display(pl1, pl4, view=[-8..8, -8..8], tickmarks=[[-2.7,-10,4],[-10,4]], labels=[``,``]);

[Maple Plot]

>

>

Matrices

> f(z): ``(numer(%))/denom(%); qq:= [numer, denom]( f(z)); ma:= Matrix(2,2,(j,k)->coeff(qq[j],z,2-k));

``(-5.5*z+183.6)/(45.*z+26.)

qq := [-5.5*z+183.6, 45.*z+26.]

ma := _rtable[138248444]

> mu, mp:= Eigenvectors(ma);

mu, mp := _rtable[138817012], _rtable[138835780]

> Column(mp,1); %/%[2];

_rtable[138817132]

_rtable[138817212]

> alpha,beta; ma.<alpha,1>; -%/82;

-2.400000000, 1.700000000

_rtable[138817332]

_rtable[138817412]

>

>

Création des fichiers

fich:= "/home/douillet/docs/Ensait/maotp/maotp_ds17a/dat_maotp_ds17a.txt";
N:=nextprime(410); p:= 11; fu:= unapply(23-5*x+x^2/2,x); plot(fu(x), x=0..10);
evp:= evalf(Pi): g:= proc(z); fu(z/33.)+6*cos(2*evp*z/p)+4*ra(); end;
fclose(fich); hdl:= fopen(fich, WRITE);
for i to N do fprintf(hdl,"%a\n", g(i)); od:
fclose(fich);

fich:= "/home/douillet/docs/Ensait/maotp/maotp_ds17b/dat_maotp_ds17b.txt";
N:=nextprime(410); p:= 11; fu:= unapply(23-5*x+x^2/2,x); plot(fu(x), x=0..10);
evp:= evalf(Pi): g:= proc(z); fu(z/33.)+6*cos(2*evp*z/p)+4*ra(); end;
fclose(fich); hdl:= fopen(fich, WRITE);
for i to N do fprintf(hdl,"%a\n", g(i)); od:
fclose(fich);

>

Série Temporelle A

Lecture du fichier

Déclarer le nom de la copie locale du fichier

> fich:= "F:/docs/Ensait/maotp/maotp_ds17a/dat_maotp_ds17a.txt";
fich:= "/home/douillet/docs/Ensait/maotp/maotp_ds17/dat_maotp_ds17a.txt";

fich :=

fich :=

On lit tous les nombres

> lire:= table(): tmp:= 'tmp':
hdl:= fopen(fich, READ) :
for i to 5000 while tmp <> [ ] do
tmp:= fscanf(hdl,"%a");
lire[i]:= op (tmp);
od:
fclose(fich); n:= i-2 ; i:='i':

n := 419

On en fait une liste

> li:= [seq(lire[k],k=1..n)]:

>

Paramètres de dispersion

> m:= moy(li);

m := 20.13643596

> s, s2:= sqrt(var(li)), var(li);

s, s2 := 9.038751818, 81.69903442

> vals:= xab(li); nbr(li);

vals := 4.965396001 .. 48.57816973

419

>

Visualisation

> ptplo([seq([k, li[k]], k=1..n)], style= line, view=[DEFAULT, 0..rhs(vals)], color=magenta); pl_data:= %:

[Maple Plot]

> pl2:= plot([m-s, m, m+s], t=1..n, color=red, linestyle=[8,24,8]) :

> plots[display](pl_data, pl2);

[Maple Plot]

>

>

Transformée de Fourier

nn:=20: ft:= table([]);

ft:= [seq( add(li[k]*exp(2*I*evalf(Pi)*k*j/nn), k=1..nn)/nn, j=0..nn)];

ptplo( [seq([k, abs(ft[k+1])], k=0..nn)], style=line, view=[DEFAULT, 0..20]);

>

Attention : cela dure "un certain temps"

> nn:=n : ft:= table([]);

ft := TABLE([])

> pif:= evalf(2*I*Pi/nn): expp:= proc(kj) option remember; exp(pif*kj); end;

expp := proc (kj) option remember; exp(pif*kj) end ...

> stamp:= time() :
ft:= evalf([seq( add(li[k]*expp(modp(k*j,nn)), k=1..nn)/nn, j=0..nn)]) :
elapsed_time = time() - stamp ;

elapsed_time = 5.728

> ptplo( [seq([k, abs(ft[k+1])], k=0..nn)], style=line, view=[DEFAULT, 0..20]);

[Maple Plot]

> decal:= 2: [seq(abs(ft[k+1]), k=1+decal..n/2)]: member((max@op)(%), %, 'ouca'); ouca:= ouca+decal;

true

ouca := 38

> ici:=ouca-4..ouca+4;
plot([seq([k, abs(ft[k+1])], k=ici)]); pic:= add(k * abs(ft[k+1]), k=ici)/add(abs(ft[k+1]), k=ici);

> n/pic; per:= round(%); lon:= floor(n/per);

ici := 34 .. 42

[Maple Plot]

pic := 37.85444357

11.06871375

per := 11

lon := 38

> perg := floor(per/2); perd := per-%;

perg := 5

perd := 6

>

Moyenne mobile (trend)

> moymob:= proc(ma::list, per) global perg, perd; local k, kx, mb, tmp;
kx := nops(ma):
for k from 1 to perg-1 do mb[k] := missing od:;
for k from kx-perd+1 to kx do mb[k] := missing od:
tmp := add(ma[k], k=1..per); mb[perg] := tmp/per;
for k from perg+1 to kx-perd do
tmp := tmp-ma[k-perg]+ma[k+perd]: mb[k] := %/per
od: [seq(mb[k],k=1..kx)];
end:

> trend:= moymob(li, per):

> pl_trend:= plot([seq([k, trend[k]],k=1..n)], color=blue):

> plots[display](pl_data, pl_trend);

[Maple Plot]

>

>

Correction des Variations saisonnières

> for u from 1 to per do meu[u]:= moy([seq(li[u+per*j],j=0..lon-1)]); od:
meu_:= moy([seq(meu[u],u=1..per)]);
for u from 1 to per do meu[u]:= meu[u]-meu_: od:

meu_ := 20.07579749

> evalf([seq(meu[m], m=1..per)], 4);
plot( [seq([k, meu[1+irem(k-1,per)]], k=1..30)]);

[4.953, 2.291, -1.014, -3.921, -6.129, -5.888, -3.7...

[Maple Plot]

>

> licor:= [seq(li[k] -meu[1+irem(k-1,per)], k=1..n)] :

> [nbr, moy, var](licor[1..lon*per]); [nbr, moy, var](li[1..lon*per]);

[418, 20.07579751, 61.59112876]

[418, 20.07579748, 80.35381299]

>

> pl_sai_sim:= plot([seq( [k, licor[k] ], k=1..n)], linestyle=16):

> plots[display]( pl_data, pl_sai_sim);

[Maple Plot]

>

Résiduels

> resid := [missing$(perg-1), seq( licor[k] - trend[k], k=perg .. n-perd), missing$perd] : nops(%), n;

419, 419

> plot([seq( [k, resid[k]], k=1..n)], linestyle=8) ;

[Maple Plot]

> xhisto( subs(missing=NULL, resid), area=1, numbars=15);

[Maple Plot]

>

>

Série Temporelle B

Lecture du fichier

Déclarer le nom de la copie locale du fichier

> fich:= "F:/docs/Ensait/maotp/maotp_ds17a/dat_maotp_ds17a.txt";
fich:= "/home/douillet/docs/Ensait/maotp/maotp_ds17/dat_maotp_ds17b.txt";

fich :=

fich :=

On lit tous les nombres

> lire:= table(): tmp:= 'tmp':
hdl:= fopen(fich, READ) :
for i to 5000 while tmp <> [ ] do
tmp:= fscanf(hdl,"%a");
lire[i]:= op (tmp);
od:
fclose(fich); n:= i-2 ; i:='i':

n := 419

On en fait une liste

> li:= [seq(lire[k],k=1..n)]:

>

Paramètres de dispersion

> m:= moy(li);

m := 20.20834274

> s, s2:= sqrt(var(li)), var(li);

s, s2 := 9.068400695, 82.23589117

> vals:= xab(li); nbr(li);

vals := 4.846102140 .. 49.16983198

419

>

Visualisation

> ptplo([seq([k, li[k]], k=1..n)], style= line, view=[DEFAULT, 0..rhs(vals)], color=magenta); pl_data:= %:

[Maple Plot]

> pl2:= plot([m-s, m, m+s], t=1..n, color=red, linestyle=[8,24,8]) :

> plots[display](pl_data, pl2);

[Maple Plot]

>

>

Transformée de Fourier

nn:=20: ft:= table([]);

ft:= [seq( add(li[k]*exp(2*I*evalf(Pi)*k*j/nn), k=1..nn)/nn, j=0..nn)];

ptplo( [seq([k, abs(ft[k+1])], k=0..nn)], style=line, view=[DEFAULT, 0..20]);

>

Attention : cela dure "un certain temps"

> nn:=n : ft:= table([]);

ft := TABLE([])

> pif:= evalf(2*I*Pi/nn): expp:= proc(kj) option remember; exp(pif*kj); end;

expp := proc (kj) option remember; exp(pif*kj) end ...

> stamp:= time() :
ft:= evalf([seq( add(li[k]*expp(modp(k*j,nn)), k=1..nn)/nn, j=0..nn)]) :
elapsed_time = time() - stamp ;

elapsed_time = 6.133

> ptplo( [seq([k, abs(ft[k+1])], k=0..nn)], style=line, view=[DEFAULT, 0..20]);

[Maple Plot]

> decal:= 2: [seq(abs(ft[k+1]), k=1+decal..n/2)]: member((max@op)(%), %, 'ouca'); ouca:= ouca+decal;

true

ouca := 38

> ici:=ouca-4..ouca+4;
plot([seq([k, abs(ft[k+1])], k=ici)]); pic:= add(k * abs(ft[k+1]), k=ici)/add(abs(ft[k+1]), k=ici);

> n/pic; per:= round(%); lon:= floor(n/per);

ici := 34 .. 42

[Maple Plot]

pic := 37.71670539

11.10913574

per := 11

lon := 38

> perg := floor(per/2); perd := per-%;

perg := 5

perd := 6

>

Moyenne mobile (trend)

> moymob:= proc(ma::list, per) global perg, perd; local k, kx, mb, tmp;
kx := nops(ma):
for k from 1 to perg-1 do mb[k] := missing od:;
for k from kx-perd+1 to kx do mb[k] := missing od:
tmp := add(ma[k], k=1..per); mb[perg] := tmp/per;
for k from perg+1 to kx-perd do
tmp := tmp-ma[k-perg]+ma[k+perd]: mb[k] := %/per
od: [seq(mb[k],k=1..kx)];
end:

> trend:= moymob(li, per):

> pl_trend:= plot([seq([k, trend[k]],k=1..n)], color=blue):

> plots[display](pl_data, pl_trend);

[Maple Plot]

>

>

Correction des Variations saisonnières

> for u from 1 to per do meu[u]:= moy([seq(li[u+per*j],j=0..lon-1)]); od:
meu_:= moy([seq(meu[u],u=1..per)]);
for u from 1 to per do meu[u]:= meu[u]-meu_: od:

meu_ := 20.14351340

> evalf([seq(meu[m], m=1..per)], 4);
plot( [seq([k, meu[1+irem(k-1,per)]], k=1..30)]);

[4.885, 2.228, -1.333, -3.826, -5.768, -5.565, -4.1...

[Maple Plot]

>

> licor:= [seq(li[k] -meu[1+irem(k-1,per)], k=1..n)] :

> [nbr, moy, var](licor[1..lon*per]); [nbr, moy, var](li[1..lon*per]);

[418, 20.14351339, 62.49948852]

[418, 20.14351340, 80.67163615]

>

> pl_sai_sim:= plot([seq( [k, licor[k] ], k=1..n)], linestyle=16):

> plots[display]( pl_data, pl_sai_sim);

[Maple Plot]

>

Résiduels

> resid := [missing$(perg-1), seq( licor[k] - trend[k], k=perg .. n-perd), missing$perd] : nops(%), n;

419, 419

> plot([seq( [k, resid[k]], k=1..n)], linestyle=8) ;

[Maple Plot]

> xhisto( subs(missing=NULL, resid), area=1, numbars=15);

[Maple Plot]

>

>

>