bts:xcas:fourier_1
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| bts:xcas:fourier_1 [2023/10/04 13:46] – supprimée - modification externe (Date inconnue) 127.0.0.1 | bts:xcas:fourier_1 [2024/10/17 09:16] (Version actuelle) – [Simplification incomplète] goupillwiki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Calcul formel avec Xcas ====== | ||
| + | |||
| + | ===== Qu'est ce que Xcas ===== | ||
| + | |||
| + | **giac** est une bibliothèque C++ de **calcul formel**. On peut l' | ||
| + | |||
| + | **Xcas** est une interface pour utiliser giac. Nous allons par exemple utiliser la version [[https:// | ||
| + | |||
| + | > 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. | ||
| + | |||
| + | <WRAP tip>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 [[https:// | ||
| + | |||
| + | <WRAP tip>Vous recevrez un popup demandant « //Restaurer la sauvegarde d' | ||
| + | |||
| + | {{ : | ||
| + | |||
| + | 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$ | ||
| + | |||
| + | <WRAP tip> | ||
| + | * 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' | ||
| + | * S'il y a plusieurs commandes, entrez les l'une après l' | ||
| + | </ | ||
| + | |||
| + | ==== Calculs directs ==== | ||
| + | |||
| + | Essayez : | ||
| + | <code lang-none> | ||
| + | 2pi/4 | ||
| + | </ | ||
| + | |||
| + | > Dans ce cas, $\pi$ est reconnu et le symbole de multiplication est optionnel. Mais le résultat ne se simplifie pas. | ||
| + | |||
| + | <code lang-none> | ||
| + | simplifier(2pi/ | ||
| + | </ | ||
| + | |||
| + | > Le résultat est simplifié. Remarquez que les commandes sont traduites en français. | ||
| + | |||
| + | ==== Affectation ==== | ||
| + | |||
| + | Essayez : | ||
| + | <code lang-none> | ||
| + | T := 4 | ||
| + | omega := 2pi/T | ||
| + | </ | ||
| + | |||
| + | > L' | ||
| + | |||
| + | ==== Calcul d' | ||
| + | |||
| + | Commençons par le calcul de $\displaystyle \int_0^1 t\cdot \cos(n\omega t)dt$ | ||
| + | |||
| + | <code lang-none> | ||
| + | integrer(t*cos(n*omega* t), t, 0, 1) | ||
| + | </ | ||
| + | |||
| + | Détaillons les arguments de la fonction '' | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | <WRAP tip> | ||
| + | |||
| + | Le résultat précédent semble compliqué. On voudrait simplifier : | ||
| + | |||
| + | <code lang-none> | ||
| + | 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$. | ||
| + | |||
| + | <code lang-none> | ||
| + | f(t): | ||
| + | </ | ||
| + | |||
| + | Détaillons : | ||
| + | * si '' | ||
| + | * sinon ce sera '' | ||
| + | |||
| + | Maintenant on peut calculer : | ||
| + | |||
| + | <code lang-none> | ||
| + | simplifier(integrer(f(t)*cos(n*omega*t), | ||
| + | </ | ||
| + | |||
| + | 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' | ||
| + | |||
| + | < | ||
| + | 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. | ||
| + | |||
| + | <code lang-none> | ||
| + | a(n) := integrer(f(t)*cos(n*omega*t), | ||
| + | </ | ||
| + | |||
| + | On peut maintenant calculer, par exemple : | ||
| + | <code lang-none> | ||
| + | a(3) | ||
| + | </ | ||
| + | |||
| + | Il s'agit d'une valeur **exacte !** | ||
| + | |||
| + | On peut évaluer : | ||
| + | <code lang-none> | ||
| + | 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 : | ||
| + | <code lang-none> | ||
| + | evalf(a(3), 4) | ||
| + | </ | ||
| + | |||
| + | On peut aussi simplement arrondir, par exemple à 5 chiffres après la virgule : | ||
| + | <code lang-none> | ||
| + | round(a(3), 5) | ||
| + | </ | ||
| + | |||
| + | ==== Afficher une liste ==== | ||
| + | |||
| + | On peut donc afficher la valeur de n' | ||
| + | <code lang-none> | ||
| + | seq(a(n), n, 1, 10) | ||
| + | </ | ||
| + | |||
| + | > Calcul de '' | ||
| + | |||
| + | L' | ||
| + | |||
| + | <code lang-none> | ||
| + | seq([n, a(n), round(a(n), 5)], n, 1, 10) | ||
| + | </ | ||
| + | |||
| + | Et voilà ! | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
