Ceci est une ancienne révision du document !
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 1 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 172
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Warning: Undefined array key 2 in /home/goupillf/wiki.goupill.fr/lib/plugins/codeprettify/syntax/code.php on line 214
Table des matières
Calcul formel avec Xcas
Qu'est ce que Xcas
giac est une bibliothèque C++ de calcul formel. On peut l'utiliser de différentes façons.
Xcas est une interface pour utiliser giac. Nous allons par exemple utiliser la version Firefox de Xcas qui permet de travailler avec giac sans rien installer, juste avec le navigateur.
Testé sur Firefox, Chrome, Chromium
On peut aussi installer Xcas comme application sur le téléphone. Par ailleurs, des calculatrices utilisent giac comme la TI-inspire ou la Numworks.
Je n'ai pas encore explicité ce qu'on entend par calcul formel. Cela va devenir évident dans la suite.
Lancer la console
Rendez-vous sur Xcas en ligne.
Vous recevrez un popup demandant « Restaurer la sauvegarde d'urgence ? ». Cela permet de récupérer un travail antérieur. Pour l'instant nous n'avons rien fait donc cliquez « Annuler »
Cliquez sur le terminal entouré en rouge.
Vous êtes dans la console :
La flèche indique la zone de saisie. C'est là que vous allez pouvoir ajouter des commandes.
Exemple de calcul
Nous étudions une fonction $f$ paire, de période $T = 4$ et définie sur $[0\,;\,2]$ par $f(t) = \begin{cases}t\text{ si } 0 \leq t < 1\\1 \text{ si } 1 \leq t \leq 2\end{cases}$
On sait que $\omega = \dfrac{2\pi}{T}$
On voudrait calculer $a(n) = \displaystyle \int_0^2 f(t) \cos(n\omega t)\,dt,$ avec $n$ entier $>0$
- Dans ce qui suit, les commandes sont toujours écrites dans la console. Tapez Entrée pour exécuter la commande.
- Vous aurez parfois besoin de réécrire presque la même chose qu'une commande précédente. Vous pouvez utiliser la flèche ↑ pour rappeler cette commande.
- Si vous vous trompez, ce n'est pas grave. Pas besoin d'effacer l'erreur ou de recommencer dès le début. Réécrivez la commande corrigée dans une nouvelle ligne et continuez.
- S'il y a plusieurs commandes, entrez les l'une après l'autre en validant à chaque fois.
Calculs directs
Essayez :
2pi/4
Dans ce cas, $\pi$ est reconnu et le symbole de multiplication est optionnel. Mais le résultat ne se simplifie pas.
simplifier(2pi/4)
Le résultat est simplifié. Remarquez que les commandes sont traduites en français.
Affectation
Essayez :
T := 4 omega := 2pi/T
L'affectation utilise:=, faites-y attention ;omegasera automatiquement compris comme le symbole $\omega$ ; l'expression pourra s'afficher différemment selon si fait une affectation ou non.
Calcul d'intégrale
Commençons par le calcul de $\displaystyle \int_0^1 t\cdot \cos(n\omega t)dt$
integrer(t*cos(n*omega* t), t, 0, 1)
Détaillons les arguments de la fonction integrer :
t*cos(n*omega* t): c'est l'expression de ce qui est intégré, sans le $dt$.t: c'est la variable d'intégration. En gros, c'est le $dt$.0et1: ce sont les bornes d'intégration.
Maintenant vous devriez comprendre ce qu'est le calcul formel : on fait le calcul de façon exacte même s'il y a des symboles.
Le résultat précédent semble compliqué. On voudrait simplifier :
simplifier(integrer(t*cos(n*omega* t), t, 0, 1))
Mais le résultat n'est pas très satisfaisant. La simplification est automatique et elle ne prend pas toujours la forme que l'on préférerait.
Intégrale complète
Je vous rappelle que l'on voulait calculer $\displaystyle \int_0^2 f(t) \cos(n\omega t)\,dt$ avec $f(t) = \begin{cases}t\text{ si } 0 \leq t < 1\\1 \text{ si } 1 \leq t \leq 2\end{cases}$
Il faut donc calculer : $$\displaystyle \int_0^1 t\cdot \cos(n\omega t)dt + \int_1^2 1\cdot \cos(n\omega t)dt$$
Trouvez vous-même la bonne commande en vous inspirant de la précédente.
Pensez à simplifier, cette fois cela donne un bon résultat.
Définir la fonction
Il est possible de faire mieux en définissant la fonction $f$.
f(t):=piecewise(t<1,t,1)
Détaillons :
- si
t<1, alors ce serat, - sinon ce sera
1
Maintenant on peut calculer :
simplifier(integrer(f(t)*cos(n*omega*t),t,0,2))
Le résultat est satisfaisant.
Simplification incomplète
giac simplifie une partie du calcul mais il ne voit pas certaines simplifications : on sait que $\sin(n\pi) = 0$. On pourrait donc simplifier ce terme.
Pourquoi giac ne le voit-il pas ?
giac ne sait pas que $n$ est un entier. $\sin(n\pi) = 0$ uniquement si $n$ est entier.
Évaluer
On voulait calculer $a(n) = \displaystyle \int_0^2 f(t) \cos(n\omega t)\,dt$ et on aimerait calculer quelques valeurs et faire un tableau de valeur.
a(n) := integrer(f(t)*cos(n*omega*t),t,0,2)
On peut maintenant calculer, par exemple :
a(3)
Il s'agit d'une valeur exacte !
On peut évaluer :
evalf(a(3))
f signifie flottant. C'est le terme informatique utilisé pour les nombres à virgules.
On peut préciser le nombre de chiffres significatifs désirés :
evalf(a(3), 4)
On peut aussi simplement arrondir, par exemple à 5 chiffres après la virgule :
round(a(3), 5)
Afficher une liste
On peut donc afficher la valeur de n'importe quel $a(n)$. On peut faire mieux : obtenir directement un tableau de valeurs :
seq(a(n), n, 1, 10)
Calcul dea(n)pournallant de1à10
L'affichage n'est pas terrible. On voudrait un tableau avec la valeur de $n$ en face de $a(n)$ et de l'approximation de $a(n)$ à 5 chiffres.
seq([n, a(n), round(a(n), 5)], n, 1, 10)
Et voilà !


