Un tableur utilise des feuilles de calcul qui sont des tableaux où chaque cellule peut intégrer des valeurs numériques mais surtout des expressions de calcul à partir d'autres cellules individuelles ou ensemble de cellules. Il existe de nombreux logiciels tableurs, on présentera ici quelques logiciels tels que sc tableur en mode texte, gnumeric, calligra sheets de la suite Calligra ou encore libreoffice calc le tableur de la suite logicielle Libreoffice.
A | B | C | D | |
---|---|---|---|---|
1 | ||||
2 | ||||
3 | ||||
4 | ||||
5 | ||||
6 | ||||
7 | ||||
8 |
Une feuille de calcul est composée de lignes identifiées par un numéro et de colonnes identifiées par une lettre de l'alphabet. Chaque élément, nommé cellule, est identifié par le couple lettre,chiffre, comme par exemple B2 pour la cellule de la deuxième ligne et de la deuxième colonne.
Chaque cellule peut contenir du texte, une valeur numérique, ou une expression de calcul numérique en fonctions d'autres cellules. Une expression de calcul peut être composée d'opérateurs d'addition, soustraction, multiplication, division ou de fonctions mathématiques comme la racine carrée, l'exponentielle, ... . Cette expression de calcul commence par le signe =.
Les références aux cellules, peuvent être une seule cellule, une liste de références séparées par un ; ou encore une suite de cellule séparées par : .
Exemples d'expression de calcul :
Il faut, bien évidement, que l'expression d'une cellule ne fasse pas référence à une cellule qui contient une référence à cette première cellule. On ne peut pas écrire dans la cellule C2 l'expression =B1+C1, et dans la cellule B1 l'expression =C2/C3, dans ce cas on a une expression circulaire qui génère une erreur.
On va utiliser une feuille de calcul pour effectuer le calcul du résultat d'une élection fictive présentée au chapitre sur la proportionnalité :
A | B | C | D | |
---|---|---|---|---|
1 | Inscrits | 1190 | ||
2 | Résultats institutionnels | Représentativité | ||
3 | Votants | 500 | ||
4 | Blancs et nuls | 100 | 8,40% | |
5 | Candidat 1 | 201 | 50,25% | 16,89% |
6 | Candidat 2 | 199 | 49,75% | 16,72% |
7 | Suffrages exprimés | 400 | 33,61% | |
8 | Abstention | 690 | 57,98% | 57,98% |
A | B | C | D | |
---|---|---|---|---|
1 | Inscrits | 1190 | ||
2 | Résultats institutionnels | Représentativité | ||
3 | Votants | 500 | ||
4 | Blancs et nuls | 100 | =B4/B1 | |
5 | Candidat 1 | 201 | =B5/B7 | =B5/B1 |
6 | Candidat 2 | 199 | =B6/B7 | =B6/B1 |
7 | Suffrages exprimés | =B3-B4 | =B7/B1 | |
8 | Abstention | =B1-B3 | =B8/B1 | =B8/B1 |
L'affichage en pourcentage est un format d'affichage pas de calcul qui reste une division. La colonne "résultats institutionnels" montrent les résultats qui sont pris en compte. La colonne "représentativité" prend en compte l'ensemble les résultats tels qu'ils sont comptabilisés dans les bureaux de votes, à un détail près, le fait que les bulletins blancs et nuls sont comptabilisés séparément.
L'affichage en pourcentage est un format d'affichage pas de calcul qui reste une division. La colonne "résultats institutionnels" montrent les résultats qui sont pris en compte. La colonne "représentativité" prend en compte l'ensemble les résultats tels qu'ils sont comptabilisés dans les bureaux de votes, à un détail près, le fait que les bulletins blancs et nuls sont comptabilisés séparément.
A | B | C | D | E | F | G | H | |
---|---|---|---|---|---|---|---|---|
1 | Désignation | Consommation annuelle (kWh) | PUHT | PTHT | TVA 5,5 % | TVA 20 % | PTTC | Répartition |
2 | Abonnement | 112,45 € | 6,18 € | 118,63 € | 34,01 % | |||
3 | Consommation | 1232 | 0,11 € | 135,52 € | 27,10 € | 162,62 € | 46,62 % | |
4 | Taxes et Contributions (TCFE et CSPE) | 1232 | 0,03 € | 36,96 € | 7,39 € | 44,35 € | 12,71 % | |
5 | Contribution (CTA) | 22,00 € | 1,21 € | 23,21 € | 6,65 % | |||
6 | Total | 306,93 € | 7,39 € | 34,50 € | 348,82 € |
Les tableurs permettent de tracer des courbes à partir d'une suite de données, on présente ici des logiciels dédiés au tracé de courbes, d'histogrammes. On continue de présenter des logiciels libres tels que geogebra ou gnuplot.
Pour apprendre à utiliser ce logiciel il est conseillé de suivre les tutoriels disponibles ici.
On va utiliser le logiciel pour étudier le triangle et le théorème de Thalès et de Pythagore. On va également utiliser ce logiciel pour tracer les courbes représentatives des fonctions au chapitre plus de mathématiques.
Pour tous les graphiques de geogebra, la grille est au pas de 5mm, ce qui correspond à une feuille à petits carreaux.
On trace un exemple de triangle avec le logiciel. Après avoir placé tous les points, on ajoute la hauteur, les mesures des côtés et de la hauteur, les angles ainsi que la surface.
On peut vérifier la valeur de la surface : ou encore avec l'autre formule : avec ce qui donne S≈11,99 en utilisant une suite de calculs approchés.
On peut vérifier la somme des angles qui vaut 68,9+41,6+69,4=179,9 ≈ 180, le théorème de Pythagore avec la relation b2=AH2+h2=4,52+42=36.25 et b2=6.022=36,2404
On peut également vérifier les règles de trigonométries :
Bien sûr, il est possible de faire d'autres calculs, avec l'autre triangle rectangle
En rappelant que la médiatrice d'un segment AB est la droite perpendiculaire à ce segment qui passe en son milieu, on va tracer les trois médiatrices des côtés du triangle.
On positionne maintenant le point (O) d'intersection de ces trois médiatrices, on peut vérifier que ce point O est le centre d'un cercle qui passe par les trois sommets du triangle, on parle de cercle circonscrit.
Les dimensions du triangle sont identiques à celle du triangle de la figure précédente qui n'est pas tout à fait isocèle, ce qui explique que la médiatrice du segment BC ne passe par par le point A.
On modifie le triangle afin qu'il soit rectangle en C, puis on trace à nouveau les médiatrices, on remarque que le point d'intersection est situé au milieu du segment AB. Ce segment est donc, dans ce cas, le diamètre du cercle circonscrit.
Cette figure vérifie le second théorème de Thalès, déjà présenté au chapitre sur la géométrie.
En rappelant que la bissectrice est une demi-droite qui partage un angle en deux angles égaux.
Sur le triangle, on va donc tracer les bissectrices des trois angles. Ces trois droites se croisent au même point O qui est le centre du cercle inscrit.
Sur cette figure, on trace une droite parallèle au côté BC, on va pouvoir ainsi vérifier le premier théorème de Thalès sur les triangles semblables.
Les relations du théorèmes de Thalès sont vérifiées :
On trace la courbe d'équation
Le point A(-2,-1) est le point d'inflexion de la courbe qui représente un changement de concavité de la courbe, c'est à dire un changement de sens de courbure de la courbe.
Ce point peut se calculer à partir de l'équation : f''(x)=0 avec f'' qui est la dérivée seconde.
f''(x)=0 donne la solution x=-2 et f(-2)=-1 qui correspond au coordonnées du point A.
On trace la courbe d'équation
Sur cette courbe on a une tangente horizontale aux points 1 et B ce qui correspond à un minimum et un maximum dans ce cas.
L'équation de la tangente à une courbe en un point x0 est une droite d'équation : . La pente de cette tangente est la valeur de la dérivée au point x0 : f(x0).
La tangente horizontale correspond donc à une pente nulle, c'est à dire là où la dérivée de la fonctions s'annule, on va donc chercher les racines de la dérivée :
on calcule qui donne deux racines réelles qui sont , qui donne les valeurs x1≈-3,15 et x2≈-0.85
Ces deux valeurs de x correspondent respectivement aux abscisses des points A et B qui correspondent aux deux tangentes horizontales à la courbe.
On trace les fonctions trigonométriques et
On peut vérifier les propriétés des fonctions sinus et cosinus :
En sachant que la fonction dérivée représente la pente en chaque point de la fonction, on également vérifier les dérivées des fonctions sinus et cosinus
Le logiciel gnuplot permet de tracer des courbes à partir d'une suite de commandes qui peut être saisie en ligne ou bien enregistrées dans un fichier. L'ensemble des commandes sont disponibles sur la documentation de gnuplot en version en ligne ou téléchargeable en PDF.
Les graphiques peuvent être affichés à l'écran ou bien enregistrés dans un fichier. Les principales commandes nécessaires au tracé d'une courbe sont :
On va tracer les fonctions présentées dans le paragraphe précédent sur geogebra.
reset
# définition de la fonction
a=1
b=6
c=16
d=15
f(x)=a*x**3 + b*x**2 + c*x + d
# valeurs maximales de l'axe x
xmin=-6.5
xmax=2.5
# initialisation de la sortie sur l'écran
set terminal X11 0
# ou bien dans un fichier
#set terminal png size 1200,1200
#set output "fonctiondegre3.png"
# titre du graphique (attention aux accents)
set title "Fonction degre 3"
# etiquette axe x et y
set xlabel "x"
set ylabel "f(x)"
# ajout d'une grille
set grid
# définition des maximum d'affichage de l'axe x
set xr [xmin:xmax]
# affichage de la fonction avec un trait
# de largeur 2 pixels et de couleur bleue
plot f(x) lw 2 lc "blue"
# dans un fichier script pour attendre
# la fermeture manuelle de la fenêtre
pause -1
La commande set, suivie de paramètres, permet de définir la configuration du graphique
La commande plot permet d'afficher une ou plusieurs courbe
La commande pause suivi d'un temps en secondes, définit le temps d'affichage de la fenêtre graphique, -1 correspond à un temps infini.
reset
a=-1
b=-6
c=-8
d=-1
f(x)=a*x**3 + b*x**2 + c*x + d
xmin=-8
xmax=3.5
set terminal X11 0
set title "Fonction degre 3"
set xlabel "x"
set ylabel "f(x)"
set grid
set xr [xmin:xmax]
plot f(x) lw 2 lc "blue"
pause -1
reset
f(x)=sin(x)
g(x)=cos(x)
xmin=0
xmax=2*pi
set terminal X11 0
set title "fonctions cosinus et sinus"
set xlabel "x"
set ylabel "f(x)"
set grid
set xr [xmin:xmax]
plot f(x) lw 2 lc "blue",g(x) lw 2 lc "red"
pause -1
reset
set terminal X11 0
set title "Resultats d'elections en %"
set grid
set style fill pattern 1
set style histogram clustered
set style data histograms
set ylabel "%"
plot "elections.txt" using 3:xtic(1) lw 3 lc "#008000" t "%" axes x1y1
pause -1
Ce type de logiciel permet de faire des calculs mathématiques littéral comme le calcul de dérivée de fonction, de résoudre des équations ou des systèmes d'équations. On va s'intéresser ici au logiciel libre maxima. Il est possible de télécharger maxima pour les différentes plateformes.
Les possibilités de maxima sont importantes, on va donc présenter quelques exemples.
On va calculer les exemples du chapitre qui traite des opérations sur les polynômes.
On vérifie les multiplications des polynômes avec la commande expand(expression); avec expression qui est le produit de polynômes
(%i5) expand((3*x^3-x^2+4*x+5)*(x+1)); 4 3 2 (%o5) 3 x + 2 x + 3 x + 9 x + 5
(%i8) expand((2*x^3-x^2+3*x+4)*(2*x+1)); 4 2 (%o8) 4 x + 5 x + 11 x + 4
On vérifie les divisions des polynômes
(%i13) divide(x^5-x^4-x^3+3*x^2-2*x,x^2-x+1); 3 (%o13) [x - 2 x + 1, x - 1]
(%i14) divide(x^4+4*x^3+6*x^2+4*x+1,x+1); 3 2 (%o14) [x + 3 x + 3 x + 1, 0]
On va calculer les exemples du chapitre qui traite du calcul des racines des polynômes. On utilise la commande allroots(expression); où expression représente le polynôme. Les résultats numériques peuvent être approchés.
(%i15) allroots(x^3+6*x^2+11*x+6); (%o15) [x = - 0.9999999999999995, x = - 2.0, x = - 3.000000000000001]
(%i16) allroots(x^3+3*x^2+3*x+1); (%o16) [x = 1.260920966343442E-5 %i - 0.9999874799859038, x = (- 1.260920966343442E-5 %i) - 0.9999874799859038, x = - 1.000025040028192]
Les racines permettent d'obtenir la factorisation que l'on peut également obtenir avec la commande factor(expression); où expression représente le polynôme à factoriser.
(%i11) factor(x^3+6*x^2+11*x+6); (%o11) (x + 1) (x + 2) (x + 3)
(%i12) factor(2*x^3+10*x^2+16*x+8); 2 (%o12) 2 (x + 1) (x + 2)
Dans le cas de racines complexes conjuguées, la commande allroots fournit les valeurs des racines complexes tandis que la commande factor donne le polynôme de degré 2 qui correspond à ces racines complexes.
(%i18) allroots(x^3+2*x^2+2*x+1); (%o18) [x = 0.8660254037844405 %i - 0.5000000000000003, x = (- 0.8660254037844405 %i) - 0.5000000000000003, x = - 0.9999999999999993]
(%i17) factor(x^3+2*x^2+2*x+1); 2 (%o17) (x + 1) (x + x + 1)
Remarque : la commande factor permet également d'effectuer une décomposition d'un nombre en produit de facteurs premiers.
(%i3) factor(333); 2 (%o3) 3 37 (%i4) factor(242); 2 (%o4) 2 11
(%i1) factor(490); 2 (%o1) 2 5 7 (%i2) factor(2520); 3 2 (%o2) 2 3 5 7
On peut calculer la dérivée d'une fonction exprimée sous sa littérale sans valeur numérique avec la commande diff(expression,variable); où expression représente la fonction et variable le symbole de la variable dans l'expression de la fonction.
(%i1) diff(a*x^2+b*x+c,x); (%o1) 2 a x + b (%i4) diff((x+a)*(x+b),x); (%o4) 2 x + b + a
(%i2) diff(sin(x),x); (%o2) cos(x) (%i3) diff(sin(2*x+1),x); (%o3) 2 cos(2 x + 1)
On utilise ici un exemple du chapitre qui traite du tracé des fonctions. On étudie la fonction polynomiale :
On calcule les limites avec la commande limit(expression,variable,limite); où expression représente la fonction, variable le nom utilisé pour représenter la variable dans l'expression et limite la valeur de la limite à calculer qui vaut minf pour -∞ et inf pour +∞.
On calcule la dérivée avec la commande diff(expression,variable); présentée auparavant.
On calcule les racines de la dérivée pour le tableau de variation avec la commande allroots déjà étudiée auparavant.
On évalue la fonction aux racines de la dérivée, en définissant une fonction f(x):=expression; pour ensuite l'utiliser calculer les valeurs particulières de x.
On utilise plot2d(nom de la fonction,intervale x); où le nom de la fonction est celui déjà défini pour calculer les valeurs et l'intervalle les valeurs minimales et maximales de la variable de la fonction.
Calcul des limites, de la dérivée, des racines de la dérivée, de la valeur de la fonction pour ces points, puis tracé de la courbe.
(%i2) limit(-x^3-6*x^2-8*x-1,x,minf); (%o2) inf (%i1) limit(-x^3-6*x^2-8*x-1,x,inf); (%o1) minf (%i3) diff(-x^3-6*x^2-8*x-1,x); 2 (%o3) (- 3 x ) - 12 x - 8 (%i4) allroots(-3*x^2-12*x-8); (%o4) [x = - 0.8452994616207484, x = - 3.154700538379252] (%i5) f(x):=-x^3-6*x^2-8*x-1; 3 2 (%o5) f(x) := (- x ) - 6 x + (- 8) x - 1 (%i6) f(-0.845); (%o6) 2.079201125 (%i7) f(-3.15); (%o7) - 4.079125000000001 (%i11) plot2d(f(x),[x,-7,3]); (%o11) [/tmp/maxout24094.gnuplot_pipes]
Courbe tracée avec la fonction plot2d de maxima.
On propose de résoudre les systèmes du chapitre système d'équations. Pour cela on utilise la commande solve([liste equations],[liste variables]) ou liste equations représente la liste des équations séparées par des virgules et liste des variables est la liste des variables séparées par des virgules
(%i1) solve([5*x-2*y-z=8,-4*x+y-2*z=-8,x+2*y-z=-4],[x,y,z]); (%o1) [[x = 1, y = - 2, z = 1]]
(%i2) solve([-3*x-5*y+2*z=-3,4*x+4*y-4*z=-4,-x+y+2*z=7],[x,y,z]); solve: dependent equations eliminated: (3) 3 %r1 - 8 %r1 - 6 (%o2) [[x = ---------, y = - -------, z = %r1]] 2 2
On propose d'effectuer les inversions de matrices du chapitre sur les matrices. On va commencer par définir une matrice avec la commande nom:matrix([ligne],[ligne],...) où les coefficients de chaque ligne sont représentés entre crochets. En suite on inverse la matrice en utilisant la notation puissance qui est composés de deux symboles ^^ suivi de la puissance -1. Il faut noter que le logiciel est capable de calculer une expression littérale composée uniquement de symboles.
(%i3) A:matrix([a,b],[c,d]); [ a b ] (%o3) [ ] [ c d ] (%i4) A^^-1; [ d b ] [ --------- - --------- ] [ a d - b c a d - b c ] (%o4) [ ] [ c a ] [ - --------- --------- ] [ a d - b c a d - b c ]
(%i5) A:matrix([0,-1,4],[0,5,-3],[-3,-3,-3]); [ 0 - 1 4 ] [ ] (%o5) [ 0 5 - 3 ] [ ] [ - 3 - 3 - 3 ] (%i6) A^^-1; [ 8 5 1 ] [ - -- - -- - - ] [ 17 17 3 ] [ ] [ 3 4 ] (%o6) [ -- -- 0 ] [ 17 17 ] [ ] [ 5 1 ] [ -- -- 0 ] [ 17 17 ]
Les logiciels de calcul scientifique permettent de faire des calculs numériques très complexes. On présente ici le logiciel libre octave et aussi scilab créé par l'INRIA.
On propose d'effectuer les opérations sur les polynômes. En général les polynômes sont représentés par des vecteurs lignes.
Avec Scilab les coefficients sont représentés par puissances croissantes. La fonction poly(vecteur,variable,type) permet de créer un objet polynôme où le vecteur correspond aux coefficients ou bien aux racines du polynôme, la variable est le nom donné à la variable (ex 'x') et enfin la lettre 'c' pour préciser que les valeurs du vecteur correspondent aux coefficients du polynôme. Enfin disp() permet d'afficher le polynôme.
Le code du fichier poly_addition.sce est :p1=poly([5 4 -1 3],'x','c'); disp(p1); p2=poly([1 1 2],'x','c'); disp(p2); S=p1+p2; disp(S);
exec('poly_addition.sce',-1) 5 +4x -x² +3x³ 1 +x +2x² 6 +5x +x² +3x³
Avec Octave les coefficients sont représentés par puissances décroissantes. Les vecteurs doivent avoir la même taille, il faut donc compléter avec des 0. La fonction polyout(vecteur) permet d'afficher le vecteur sous la forme d'un polynôme. Le code du fichier poly_addition.m est :
p1=[3 -1 4 5]; p2=[0 2 1 1]; polyout(p1,'x') polyout(p2,'x') S=p1+p2; polyout(S,'x')
>> poly_addition 3*x^3 - 1*x^2 + 4*x^1 + 5 0*x^3 + 2*x^2 + 1*x^1 + 1 3*x^3 + 1*x^2 + 5*x^1 + 6 >>
Avec Scilab, le ficier poly_multiplication.sce est :
p1=poly([5 4 -1 3],'x','c'); disp(p1); p2=poly([1 1],'x','c'); disp(p2); S=p1*p2; disp(S);
exec('poly_multiplication.sce', -1) 5 +4x -x² +3x³ 1 +x 5 +9x +3x² +2x³ +3x⁴
Avec Octave, pour effectuer, il faut utilise la commande conv qui effectue le produit de convolution des coefficients. Le code du fichier poly_multiplication.m est :
p1=[3 -1 4 5]; p2=[1 1]; polyout(p1,'x') polyout(p2,'x') P=conv(p1,p2); polyout(P,'x')
>> poly_multiplication 3*x^3 - 1*x^2 + 4*x^1 + 5 1*x^1 + 1 3*x^4 + 2*x^3 + 3*x^2 + 9*x^1 + 5 >>
On propose d'effectuer les calculs des racines sur les polynômes.
Avec Scilab, les racines s'obtiennent avec la commande roots(polynome) appliquée directement au polynôme. Le code du fichier poly_racines.sce est :
p=poly([6 11 6 1],'x','c'); disp(p1); r=roots(p); disp(r);
exec('poly_racines.sce', -1) 5 +4x -x² +3x³ -3. + 0.i -2. + 0.i -1. + 0.i
Avec Octave, les racines s'obtiennent avec la fonction roots(vecteur) où vecteur représente toujours les coefficients du polynôme. Le code du fichier poly_racines.m est :
p=[1 6 11 6]; polyout(p,'x') r=roots(p)
>> poly_racines 1*x^3 + 6*x^2 + 11*x^1 + 6 r = -3.0000 -2.0000 -1.0000 >>
On propose d'effectuer les inversions de matrices du chapitre sur les matrices.
Avec Scilab. Le code du fichier matrice_produit.sce est :
A=[1 5 -1 0;-1 -1 -3 5;5 0 -1 5] B=[2 4;-5 -3;-3 0;-5 1] P=A*B disp('A=',A) disp('B=',B) disp('P=AB=',P)
exec('matrice_produit.sce', -1) "A=" 1. 5. -1. 0. -1. -1. -3. 5. 5. 0. -1. 5. "B=" 2. 4. -5. -3. -3. 0. -5. 1. "P=AB=" -20. -11. -13. 4. -12. 25.
Avec Octave. Le code du fichier matrice_produit.m est :
A=[1 5 -1 0;-1 -1 -3 5;5 0 -1 5] B=[2 4;-5 -3;-3 0;-5 1] P=A*B
>> matrice_produit A = 1 5 -1 0 -1 -1 -3 5 5 0 -1 5 B = 2 4 -5 -3 -3 0 -5 1 P = -20 -11 -13 4 -12 25 >>
Avec Scilab, on utilise la fonction det(matrice). Le code du fichier matrice_determinant.sce est :
A=[-5 0 -4;-5 4 -1;1 -5 -5] d=det(A) disp('A=',A) disp('d=',d)
exec('matrice_determinant.sce', -1) "A=" -5. 0. -4. -5. 4. -1. 1. -5. -5. "d=" 41.000000
Avec Octave, on utilise également la fonction det(matrice). Le code du fichier matrice_determinant.m est :
A=[-5 0 -4;-5 4 -1;1 -5 -5] d=det(A)
>> matrice_determinant A = -5 0 -4 -5 4 -1 1 -5 -5 d = 41.000
Avec Scilab. Ici on utilise la fonction inv(matrice), mais il également possible d'utiliser la puissance A^-1. Le code du fichier matrice_inversion.sce est :
A=[0 5 2;2 -2 5;-3 -3 1] B=inv(A) disp('A=',A) disp('B=',B)
exec('matrice_inversion.sce', -1) "A=" 0. 5. 2. 2. -2. 5. -3. -3. 1. "B=" -0.1192661 0.1009174 -0.266055 0.1559633 -0.0550459 -0.0366972 0.1100917 0.1376147 0.0917431
Avec Octave. La fonction inv(matrice) peut être également remplacée par la puissance A^-1. Le code du fichier matrice_inverse.m est :
A=[0 5 2;2 -2 5;-3 -3 1] B=inv(A)
>> matrice_inversion A = 0 5 2 2 -2 5 -3 -3 1 B = -0.119266 0.100917 -0.266055 0.155963 -0.055046 -0.036697 0.110092 0.137615 0.091743
On propose de résoudre les systèmes du chapitre système d'équations. La résolution d'un système d'équation de la forme Ax=b se résout avec une division à gauche de la forme A\b, cette écriture est équivalente à x=A-1b qui est l'expression de la solution du système.
Avec Scilab. Le code du fichier systeme_equations.sce est :
A=[5 -2 -1;-4 1 -2;1 2 -1] b=[8;-8;-4] x=A\b disp('A=',A) disp('b=',b) disp('x=',x)
>> exec('systeme_equations.sce', -1) "A=" 5. -2. -1. -4. 1. -2. 1. 2. -1. "b=" 8. -8. -4. "x=" 1. -2. 1.
Avec Octave. Le code du fichier systeme_equations.m est :
A=[5 -2 -1;-4 1 -2;1 2 -1] b=[8;-8;-4] x=A\b
>> systeme_equations A = 5 -2 -1 -4 1 -2 1 2 -1 b = 8 -8 -4 x = 1 -2 1
On présente le calcul du réel et de l'entier présenté dans le chapitre sur le langage C. Les réels sont représentés en double précision, Le nombre utilisé n'a pas de représentation finie en binaire, ce qui explique les résultats obtenus.
Avec Scilab le résultat est
-->a=8.62 a = 8.62 -->y=int(a*100) y = 861.
Avec Octave le résultat est
>> a=8.62 a = 8.6200 >> y=fix(a*100) y = 861
La calculatrice dc est une calculatrice RPN (Notation polonaise inverse). Elle utilise une pile pour enchaîner les calculs, elle permet de bien comprendre ce type de calculatrice. La syntaxe est donc une expression qui exécute une suite d'empilage et dépilage :
L'ensemble de la syntaxe est disponible sur le site computerhope.
On reprend les calcul présentés dans le chapitre sur le fonctionnement de la calculatrice :
dc -e '3 4 + 2 * p'
14
dc -e '2 3 + 4 5 + * p'
45
dc -e '5 k 3 v p'
1.73205
dc -e '5 k 3 2 + 2 ^ 2 1 + 2 ^ + v p'
5.83095
dc -e '5 k 3 2 + d * 2 1 + d * + v p'
5.83095
Les expressions conditionnelles comparent les deux dernières valeurs contenues dans la pile après les avoir dépilées, et exécute le contenu d'un registre avant de continuer le calcul. La syntaxe est l'opérateur de comparaison suivi du caractère qui identifie le registre. Les symbole de comparaison sont >, <, =, !> pour inférieur ou égal, < pour supérieur ou égal, != pour différent de.
Exemple avec la calcul de la valeur absolue
Fonction abs
Paramètres en entrée : x
Paramètres en sortie : y
Debut traitement
Si x < 0 Alors
z = -x
Sinon
y = x
FinSi
Retourner z
Fin traitement
Avec dc, pour calculer la négation du nombre on utilise la soustraction z=0-x.
On va stocker cette expression de calcul dans un registre. Donc suivant le signe de la valeur on appliquera ou non l'expression du registre
Il ne faut oublier que pour différencier l'opérateur de soustraction du signe moins d'un nombre négatif, la négation d'un nombre est le symbole _
Afin de transformer le symbole - en _, on utilise la commande linux tr
?
d
sx
[0 lx - ]
sa
0
lx<a
p
echo "-3" | tr "-" "_" | dc -f absolu.dc
3
echo "3" | tr "-" "_" | dc -f absolu.dc
3
En réalité le traitement itératif utilise la récursivité, c'est à dire que l'expression de calcul dans le registre contient la syntaxe d'exécution de cette expression.
Pour k de 1 à n Faire
Afficher k
FinPour
L'expression du calcul enregistrée dans le registre contient l'incrémentation de k, la comparaison avec la valeur finale, et l'exécution de l'expression à nouveau si la valeur finale n'est pas atteinte. Cela impose d'utiliser trois registres : un pour l'expression de calcul F, un pour la commande de sortie du calcul Q et un pour le nombre d'itération n.
[q]
sQ
5
sn
1
p
[1 + p d ln !>Q lF x]
d
sF
x
dc -f boucle.dc
1
2
3
4
5
5k
0.7
[10*6.3-plFx]
d
sF
x
0.7
0.7
0.7
0.7
...
10k
[q]
sQ
2
sk
0.5
p
sr
[ lr 1 2 lk ^ / + p sr lk 10 !>Q lk 1 + sk lF x]
d
sF
x
.5
.7500000000
.8750000000
.9375000000
.9687500000
.9843750000
.9921875000
.9960937500
.9980468750
.9990234375
10k
[q]
sQ
3
sk
0.5
p
sr
[ lr 1 lk / + p sr lk 10 !>Q lk 1 + sk lF x ]
d
sF
x
.5
.8333333333
1.0833333333
1.2833333333
1.4499999999
1.5928571427
1.7178571427
1.8289682538
1.9289682538
La calculatrice bc est une calculatrice à précision arbitraire, qui fonctionne avec des expressions parenthésées et qui supporte des fonctions mathématiques.
Les structures de contrôle sont :
L'ensemble des commandes est disponible sur le site computerhope.
On reprend les calcul présentés dans le chapitre sur le fonctionnement de la calculatrice :
echo "(3+4)*2" | bc
14
echo "(2+3)*(4+5)" | bc
45
echo "scale=5;sqrt(3)" | bc
1.73205
echo "scale=5;sqrt((3+2)^2+(2+1)^2)" | bc
5.83095
echo "scale=20;4*a(1)" | bc -l
3.14159265358979323844
Il faut comparer le résultat avec la valeur donnée par le calcul du chapitre sur pi
3.141592653589793238462643383279502884197169399375
scale=20;
un=2;
den=sqrt(2);
for(i=0;i<=100;i=i+1) {
un=un*2/den;
den=sqrt(2+den);
}
print un,"\n";
quit;
bc -l viete_pi.bc
3.14159265358979323935
scale=10;
un=0.7;
for(i=1;i<30;i=i+1) {
un=10*un-6.3;
print un,"\n"
}
quit;
.7
.7
.7
.7
.7
.7
.7
.7
.7
.7
.7
...
scale=10;
s=0;
for(i=1;i<=10;i=i+1) {
s += 1/(2^i) ;
print s,"\n"
}
quit;
.5000000000
.7500000000
.8750000000
.9375000000
.9687500000
.9843750000
.9921875000
.9960937500
.9980468750
.9990234375
scale=10;
s=0;
for(i=2;i<=10;i+=1) {
s += 1/i ;
print s,"\n"
}
quit;
.5000000000
.8333333333
1.0833333333
1.2833333333
1.4499999999
1.5928571427
1.7178571427
1.8289682538
1.9289682538
define fk(n,k) {
if (n <= 1) return (1);
return (fk(n-k,k) * n);
}
for(n=1;n<=10;n=n+1) {
f=fk(n,2);
print n,":",f,"\n"
}
quit;
1:1
2:2
3:3
4:8
5:15
6:48
7:105
8:384
9:945
10:3840