Chapitre III

Première partie

> restart;

1. Séquences

> 3,4,5;

3, 4, 5

> s1:=a,b,c; s2:=(d,e);

s1 := a, b, c

s2 := d, e

> sequence:=s1,s2,f,g,h;

sequence := a, b, c, d, e, f, g, h

> seqvide:=NULL; # la séquence vide.

seqvide := NULL

> sequence[1],sequence[8]; sequence[9];

a, h

Error, invalid subscript selector

> sequence[2]:=x;

Error, cannot assign to an expression sequence

> sequence:=sequence[1],x,sequence[3..8];

sequence := a, x, c, d, e, f, g, h

>

> seq(2^i,i=1..10);

2, 4, 8, 16, 32, 64, 128, 256, 512, 1024

> 2^i $ i=1..10;

2, 4, 8, 16, 32, 64, 128, 256, 512, 1024

> j $ 5;

j, j, j, j, j

> seq(k^2,k=1..n);

Error, unable to execute seq

> k^2 $ k=1..n;

`$`(k^2,k = 1 .. n)

> subs(n=5,%);

`$`(k^2,k = 1 .. 5)

> eval(%);

1, 4, 9, 16, 25

> restart;

2. Ensembles

> {3,4,5};

{3, 4, 5}

> {5,4,3};

{3, 4, 5}

> {a,d,d,b,f,b,e,c,c};

{a, d, f, b, c, e}

> {seq(1/k,k=1..10)};

{1, 1/10, 1/9, 1/8, 1/7, 1/6, 1/5, 1/4, 1/3, 1/2}

> ensvide:={};

ensvide := {}

Autre ensemble vide

> ensvide2:={NULL};

ensvide2 := {}

> ens1:={1,2,3,4,5};

ens1 := {1, 2, 3, 4, 5}

> ens2:={seq(2*k,k=0..3)};

ens2 := {0, 2, 4, 6}

> "Réunion"=ens1 union ens2;

> Intersection:=ens1 intersect ens2;

Intersection := {2, 4}

> `Différence de ens1 et ens2`:=ens1 minus ens2;

`Différence de ens1 et ens2` := {1, 3, 5}

> op(ens1);

1, 2, 3, 4, 5

> nops(ens2);

4

> restart;

3. Listes

> li1:=[Alain, Bernard, Céline];

li1 := [Alain, Bernard, Céline]

> li1[3];

Céline

> li2:=[Daniel,Élise];

li2 := [Daniel, Élise]

> seq3:=Frédérick, Guillaume;

seq3 := Frédérick, Guillaume

> li3:=[seq3];

li3 := [Frédérick, Guillaume]

> `Mauvaise liste`:=li1,li2,li3;

