[Résolu] Algorithme d'Euclide

Tout ce qui concerne l'utilisation ou l'installation de LaTeX.

Modérateur: gdm_tex

Règles du forum
Merci d'éviter le style SMS dans vos messages et de penser à utiliser la fonction Recherche avant de poster un message. Pour joindre des fichiers à vos messages, consulter ce sujet.
> Penser à utiliser les balises Code pour poster du code.

[Résolu] Algorithme d'Euclide

Messagepar Francky » Lundi 03 Janvier 2011, 10:22

EDIT : j'ai changé le titre, car la suite dévie sur l'algorithme d'Euclide
EDIT : au départ, c'était maths et gras
J'ai bidouillé une commande pour afficher une division euclidienne, avec diviseur et reste en gras (étonnant ?)

Code: Tout sélectionner
%
%           Pour afficher une division euclidienne simple 
%
\newcommand*{\diveucl}[4]{% Dividende Diviseur Quotient Reste
\begin{array}{@{\;}r@{\;}|l@{\;}}
\num{#1}&\!\!\boldmath{\num{#2}}\\\cline{2-2} %    1700|300
\boldmath{\num{#4}}&\!\!\num{#3}              %        |---
\end{array}}                                  %     200|5
%
%  Utilisation : \diveucl{1700}{300}{5}{200}


C'est fonctionnel, mais j'ai un

Code: Tout sélectionner
LaTeX Font Warning: Command \boldmath invalid in math mode on input line 155.
LaTeX Font Warning: Command \mathversion invalid in math mode on input line 155

J'utilise siunitx qui définit \num, et j'ai l'option :\sisetup{detect-weight= true, detect-inline-weight = math}%

C'est le seul moyen que j'ai trouvé pour le rendre fonctionnel.

Pourriez-vous m'aider à améliorer cette commande, merci. Que je n'ai plus de warning, je précise que j'ai essayé avec \boldmath et \bfseries sans succès. Mais je connais mal ces commandes de gras en maths.
Dernière édition par Francky le Lundi 03 Janvier 2011, 19:38, édité 1 fois.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Publicité

Re: gras et math

Messagepar pg » Lundi 03 Janvier 2011, 10:40

Comme le dit le message d'erreur, \boldmath ou \mathversion{bold} ne marchent qu'en mode texte (avant une formule pour la mettre en gras) ; mettre des accolades après ces deux macros est d'ailleurs inutile, car ce sont des bascules, pas des commandes à argument.

Pour mettre en gras dans une formule, il y a \mathbf ou \boldsymbol (package amsmath) qui ne font pas tout à fait la même chose.

Par ailleurs, c'est pas très dur de laisser le calcul du reste et du diviseur à TeX si tu le souhaites.
pg
Modérateur
 
Messages: 2581
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Gras et maths

Messagepar rebouxo » Lundi 03 Janvier 2011, 11:59

Et je pense même qu'il y a une extension qui fait déjà la division euclidienne sur les polynômes.

Olivier
A line is a point that went for a walk. Paul Klee
Par solidarité, pas de MP
rebouxo
Modérateur
 
Messages: 6729
Inscription: Mercredi 15 Février 2006, 13:18
Localisation: le havre
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar ErwanD » Lundi 03 Janvier 2011, 12:31

Bonjour,

pour les divisions euclidiennes, j'utilise :
Code: Tout sélectionner
\usepackage{xlop}


disponible sur cette page : http://melusine.eu.org/syracuse/jcc/xlop/
Configuration : Windows 10 // TexMaker
ErwanD
Déca-utilisateur
 
Messages: 27
Inscription: Lundi 27 Septembre 2010, 23:14
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar balf » Lundi 03 Janvier 2011, 12:47

Avec \mathbf, le problème est que ça met en gras, mais aussi en romain, et non en italique. S'il y a des variables, c'est plutôt gênant. Sinon, une solution consiste à sortir du mode mathématique pour pouvoir insérer la commande \boldmath au bon endroit et y rentrer juste après ($\boldmath$ ou \text[\boldmath}).
Une autre solution consiste à utiliser la commande \bm{...}, de l'extension homonyme, qui, elle, fonctionne en mode mathématique.

B.A.
balf
Zetta-utilisateur
 
Messages: 3582
Inscription: Mercredi 02 Janvier 2008, 23:18
Statut actuel: Actif et salarié | Maître de conférence

Re: Gras et maths

Messagepar François D. » Lundi 03 Janvier 2011, 12:49

Moi j'utilise le package bm (\usepackage{bm} dans l'en-tête) qui s'utilise ensuite en mode maths :
Code: Tout sélectionner
$\bm{x^2=a}$ admet deux solutions complexes ...
Remarque : marche aussi dans les titres de section, etc.


Edit : pas vu la derrnière phrase du message précédent ... grillé :mrgreen:
François D.
Téra-utilisateur
 
Messages: 1370
Inscription: Dimanche 30 Juillet 2006, 09:04
Localisation: Alsace
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar pg » Lundi 03 Janvier 2011, 12:58

\bm a le même effet que \boldsymbol mentionné plus haut (le package bm mentionne que "\bm takes more care of the spacing", mais je n'ai jamais comparé les deux).
pg
Modérateur
 
Messages: 2581
Inscription: Jeudi 14 Juin 2007, 23:31

Re: Gras et maths

Messagepar ErwanD » Lundi 03 Janvier 2011, 13:15

Je donne quand même ma solution :

Code: Tout sélectionner
\usepackage{xlop}

\begin{document}
\newcommand\gras[1]{\bfseries{#1}}
\opidiv[displayintermediary=none,voperation=top,operandstyle.2=\gras,remainderstyle.2=\gras]{135}{7}

\opidiv[displayintermediary=all,voperation=top,operandstyle.2=\gras,remainderstyle.2=\gras]{135}{7}
\end{document}
Configuration : Windows 10 // TexMaker
ErwanD
Déca-utilisateur
 
Messages: 27
Inscription: Lundi 27 Septembre 2010, 23:14
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar Francky » Lundi 03 Janvier 2011, 13:34

Merci à tous, je connaissais vaguement xlop, et je crois que je vais essayer de l'apprivoiser.

Pas de souci avec TikZ et xlop ?
(TikZ que je connais pas du tout, je délègue ... pour la déco).

---

Dans mon cas, le calcul par xlop ne branche pas trop, je présente l'algorithme d'Euclide ; et réutilise les résultats ...
Il faudrait sinon construire une boucle jusqu'à obtenir le reste nul.
Est-ce imaginable ? Oui je suppose.
Je sais programmer ça en python, mais en TeX ???
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar Arnaud » Lundi 03 Janvier 2011, 14:57

Il est possible d'insérer du code python dans ton fichier tex : http://thewikiblog.appspot.com/blog/python-inside-latex
Arnaud

Un peu d'info - Pyromaths
LaTeX - Exemples de formules LaTeX

Pas d'aide en MP (non plus)
Arnaud
Modérateur
 
Messages: 7111
Inscription: Lundi 28 Août 2006, 12:18
Localisation: Allemagne
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar un bon petit » Lundi 03 Janvier 2011, 16:41

Francky a écrit:Dans mon cas, le calcul par xlop ne branche pas trop, je présente l'algorithme d'Euclide ; et réutilise les résultats ...
Il faudrait sinon construire une boucle jusqu'à obtenir le reste nul.
Est-ce imaginable ? Oui je suppose.
Je sais programmer ça en python, mais en TeX ???

Est ce ceci que tu cherches :
Code: Tout sélectionner
\documentclass{minimal}
\makeatletter
\newcount\@quotient
\newcommand\algeuclide[2]{%
   \ifnum#2>#1
      \def\next{\@lgeuclide{#2}{#1}}%
   \else
      \def\next{\@lgeuclide{#1}{#2}}
   \fi\next}
\newcommand\@lgeuclide[2]{%
   \ifnum#2>\z@
      \@quotient#1
      \divide\@quotient#2
      \edef\next{\number\numexpr#1-\@quotient*#2}%
      $#1=#2\times\number\@quotient+\next$\par
      \edef\next{\noexpand\@lgeuclide{#2}{\next}}%
      \expandafter\next
   \else
      Le PGCD est #1.%
   \fi}
\makeatother
\begin{document}
\algeuclide{850}{325}
\medskip

\algeuclide{719}{1025}
\end{document}
un bon petit
Giga-utilisateur
 
Messages: 625
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar Francky » Lundi 03 Janvier 2011, 17:52

Super, ça marche, mais comme je voulais une présentation avec la division euclidienne posée,
et non la vérification en ligne, j'ai tenté la modif suivante, et plouf !!! Et je ne comprends pas.

Code: Tout sélectionner
\documentclass{article}
\usepackage{premHache}% mon préambule
\makeatletter
\newcount\@quotient
\newcommand\algeuclide[2]{%
   \ifnum#2>#1
      \def\next{\@lgeuclide{#2}{#1}}%
   \else
      \def\next{\@lgeuclide{#1}{#2}}
   \fi\next}
\newcommand\@lgeuclide[2]{%
   \ifnum#2>\z@
      \@quotient#1
      \divide\@quotient#2
      \edef\next{\number\numexpr#1-\@quotient*#2}%
      $\begin{array}{@{\;}r@{\;}|l@{\;}}
      #1&\!\!#2\\\cline{2-2}
      \next&\!\!\\number@quotient
      \end{array}}$\quad
%      $#1=#2\times\number\@quotient+\next$\par
      \edef\next{\noexpand\@lgeuclide{#2}{\next}}%
      \expandafter\next
   \else
      Le PGCD est #1.%
   \fi}
\makeatother
\begin{document}
\algeuclide{1850}{250}
\medskip

\algeuclide{128}{42}
\end{document}

Réponse :
Code: Tout sélectionner
! LaTeX Error: Missing \begin{document}.

??? Tests avec ou sans préambule et article ou minimal !
EDIT : Résolu cette erreur : il y a un \ en trop !!!
--
Sinon le code, c'est du $\TeX$, c'est ça, c'est un peu chelou,
mais ça doit passer, il y a un petit guide côté arithmétique ?
Dernière édition par Francky le Lundi 03 Janvier 2011, 19:13, édité 2 fois.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar GMaths » Lundi 03 Janvier 2011, 18:02

Une version asymptote de la rédaction en ligne :

b1bb7ae827fb4ad793ece656bda20c79.png

Code: Tout sélectionner
unitsize(.4cm);
void pgcd(int a, int b){
int k=0, a_=abs(a), b_=abs(b), r=a_;
while (r>0)
{
r=a_%b_;
label(string(a_)+"="+string(b_)+"$\times$"+string(floor(a_/b_))+"+"+string(r),(0,--k),E);
a_=b_;
b_=r;
}
label(format("Le PGCD est %i.",a_),(0,--k),E);
}
pgcd(1025,719);
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar GMaths » Lundi 03 Janvier 2011, 18:09

... mieux présentée :

ae1ab6400d33dd2b1b9481ccd5289fb9.png

Code: Tout sélectionner
unitsize(.4cm);
void pgcd(int a, int b){
int k=0, a_=abs(a), b_=abs(b), r=a_;
while (r>0)
{
r=a_%b_;
label(string(a_),(0,--k),2W);
label("=",(0,k));
label(string(b_)+"$\times$"+string(floor(a_/b_))+"+"+string(r),(0,k),2E);
a_=b_;
b_=r;
}
label(format("\fbox{Le PGCD est %i.}",a_),truepoint(S),2S,red);
}
pgcd(1025,719);
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar Francky » Lundi 03 Janvier 2011, 18:13

Merci GM, je comprends plus Asymptote que $\TeX$, mais je ne veux pas d'une présentation en colonne.

Je souhaite une ligne de divisions euclidiennes (à côté les unes des autres),
et utiliser Asymptote (que j'adore) me semble disproportionné ici, je crois que je préfère, ici,
une solution en $\TeX$, même si je vais avoir plus de mal.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar un bon petit » Lundi 03 Janvier 2011, 18:15

Voici peut être un code qui va te convenir :
Code: Tout sélectionner
\documentclass{article}
\makeatletter
\newcount\@quotient
\newcommand\algeuclide[2]{%
   \ifnum#2>#1
      \def\next{\@lgeuclide{#2}{#1}}%
   \else
      \def\next{\@lgeuclide{#1}{#2}}
   \fi\next}
\newcommand\@lgeuclide[2]{%
   \ifnum#2>\z@
      \@quotient#1
      \divide\@quotient#2
      \edef\next{\number\numexpr#1-\@quotient*#2}%
      \begin{tabular}{r|l}#1&#2\\\cline{2-2}\next&\number\@quotient\end{tabular}\
      \edef\next{\noexpand\@lgeuclide{#2}{\next}}%
      \expandafter\next
   \else
      \smallbreak Le PGCD est #1.%
   \fi}
\makeatother
\begin{document}
\algeuclide{850}{325}
\medskip

\algeuclide{719}{1025}
\end{document}
un bon petit
Giga-utilisateur
 
Messages: 625
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar GMaths » Lundi 03 Janvier 2011, 18:20

Francky a écrit:utiliser Asymptote (que j'adore) me semble disproportionné ici

Non...
Francky a écrit:je crois que je préfère, ici, une solution en $\TeX$

... mais on peut avoir cette préférence, donc je ne propose pas la version asymptote des divisions posées.
GMaths
Exa-utilisateur
 
Messages: 2031
Inscription: Lundi 01 Octobre 2007, 09:20
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar Francky » Lundi 03 Janvier 2011, 18:33

@GM : tu peux la mettre quand même, je suis curieux, j'ai du mal à mettre les boîtes les unes à côté des autres avec asymptote,
donc je vais apprendre dans tous les cas. Ne te fait pas prier, toute solution est la bienvenue.

@un bon petit : c'est gentil, pourrais-tu expliquer ce qui n'allait pas ?
si je veux array et non tabular, ça coince ?
En fait tabular m'arrange (pour une autre raison),
mais il va me falloir redéfinir les espaces pour resserrer tout ça,

et mettre en gras diviseur et reste (c'est un peu le titre du fil)
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar un bon petit » Lundi 03 Janvier 2011, 18:39

Francky a écrit:@un bon petit : c'est gentil, pourrais-tu expliquer ce qui n'allait pas ?

Non puisque ton exemple contenait un préambule que je n'ai pas. Pour être honnete, je n'ai pas essayé ton code.
Francky a écrit:si je veux array et non tabular, ça coince ?

Non, la preuve :
Code: Tout sélectionner
\documentclass{article}
\makeatletter
\newcount\@quotient
\newcommand\algeuclide[2]{%
   \ifnum#2>#1
      \def\next{\@lgeuclide{#2}{#1}}%
   \else
      \def\next{\@lgeuclide{#1}{#2}}
   \fi\next}
\newcommand\@lgeuclide[2]{%
   \ifnum#2>\z@
      \@quotient#1
      \divide\@quotient#2
      \edef\next{\number\numexpr#1-\@quotient*#2}%
      $\begin{array}{r|l}#1&\mathbf{#2}\\\cline{2-2}\mathbf\next&\number\@quotient\end{array}$\
      \edef\next{\noexpand\@lgeuclide{#2}{\next}}%
      \expandafter\next
   \else
      \smallbreak Le PGCD est #1.%
   \fi}
\makeatother
\begin{document}
\arraycolsep3pt
\algeuclide{850}{325}
\medskip

\algeuclide{719}{1025}
\end{document}
un bon petit
Giga-utilisateur
 
Messages: 625
Inscription: Vendredi 12 Juin 2009, 21:35
Localisation: Chambéry
Statut actuel: Actif et salarié | Enseignant

Re: Gras et maths

Messagepar Francky » Lundi 03 Janvier 2011, 19:12

un bon petit a écrit: Pour être honnete, je n'ai pas essayé ton code.

Merci quand même, j'ai fini par y trouvé un backslash en trop !

-----

Pour obtenir un truc encore mieux :
1] je vais mettre des \num{.} de siunitx pour un affichage correct en cas de grands entier,
et ça va être difficile car j'ai du mal à mettre en gras avec \num. (d'où le premier post du fil !!!)
2] je pense que les espaces* du tableau de sont pas parfaits, mais là, ça semble être un boulot pour pg
(ce que j'ai tenté ressemble à une bidouille infâme)
* : entre les | et les nombres, et puis de part et d'autre de chaque tableau.
3] ajouter une option : le matériel intermédiaire entre deux tableaux : [\quad], [, puis] ou un stretch pour remplir la ligne.
Je devrait y arriver.
Linux Mint | TeXLive - TexMaker - asymptote | Python3 & C - Geany - Project Euler - SPOJ
Entia non sunt multiplicanda praeter necessitatem
Francky
Giga-utilisateur
 
Messages: 683
Inscription: Dimanche 11 Avril 2010, 13:01
Statut actuel: Actif et salarié | Enseignant

Suivante

Retourner vers LaTeX

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 11 invités