\section*{Un peu de graphisme} Pour les graphiques, on n'admet qu'une seule commande dans \cm{giac{...}}. Il n'y a pas encore d'options (couleurs, epaisseur de ligne, taille, déscriptions, grille... mais ça va s'arranger...). \giac{plot(sin(x)/x, x=-2*pi..2*pi);} \giac{paramplot([cos(t), sin(t)], t=0..2*pi)} \giac{xx := [seq( rand(0,1), j=1..15)]:;} \giac{listplot(xx)} \giac{xx := [ seq( [rand(0,1), rand(0,1)], j=1..500)]:;} \giac{scatterplot(xx)} Pour des nuages plus lourds il vaut mieux ne pas appeler \cm{scatterplot} mais traiter directement son argument. On peut le faire avec \cm{py\_scatterplot} : \giac{xx := [ seq( [rand(0,1), rand(0,1)], j=1..5000)]:;} \giac{py_scatterplot(xx)} \section*{Factorisation} On se propose d'afficher la forme factorisée du polynôme \giac**{p:=x^5-1} dans $\C$. %On définit donc %giac{p := x^5-1 } Il est clair que \giac**{p} possède une racine réelle $x=1$. \giac{plot(p, x=-2..2);} En fait, l'échelle n'est pas très bien choisie. On refait donc \giac{plot(p, x=-1..1.5);} Factorisation de \giac*{p} dans le corps des entiers : \giac{s:=factor(p) } Et si on cherchait les racines ? \giac{csolve(p=0,x) } Ce n'est pas ce qu'on cherche... Ce n'est pas toujours évident de résoudre les équations de degré 5. Voyons si le second terme a des racines réelles. \giac{s2 := s[2] } \giac{plot(s2, x=-1..1); } \giac{plot(s2, x=-3..3); } \giac{plot(s2, x=-10..10); } Apparemment non. Bien. On sait pourtant que tout polynôme de degré 4 peut être factorisé dans $\R$. Ce n'est pas difficile, surtout si c'est le logiciel qui fait le calcul ! Définissons \giac**{q:= (A*x^2+ B*x+C)*(D*x^2+E*x+F)}. En développant, on obtient \giac*{expand(q)}. Voici les coefficients de deux polynômes à comparer: \giac{L1:= coeffs(s2,x)} \giac{L2:= coeffs(q,x)} On obtient donc les équations suivantes : \giac{eq0:= L1[0] = L2[0]} \giac{eq1:= L1[1] = L2[1]} \giac{eq2:= L1[2] = L2[2]} \giac{eq3:= L1[3] = L2[3]} Est-ce que \cm{solve} peut résoudre un tel système? \giac{solve([eq0,eq1,eq2,eq3],[A,B,C,D,E,F])} Apparemment non. Enfin, ceci n'est pas un système linéaire. On va donc chercher une solution sous une forme plus simple. Supposons que \giac**{A:=1} et \giac**{D:=1} \giac{solve([eq1,eq2,eq3],[B,C,E,F])} Toujours rien. Bien, on a trois équations à quatre inconnues. On peut encore supposer que \giac**{F:=1}. Il vient : \giac*{eq1}, \giac*{eq2}, \giac*{eq3}. \giac{sol:=solve([eq1,eq2,eq3],[B,C,E]);} Ca y est ! On remarque qu'un point-virgule à la fin de commande provoque l'affichage direct (tel que dans xcas, sans mise en forme). Sans le point-virgule on obtient la forme matricielle (mise en forme latex) : \giac*{solve([eq1,eq2,eq3],[B,C,E])} Mais en fait, en supposant $F=1$ on n'obtient pas un système équivalent. On veut donc maintenant tester si les coefficients trouvés donnent une factorisation de \giac*{s2} : \giac{q2:=subst(q,[B=1,C=0,E=0])} \giac{expand(q2)} \giac{coeffs(q2)} Evidemment, ce n'est pas ça... Vérifions alors l'autre solution. En fait, on peut remarquer que par symétrie des coefficients, les deux dernieres lignes représentent les mêmes polynômes. \giac{q2:=subst(q,[B=sol[1][0],C=sol[1][1],E=sol[1][2]])} Il faut encore développer : \giac*{expand(q2)}. Si ce n'est pas encore évident, on peut simplifier cette expression à l'aide de \cm{simplify} : \giac{simplify(q2)} ou encore déterminer ses coefficients avec \cm{coeff} : \giac*{ simplify(coeffs(q2) )}. Ca marche ! On veut maintenant retrouver cette factorisation en utilisant \cm{factor} avec une extension \giac*{sqrt(5)}. \giac{s:=factor(x^5-1,sqrt(5)) } OK, mais il y a paraît-il des facteurs complexes. Retrouvons la factorisation dans $\R$. Dans ce but, on va extraire les facteurs : \giac{s1:=s[1]; s2:=s[2]; s3:=s[3]} \giac{s4:=s[4]; s5:=s[5]} Une digression technique : en fait une ligne "multi-commande" n'est pas transformée en LaTeX. Cette syntaxe est donc à éviter sauf si on veut faire des calculs sans rien afficher. Reprenons : \giac{s1, s2, s3} (pour une meilleure lisibilité, on affiche un facteur par ligne) \giac{s2} \giac{s3} \giac{s4} \giac{s5} % remarque encore plus technique : il fallait un espace entre les commandes giac; % peut-etre il faudra soigner envore le decoupage de la source On retrouve plus facilement les facteurs conjugués sous forme "float" \giac{evalf(s)} Il vient \giac{simplify(expand(s2*s4))} \giac{simplify(expand(s3*s5))} Dans ce cas, \cm{normal} est plus efficace : \giac{s24:=normal(expand(s2*s4))} \giac{s35:=normal(expand(s3*s5))} Finalement, on peut afficher la factorisation : \giac{s1*s24*s35} L'ultime vérification : \giac{normal(s1*s24*s35)} % Une liste de coeefs: % %giac{simplify(coeffs(expand(s2*s4)))} % %giac{coeffs(expand(s3*s5))} % Une tentative de réécrire selon les puissances: % %giac{expand(poly2symb(coeffs(expand(s2*s4))))} % %giac{expand(poly2symb(coeffs(expand(s3*s5))))} ----------- \subsubsection*{Quelques tests de plus} boucles, calculs multi-lignes, lignes multi-commandes... : \giac{restart} \giac{s:=factor(x^5-1) :; s1:=s[1] :; s2:=s[2] :; } \giac{s1*s2} A little little program. Remark the curly brackets (not sure whether this could be handled with regular expressions). \giac{s:=0:; for(j :=1; j<=10; j++) {s += j;} } This poses a problem of latex formatting. Multiline command. At this stage, the newline characters are deleted and multiple spaces squeezed to a single space. Hence it is mandatory to separate commands with semicolons. \giac{s:=0:; for(j :=1; j<=10; j++) {s++;} }