`Mauvaise liste` := [Alain, Bernard, Céline], [Dani...

> `Bonne liste`:=[op(li1),op(li2),op(li3)];

`Bonne liste` := [Alain, Bernard, Céline, Daniel, É...

> `Pour la frime`:=[seq(op(li||k),k=1..3)];

`Pour la frime` := [Alain, Bernard, Céline, Daniel,...

> li1[2]:=Bertrand; # Méthode à éviter.

li1[2] := Bertrand

> li1;

[Alain, Bertrand, Céline]

> li1:=subsop(2=Bruno,li1); # C'est la bonne méthode.

li1 := [Alain, Bruno, Céline]

>

> restart;

>

> subs(x=1,y=2,3*x+2,5*y+4);

Error, wrong number (or type) of parameters in function subs

> subs(x=1,y=2,[3*x+2,5*y+4]);

[5, 14]

>

Deuxième Partie

> restart;

1. Définition d'un fonction

Opérateur flèche

> restart;

> f:=x->2*x^2+3;

f := proc (x) options operator, arrow; 2*x^2+3 end ...

> f(5);

53

> f(a+b);

2*(a+b)^2+3

> expand(%);

2*a^2+4*a*b+2*b^2+3

> g:=(x,y)->cos(x-y^2);

g := proc (x, y) options operator, arrow; cos(x-y^2...

> g(Pi,sqrt(3*Pi)/2);

1/2*sqrt(2)

Fonctions définies par morceaux

> f:=x->piecewise(x<0,-x^2+1,x<1,-x+1,x^2-1);

f := proc (x) options operator, arrow; piecewise(x ...

> plot(f,-2..2);

[Maple Plot]

Utilisation de unapply

> expr:=3*x+4;

expr := 3*x+4

> f:=x->expr;

f := proc (x) options operator, arrow; expr end pro...

> f(2);

3*x+4

> f:=unapply(expr,x);

f := proc (x) options operator, arrow; 3*x+4 end pr...

> f(2);

10

>

> restart;

> L:=[seq(x->x^k,k=1..4)];

L := [proc (x) options operator, arrow; x^k end pro...

> L[2];

proc (x) options operator, arrow; x^k end proc

> L1:=[seq(subs(n=k,x->x^n),k=1..4)];

L1 := [proc (x) options operator, arrow; x end proc...

> L2:=[seq(unapply(x^k,x),k=1..4)];

L2 := [proc (x) options operator, arrow; x end proc...

> L1[3](t);L2[3](t);

t^3

t^3

Utilisation des procédures

> signe:=proc(x::realcons)
if x>0 then "+"
elif x<0 then "-"
else "0"
fi
end;

signe := proc (x::realcons) if 0 < x then

> signe(3);

> signe(-2);

> signe(0);

> signe((a+b)^2-a^2-b^2-2*a*b);

Error, signe expects its 1st argument, x, to be of type realcons, but received (a+b)^2-a^2-b^2-2*a*b

> signe(-Pi);

Error, (in signe) cannot evaluate boolean: Pi < 0

2. Opérations sur les fonctions

Composition

> restart;

> g:=x->x+Pi/2;

g := proc (x) options operator, arrow; x+1/2*Pi end...

> f:=cos@g;

f := `@`(cos,g)

> simplify(f(x));

-sin(x)

> h:=sin@(g@@4);

h := `@`(sin,`@@`(g,4))

> simplify(h(x));

sin(x)

Tracés de représentations graphiques

Avec des fonctions

> plot(sin);

[Maple Plot]

> plot(x->x^2*sin(1/x),-0.1..0.1,thickness=2);

[Maple Plot]

> plot(t->3*a*ln(t),0..1,thickness=2);

[Maple Plot]

> H:=x->1/(1-x^2+I*x/Q);

H := proc (x) options operator, arrow; 1/(1-x^2+I*x...

> Hnum:=unapply(subs(Q=1,H(x)),x);

Hnum := proc (x) options operator, arrow; 1/(1-x^2+...

> G:=abs@Hnum;

G := `@`(abs,Hnum)

> plot(G,0..10,thickness=2);

[Maple Plot]

> with(plots):

Warning, the name changecoords has been redefined

> semilogplot(20*log[10]@G,0.1..10,title="Diagramme de Bode",thickness=2);

[Maple Plot]

Avec des expressions

> plot(cos(x),x);

[Maple Plot]

> P:=a*x^2+b*x+c;

P := a*x^2+b*x+c

> Pnum:=subs(a=1,b=-2,c=4,P);

Pnum := x^2-2*x+4

> plot(Pnum,x=-5..5);

[Maple Plot]

Représentation simultanée de plusieurs graphes

> plot({cos(x),1-x^2/2},x=-Pi..Pi,thickness=2);

[Maple Plot]

> approx:=seq(sum(x^k/k!,k=0..n),n=1..5);

approx := 1+x, 1+x+1/2*x^2, 1+x+1/2*x^2+1/6*x^3, 1+...

> plot([exp(x),approx],x=-3..3,color=[red,blue $ 5],thickness=2);

[Maple Plot]

Représentation simultanée de plusieurs graphes

> restart;with(plots):

Warning, the name changecoords has been redefined

> g1:=plot(cos(x),x=-2*Pi..2*Pi,color=magenta,thickness=2):

> g2:=plot(sin(x),x=-2*Pi..2*Pi,color=blue,thickness=2):

> g3:=plot(tan(x),x=-2*Pi..2*Pi,-3..3,color=green,discont=true,thickness=2):

> display([g1,g2,g3],title="Principales fonctions trigonométriques");

[Maple Plot]

Tracé de lignes brisées

> plot([[0,0],[1,3],[4,3],[0,0]]);

[Maple Plot]

> plot([[0,0],[2,2],[0,2],[1,3],[2,2],[2,0],[0,2],[0,0],[2,0]],scaling=constrained,axes=none,color=aquamarine);

[Maple Plot]

Utilisation de map

> restart;

> f:=t->t^2;

f := proc (t) options operator, arrow; t^2 end proc...

> map(f,a*x+b);

a^2*x^2+b^2

> map(f,t*(a+b));

t^2*(a+b)^2

> map(f,[seq(y||i,i=1..5)]);

[y1^2, y2^2, y3^2, y4^2, y5^2]

Exercices du chapitre III

> restart;

Exercice V.1

> assume(a,real);assume(b,real);z:=a+I*b;

z := a+I*b

> p:=expand(z*z+conjugate(z)+I*z);

p := a^2+2*I*a*b-b^2+a-I*b+I*a-b

> sol:=solve({Re(p),Im(p)},{a,b});assign(sol);

sol := {b = 0, a = 0}, {a = -RootOf(2*_Z^2+4*_Z+1)-...

D'où les solutions complexes, que l'on va représenter :

> allvalues(z);pts:=allvalues([a,b]);

-1/2*sqrt(2)+I*(-1+1/2*sqrt(2)), 1/2*sqrt(2)+I*(-1-...

pts := [-1/2*sqrt(2), -1+1/2*sqrt(2)], [1/2*sqrt(2)...

On laisse par ce procédé la solution nulle ... Rajoutons-la, puis représentons le triangle introduit par l'énoncé :

> for i to 2 do sol||i:=op(i,[pts]) od;sol||0:=[0,0];

sol1 := [-1/2*sqrt(2), -1+1/2*sqrt(2)]

sol2 := [1/2*sqrt(2), -1-1/2*sqrt(2)]

sol0 := [0, 0]

> with(plots):plot([seq(sol||i,i=0..2),sol||0],scaling=constrained);

[Maple Plot]

Ce triangle semble effectivement rectangle en O. On le vérifie à l'aide d'un produit scalaire :

> with(linalg):simplify(dotprod(sol1,sol2));

Warning, the protected names norm and trace have been redefined and unprotected

0

On peut aussi le vérifier en utilisant les propriétés des complexes

> solcomplexe:=[allvalues(z)];

solcomplexe := [-1/2*sqrt(2)+I*(-1+1/2*sqrt(2)), 1/...

> rationalize(solcomplexe[1]/solcomplexe[2]);

-1/8*(-sqrt(2)-2*I+I*sqrt(2))*(sqrt(2)+2*I+I*sqrt(2...

> evalc(%);

I*(-sqrt(2)+1)

Ainsi, on passe d'une solution à l'autre en multipliant par un imaginaire pur, c'est-à-dire que l'angle considéré est droit.

>

>

> restart;

Exercice V.2

> Z:=z^2/(2*z+3*I);

Z := z^2/(2*z+3*I)

> assume(x,real):assume(y,real):Z:=subs(z=x+I*y,Z);

Z := (x+I*y)^2/(2*x+2*I*y+3*I)

Z est imaginaire pur si et seulement si Z+conjugate(Z)=0. On utilise normalize pour supprimer les imaginaires du dénominateur.

> rationalize(Z+conjugate(Z));

4*x*(x^2+y^2+3*y)/(4*x^2+9+4*y^2+12*y)

> eq:=numer(%);

eq := 4*x*(x^2+y^2+3*y)

Ainsi Z est imaginaire pur si et ssi x=0 ou x^2+y^2+3y=0. On peut reconnaître les éléments caractéristiques du cercle et de la droite, ou les représenter directement à l'aide d'implicitplot

> with(plots):

Warning, the name changecoords has been redefined

> implicitplot(eq,x=-2..2,y=-4..1,numpoints=1000,thickness=2,scaling=constrained);

[Maple Plot]

>

> restart;

Exercice V.3

> f:=z->(z-2*I)/(z+I);

f := proc (z) options operator, arrow; (z-2*I)/(z+I...

> solve(f(z)=y,z);

-I*(2+y)/(-1+y)

Ainsi, pour tout y<>1, l'équation f(z)=y admet une unique solution, donc tout y de C\{1} admet un unique antécédent qui est dans C\{-i}. D'où le résultat.

> assume(x,real):assume(y,real):assume(u,real):assume(v,real):

On a immédiatement

> sys:={u=Re(rationalize(f(x+I*y))),v=Im(rationalize(f(x+I*y)))};

sys := {v = -3*x/(x^2+y^2+2*y+1), u = (x^2+y^2-y-2)...

Pour obtenir x et y en fonction de u et v, il faut inverser les formules précédentes, c'est-à-dire résoudre le système précédent en considérant x et y comme inconnues.

> solve(sys,{x,y});

{x = -3*v/(v^2+u^2-2*u+1), y = -(u+v^2+u^2-2)/(v^2+...

Étudions le signe de |f(z)|^2-1, et trouvons à quelle condition celui-ci est négatif.

> test:=(abs(f(x+I*y))^2-1);

test := (x^2+y^2-4*y+4)/(x^2+y^2+2*y+1)-1

> test:=normal(test);

test := -3*(2*y-1)/(x^2+y^2+2*y+1)

Il est clair que le dénominateur est positif (somme de deux carrés), donc test<0 si et ssi 2y-1>0, c'est-à-dire y>1/2, ce qu'il fallait démontrer.

>

> restart;

Exercice V.4

> f:=z->(z+1/z)/2;

f := proc (z) options operator, arrow; 1/2*z+1/2/z ...

Notons C ce cercle. Alors C est l'ensemble des Reit, avec t dans [0,2Pi]

> assume(t,real);assume(R,real);Image1:=f(R*exp(I*t));

Image1 := 1/2*R*exp(I*t)+1/2/(R*exp(I*t))

> Image1:=convert(Image1,trig);

Image1 := 1/2*R*(cos(t)+I*sin(t))+1/2/(R*(cos(t)+I*...

> Image1:=simplify(expand(rationalize(Image1)));

Image1 := 1/2*(R^2*cos(t)+I*R^2*sin(t)+cos(t)-I*sin...

> x:=Re(Image1);y:=Im(Image1);

x := 1/2*(R^2*cos(t)+cos(t))/R

y := 1/2*(R^2*sin(t)-sin(t))/R

> xnum:=subs(R=3,x);ynum:=subs(R=3,y);

xnum := 5/3*cos(t)

ynum := 4/3*sin(t)

On reconnaît l'équation paramétrique d'une ellipse.

> plot([xnum,ynum,t=0..2*Pi],scaling=constrained);

[Maple Plot]

>

Notons D la demi-droite. C'est l'ensemble des teitheta avec t dans [0,+infty[

> assume(t,real);assume(theta,real); Image2:=f(t*exp(I*theta));

Image2 := 1/2*t*exp(I*theta)+1/2/(t*exp(I*theta))

> Image2:=convert(Image2,trig);

Image2 := 1/2*t*(cos(theta)+I*sin(theta))+1/2/(t*(c...

> Image2:=simplify(expand(rationalize(Image2)));

Image2 := 1/2*(t^2*cos(theta)+I*t^2*sin(theta)+cos(...

> x:=Re(Image2);y:=Im(Image2);

x := 1/2*(t^2*cos(theta)+cos(theta))/t

y := 1/2*(t^2*sin(theta)-sin(theta))/t

> xnum:=subs(theta=3*Pi/8,x);ynum:=subs(theta=3*Pi/8,y);

xnum := 1/2*(t^2*cos(3/8*Pi)+cos(3/8*Pi))/t

ynum := 1/2*(t^2*sin(3/8*Pi)-sin(3/8*Pi))/t

> plot([xnum,ynum,t=0.2..5],scaling=constrained);

[Maple Plot]

>

>