Outils pour utilisateurs

Outils du site


bts:xcas:fourier_1

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 ; omega sera 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$.
  • 0 et 1 : 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 sera t,
  • 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.

Il est possible d'indiquer que $n$ est un entier :

assume(n, integer)

É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 de a(n) pour n allant de 1 à 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à !

bts/xcas/fourier_1.txt · Dernière modification : de goupillwiki