Colle d'informatique X

> restart;

X.1

> expr:=(x-3)*(x^2+1)*(1+x);

expr := 
(x-3)*(x^2+1)*(1+x)

> expand(expr);

-2*x^3+x^4-2*x-2*x^2-3

> sort(%,x);

x^4-2*x^3-2*x^2-2*x-3

> restart;

X.2

> P:=X^4+2*X^3-4*X^2-5*X-6;

P := 
X^4+2*X^3-4*X^2-5*X-6

> factor(P);

(X-2)*(X+3)*(X^2+X+1)

Ceci est la factorisation de Gauss car X^2+X+1 n'a pas de racine réelle

> factor(P,complex);

(X+3.)*(X+.5000000000+.8660254038*I)*(X+.5000000000...

Remarquons que cette factorisation provoque une recherche numérique.

> factor(P,{I,sqrt(3)});

1/4*(2*X+1+I*sqrt(3))*(2*X+1-I*sqrt(3))*(X+3)*(X-2)...

C'est la bonne façon de s'en sortir, mais il faut avoir l'intuition que la factorisation fera intervenir des termes en I et en sqrt(3) .

> restart;

X.3

> A:=n->sin(2*a)*X^n-sin(n*a)*X^2+sin((n-2)*a);

A := proc 
(n) options operator, arrow; sin(2*a)*X^n...

> B:=X^2-2*cos(a)*X+1;

B := 
X^2-2*cos(a)*X+1

Essayons brutalement

> rem(A(n),B,X);

Error, (in quo) arguments must be 
polynomial in X

Bien sûr, on pouvait s'attendre à ce que le calcul en soit pas possible : le degré de A dépend de n. Faisons le calcul pour les dix premières valeurs de n

> for k from 1 to 10 do [k,rem(A(k),B,X)] od;

[1, 
(sin(2*a)-2*sin(a)*cos(a))*X]

[2, 0]

[3, 
sin(a)+sin(3*a)-2*sin(2*a)*cos(a)+(-sin(2*a)-2*...

[4, 
2*sin(2*a)+sin(4*a)-4*sin(2*a)*cos(a)^2+(-4*sin...

[5, 
sin(3*a)+sin(5*a)+4*sin(2*a)*cos(a)-8*sin(2*a)*...
[5, 
sin(3*a)+sin(5*a)+4*sin(2*a)*cos(a)-8*sin(2*a)*...

[6, 
sin(4*a)+sin(6*a)-sin(2*a)+12*sin(2*a)*cos(a)^2...
[6, 
sin(4*a)+sin(6*a)-sin(2*a)+12*sin(2*a)*cos(a)^2...

[7, 
sin(5*a)+sin(7*a)-6*sin(2*a)*cos(a)+32*sin(2*a)...
[7, 
sin(5*a)+sin(7*a)-6*sin(2*a)*cos(a)+32*sin(2*a)...

[8, 
sin(6*a)+sin(8*a)+sin(2*a)-24*sin(2*a)*cos(a)^2...
[8, 
sin(6*a)+sin(8*a)+sin(2*a)-24*sin(2*a)*cos(a)^2...

[9, 
sin(7*a)+sin(9*a)+8*sin(2*a)*cos(a)-80*sin(2*a)...
[9, 
sin(7*a)+sin(9*a)+8*sin(2*a)*cos(a)-80*sin(2*a)...

[10, 
sin(8*a)+sin(10*a)-sin(2*a)+40*sin(2*a)*cos(a)...
[10, 
sin(8*a)+sin(10*a)-sin(2*a)+40*sin(2*a)*cos(a)...
[10, 
sin(8*a)+sin(10*a)-sin(2*a)+40*sin(2*a)*cos(a)...

Cela ne nous dit pas grand chose. Mais on voit que par les formules de trigonométries, le premier reste est nul. Le second l'est aussi. Simplifions les expressions trouvées.

> for k from 1 to 10 do [k,combine(rem(A(k),B,X))] od;

[1, 0]

[2, 0]

[3, 0]

[4, 0]

[5, 0]

[6, 0]

[7, 0]

[8, 0]

[9, 0]

[10, 0]

Il semble que le reste soit nul... Ce n'est pas une preuve, mais c'est une conjecture légitime. Démontrons-le en montrant que les racines de B sont aussi racines de A.

> solve(B,X);

cos(a)+sqrt(cos(a)^2-1), cos(a)-sqrt(cos(a)^2-1)

proc (t) 
options operator, arrow; sqrt(t) end proc est bien définie sur l'ensemble C , c'est-à-dire qu'ici les racines sont exp(I*a) et son conjugué.

> rac1:=exp(I*a);rac2:=exp(-I*a);

rac1 := 
exp(I*a)

rac2 := 
exp(-I*a)

> `A(rac1)`:=subs(X=rac1,A(n));

`A(rac1)` := 
sin(2*a)*exp(I*a)^n-sin(n*a)*exp(I*a)^...

Attention ! Les accents entourant A(rac1) signifie que c'est un nom de variable, et rien d'autre. Remarquez qu'il est bien choisi, mais il ne suffit pas de l'écrire pour évaluer A en rac1, puisque A n'est pas une fonction de X mais une expression dépendant de X.

> assume(n,integer);

> combine(`A(rac1)`);

sin(2*a)*exp(I*a*n)-sin(n*a)*exp(2*I*a)+sin(n*a-2*a...

> evalc(%);

sin(2*a)*cos(n*a)-sin(n*a)*cos(2*a)+sin(n*a-2*a)

> combine(%);

0

A étant à coefficients réels, le conjugué de rac1 est aussi racine de A. B étant scindé dans C, de degré 2, on a montré que toutes les racines de B sont racines de A et donc que B divise A.

> restart;

X.4

> P:=X^4-2*X^3+X^2-2*X+1;

P := 
X^4-2*X^3+X^2-2*X+1

> factor(P);

X^4-2*X^3+X^2-2*X+1

> fsolve(P);

.5310100565, 
1.883203506

Il semble y avoir deux racines réelles, et donc deux racines complexes conjuguées (coefficients réels)

> solve(P);

RootOf(_Z^4-2*_Z^3+_Z^2-2*_Z+1,index = 1), RootOf(_...
RootOf(_Z^4-2*_Z^3+_Z^2-2*_Z+1,index = 1), RootOf(_...

Ainsi, il y a quatre racines non exprimées... Essayons de les exprimer avec allvalues

> allvalues(RootOf(P));

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

Les racines semblent s'exprimer avec sqrt(2)

> factor(P,sqrt(2));

(X^2-X-X*sqrt(2)+1)*(X^2-X+X*sqrt(2)+1)

Voilà qui est intéressant, mais pas complet puisqu'il semble y avoir deux racines réelles. Les racines s'expriment avec sqrt(2*sqrt(2)-1) .

> factor(P,sqrt(2*sqrt(2)-1));

1/4*(X^2-X+X*sqrt(2)+1)*(2*X-1+sqrt(-1+2*sqrt(2))-s...

Et voici la décomposition de Gauss de P

> restart;

X.5

> P:=X^(2*n)-n^2*X^(n+1)+2*(n^2-1)*X^n-n^2*X^(n-1)+1;

P := 
X^(2*n)-n^2*X^(n+1)+2*(n^2-1)*X^n-n^2*X^(n-1)+...

> Ptilde:=unapply(P,X);

Ptilde := 
proc (X) options operator, arrow; X^(2*n)...

> Ptilde(1);

0

> Ptildeprime:=D(Ptilde);

Ptildeprime 
:= proc (X) options operator, arrow; 2*...

> Ptildeprime(1);

2*n-n^2*(n+1)+2*(n^2-1)*n-n^2*(n-1)

> simplify(%);

0

> Ptildeseconde:=D(Ptildeprime);

Ptildeseconde := proc (X) options operator, arrow; ...
Ptildeseconde := proc (X) options operator, arrow; ...

> Ptildeseconde(1);

4*n^2-2*n-n^2*(n+1)^2+n^2*(n+1)+2*(n^2-1)*n^2-2*(n^...

> simplify(%);

0

> Ptilde3:=D(Ptildeseconde);

Ptilde3 := 
proc (X) options operator, arrow; 8*X^(2...
Ptilde3 := 
proc (X) options operator, arrow; 8*X^(2...
Ptilde3 := 
proc (X) options operator, arrow; 8*X^(2...

> Ptilde3(1);

8*n^3-12*n^2+4*n-n^2*(n+1)^3+3*n^2*(n+1)^2-2*n^2*(n...
8*n^3-12*n^2+4*n-n^2*(n+1)^3+3*n^2*(n+1)^2-2*n^2*(n...

> simplify(%);

0

> Ptilde4:=D(Ptilde3);

Ptilde4 := 
proc (X) options operator, arrow; 16*X^(...
Ptilde4 := 
proc (X) options operator, arrow; 16*X^(...
Ptilde4 := 
proc (X) options operator, arrow; 16*X^(...

> Ptilde4(1);

16*n^4-48*n^3+44*n^2-12*n-n^2*(n+1)^4+6*n^2*(n+1)^3...
16*n^4-48*n^3+44*n^2-12*n-n^2*(n+1)^4+6*n^2*(n+1)^3...

> simplify(%);

2*n^4-2*n^2

Ainsi, 1 est racine d'ordre 4 si cette expression est non nulle

> solve(%);

0, 0, 1, -1

On fait donc une étude directe pour les cas n=0 et n=1

> subs(n=0,P);

0

> subs(n=1,P);

0

Donc ces deux cas particuliers ne sont pas très intéressants, puisque P est le polynôme nul

> restart;

X.6

> P:=X^4+a*X^3+sqrt(3)*X^2+X+b;

P := 
X^4+a*X^3+sqrt(3)*X^2+X+b

> image:=subs(X=2+2*I,P);

image := 
(-16+16*I)*a+8*I*sqrt(3)-62+2*I+b

> assume(a,real);assume(b,real);

> solve(image);

{b = 
16*a-16*I*a-8*I*sqrt(3)+62-2*I, a = a}

> solve({Re(image),Im(image)},{a,b});

{a = 
-1/2*sqrt(3)-1/8, b = -8*sqrt(3)+60}

> assign(%);

Ceci permet l'affectation des valeurs obtenues aux inconnues a et b

> 'a'=a;'b'=b;

a = 
-1/2*sqrt(3)-1/8

b = 
-8*sqrt(3)+60

> P;

X^4+(-1/2*sqrt(3)-1/8)*X^3+sqrt(3)*X^2+X-8*sqrt(3)+...

> solve(P);

2+2*I, 
2-2*I, 1/4*sqrt(3)-31/16+1/16*sqrt(-911+8*sq...

> evalf(-911+8*sqrt(3));

-897.1435935

Ainsi il n'y a pas de racine réelle.

> factor(P);

-1/8*(X^2-4*X+8)*(-8*X^2+4*sqrt(3)*X-31*X+8*sqrt(3)...

Ceci est la décomposition de Gauss de P

> factor(P,{I,sqrt(-911+8*sqrt(3))});

1/256*(16*X+31+sqrt(-911+8*sqrt(3))-4*sqrt(3))*(-16...

Et cela la décomposition de d'Alembert.

> restart;

X.7

> P:=m->X^3+X^2+m*X+6;

P := proc 
(m) options operator, arrow; X^3+X^2+m*X+...

Première méthode.

> s:=[solve(P(m),X)];

s := 
[1/6*(36*m-656+12*sqrt(12*m^3-3*m^2-324*m+2988...
s := 
[1/6*(36*m-656+12*sqrt(12*m^3-3*m^2-324*m+2988...
s := 
[1/6*(36*m-656+12*sqrt(12*m^3-3*m^2-324*m+2988...
s := 
[1/6*(36*m-656+12*sqrt(12*m^3-3*m^2-324*m+2988...
s := 
[1/6*(36*m-656+12*sqrt(12*m^3-3*m^2-324*m+2988...

Même si le résultat n'est pas très esthétique, on a rangé toutes les racines dans une liste, et on va pouvoir les utiliser pour traduire les conditions et déterminerles valeurs de m qui conviennent.

> solve(s[1]+s[2]=s[1]*s[2],m);

-1/3*((-4*I*sqrt(3)-sqrt(3)+4+3*I)^2+20*I*(-4*I*sqr...
-1/3*((-4*I*sqrt(3)-sqrt(3)+4+3*I)^2+20*I*(-4*I*sqr...

> evalf(%);

-4.000000000+.1206682063e-8*I, -8.999999999-.402725...

> solve(s[1]+s[3]=s[1]*s[3],m);

-1/3*(-(-7/2-7/2*I*sqrt(3)+3/2*sqrt(14-14*I*sqrt(3)...
-1/3*(-(-7/2-7/2*I*sqrt(3)+3/2*sqrt(14-14*I*sqrt(3)...

> evalf(%);

-8.999999999+.1674404260e-8*I, -4.000000000-.544167...

> solve(s[3]+s[2]=s[3]*s[2],m);

-9

Vérifions que -4 et -9 conviennent.

> smoins9:=[solve(P(-9),X)];

smoins9 := 
[2, -3/2+1/2*sqrt(21), -3/2-1/2*sqrt(21)...

> smoins9[3]+smoins9[2]-smoins9[3]*smoins9[2];

-3-(-3/2-1/2*sqrt(21))*(-3/2+1/2*sqrt(21))

> simplify(%);

0

Et l'autre ?

> smoins4:=[solve(P(-4),X)];

smoins4 := 
[-3, 1+I, 1-I]

> smoins4[3]+smoins4[2]-smoins4[3]*smoins4[2];

0

Deuxième méthode.

> syst:={p+c=-1,p+p*c=m,p*c=-6};

syst := 
{p+c = -1, p+p*c = m, p*c = -6}

En utilisant les relations coefficients racines. où p est le produit des racines, abc les racines.

> solve(syst,{p,c,m});

{m = -9, p 
= -3, c = 2}, {m = -4, c = -3, p = 2}

On retrouve le même résultat. Trouvons les racines a et b correspondantes

> solve({a+b=-3,a*b=-3},{a,b});

{a = 
-RootOf(_Z^2+3*_Z-3,label = _L3)-3, b = RootOf...

> allvalues(%);

{a = 
-3/2-1/2*sqrt(21), b = -3/2+1/2*sqrt(21)}, {a ...

> solve({a+b=2,a*b=2},{a,b});

{b = 
RootOf(_Z^2-2*_Z+2,label = _L5), a = -RootOf(_...

> allvalues(%);

{a = 1-I, b 
= 1+I}, {b = 1-I, a = 1+I}

Troisième méthode.

> Ptilde:=unapply(P(m),X);

Ptilde := 
proc (X) options operator, arrow; X^3+X^2...

Ptilde := 
proc (X) options operator, arrow; X^3+X^2...

> solve({Ptilde(a),Ptilde(b),a+b=a*b},{a,b,m});

{b = 2, m = 
-9, a = 2}, {b = RootOf(_Z^2-2*_Z+2), a...
{b = 2, m = 
-9, a = 2}, {b = RootOf(_Z^2-2*_Z+2), a...

Et on a directement le résultat. C'est un peu plus élégant que la première méthode...