Probleme FP

Added by emmanuel quillasi over 2 years ago

Bonjour,

j'ai une erreur de compilation, mais j'arrive pas a comprendre et à la corriger.
FP error. Evaluation result in multiples values

\element{categorie1}{

\pgfmathrandominteger{\n}{14}{16}
\pgfmathsetmacro{\m}{int(\n*2+2)}
$C_{\n}H_{\m}$

\pgfmathrandominteger{\a}{45}{55}
%\pgfmathparse{40+\a}  \pgfmathresult
\pgfmathsetmacro{\g}{int(\a+400)}

\textbf{Mieux isoler pour économiser de l'énergie }

Près de 29 \% des Français se chauffent au fioul, un combustible composé essentiellement d'alcanes de formule brute $C_{\n}H_{\m}$. La consommation annuelle d'énergie par m² pour se chauffer est de 250 kWh. Cette quantité d'énergie représente une réelle part du budget des Français. Pour diminuer la consommation en carburant, une solution est d'améliorer l'isolation des maisons. %%% On répartie les quesitons dans différents groupes.\wrongchoice{AB}\scoring{1}\wrongchoice{B}\scoring{2}\correctchoice{TB}\scoring{3}

A : le logement consomme moins de $\a \ kWh.m^{-2}.an^{-1}$ 

B: le logement consomme entre $\pgfmathparse{int(\a+1)}  \pgfmathresult$ et $ \pgfmathparse{int(40+\a)}  \pgfmathresult \ kWh.m^{-2}.an^{-1} $

C: le logement consomme entre $\pgfmathparse{int(\a+41)}  \pgfmathresult$ et $\pgfmathparse{int(100+\a)}  \pgfmathresult \ kWh.m^{-2}.an^{-1}$

D: le logement consomme entre $\pgfmathparse{int(\a+101)}  \pgfmathresult$ et $\pgfmathparse{int(180+\a)}  \pgfmathresult \ kWh.m^{-2}.an^{-1} $

E: le logement consomme entre $\pgfmathparse{int(\a+181)}  \pgfmathresult$ et $\pgfmathparse{int(280+\a)}  \pgfmathresult \ kWh.m^{-2}.an^{-1}$

F: le logement consomme entre $\pgfmathparse{int(\a+281)}  \pgfmathresult$ et $\pgfmathparse{\g}  \pgfmathresult \ kWh.m^{-2}.an^{-1} $

G: le logement consomme plus de $\pgfmathparse{\g}  \pgfmathresult \ kWh.m^{-2}.an^{-1} $

\FPeval\EA{int(\a*50)}

%calcul Eg=$\FPeval{\EG}{int(\g*50)}\FPprint{\EG}$

\begin{questionmultx}{classe A}
Déterminer l'énergie consommée ($kWh.m^{-2}.an^{-1} $) en par un logement de 50 m2 en une année de Classe A. 

\AMCnumericChoices{2.50}{digits=3,decimals=2,sign=true,borderwidth=0pt,backgroundcol=lightgray,approx=5,exponent=2,sign=false,
      exposign=true,expovertical=true}
\end{questionmultx}

}

autre question, si je calcul une variable dans une question, est ce que cette variable est accesssible dans une autre question ?

source.tex (4.6 kB)


Replies (21)

RE: Probleme FP - Added by emmanuel quillasi over 2 years ago

apparemment, int qui marche dans overleaf ne marche pas ici.
au lieu de
\FPeval\EA{int(\a*50)}
il faut mettre
\FPeval\EA{round(\a*50,0)}

RE: Probleme FP - Added by Alexis Bienvenüe over 2 years ago

Il me semble que int n'existe pas dans fp. Peut-être que overleaf a simplement accepté l'erreur et continué quand même, sans arrondir ?

RE: Probleme FP - Added by Frédéric Bréal over 2 years ago

Il me semble que int n'existe pas dans fp

Oui, on peut utiliser le paquet xfp pour les entiers

\edef\g{\inteval{\a+400}}

À quoi correspond la variable g ?

Dans la question, l'énergie consommée devrait s'exprimée en kWh et pas en kWh/m2/an.

Je vous mets ma version avec les paquets xfp et siunitx (version 2021).

source.tex (5.1 kB)

RE: Probleme FP - Added by Frédéric Bréal over 2 years ago

je calcul une variable dans une question, est ce que cette variable est accesssible dans une autre question ?

Théoriquement oui si elle est déclarée avant l'environnement question donc dans le même groupe, après la commande exemplaire.

RE: Probleme FP - Added by emmanuel quillasi over 2 years ago

Alexis Bienvenüe wrote:

Il me semble que int n'existe pas dans fp. Peut-être que overleaf a simplement accepté l'erreur et continué quand même, sans arrondir ?

Oui, je viens de m'en apercevoir.
Merci

Frédéric Bréal wrote:

Il me semble que int n'existe pas dans fp

Oui, on peut utiliser le paquet xfp pour les entiers
[...]
À quoi correspond la variable g ?

Dans la question, l'énergie consommée devrait s'exprimée en kWh et pas en kWh/m2/an.

Je vous mets ma version avec les paquets xfp et siunitx (version 2021).

Merci pour ta version, c'est plus joli. Pour ma decharge, c'est la premiere fois que j'utilise Latex et Fp. je vais pouvoir encore m'amuser.
la variable g, c'est la conso d'une maison de classe g. j'aurai pu m'en passer.

RE: Probleme FP - Added by emmanuel quillasi over 2 years ago

Bonjour,

encore un probleme avec FP et round ou avec AMCnumericChoice

Pour une valeur de 22550, AMCnumercChoice me propose comme correction parfois 2.25.10⁴ et parfois 2.26.10⁴

RE: Probleme FP - Added by Alexis Bienvenüe over 2 years ago

Pour une valeur de 22550, AMCnumercChoice me propose comme correction parfois 2.25.10⁴ et parfois 2.26.10⁴

Pouvez-vous fournir un fichier source minimal qui illustre ce problème ?

RE: Probleme FP - Added by emmanuel quillasi over 2 years ago

Voici le fichier tex et la correction individuelle.
Le pb est à la question 2 (dans le texte de la question j'ai mis la réponse pour la voir
copie 3 - 22250 codé 2.22.10³
copie 4 - 22750 codé 2.28.10⁴

DOC-indiv-solution.pdf (115.8 kB)

source.tex (4.7 kB)

RE: Probleme FP - Added by Frédéric Bréal over 2 years ago

Normal, c'est la règle des arrondis.
Le 7 est suvi du 5 donc arrondi au supérieur.
Il faut remplacer round par trunc et ça devrait passer, pareil pour \EA

\FPeval\EG{trunc(\g*50,0)}

RE: Probleme FP - Added by emmanuel quillasi over 2 years ago

oui la regle des arrondi marche pour la copie 4 - 22750 codé 2.28.10⁴
mais pas pour la copie 3 - 22250 codé 2.22.10³ qui devrait etre 2.23.10⁴

RE: Probleme FP - Added by Frédéric Bréal over 2 years ago

Je n'ai pas ces valeurs.
Pouvez-vous ajouter après \begin{document} ?

\FPseed=0

et changer

\FPeval\EG{clip(round((\a+400)*50,0))}  

RE: Probleme FP - Added by Alexis Bienvenüe over 2 years ago

AMC utilise cette convention d'arrondi : https://fr.wikipedia.org/wiki/Arrondi_(math%C3%A9matiques)#Arrondi_au_pair_le_plus_proche
C'est celui également utilisé par python, R…

RE: Probleme FP - Added by emmanuel quillasi over 2 years ago

ah c'est embetant. Les eleves ne connaissent que l'arrondi arithmétique.

Est ce qu'il existe une fonction FP ou autre pour mettre en puissance de 10 et
est il possible dans AMCNumeicChoices de donner la valeur attendue en puissance de 10 (sans lui laisser calculer) ?

RE: Probleme FP - Added by Alexis Bienvenüe over 2 years ago

Personnellement j'utilise l'option exact=1 pour \AMCnumericChoices, de telle sorte qu'une erreur d'une unité sur la dernière décimale ne soit pas pénalisée.

RE: Probleme FP - Added by emmanuel quillasi over 2 years ago

Frédéric Bréal wrote:

Je n'ai pas ces valeurs.
Pouvez-vous ajouter après egin{document} ?
[...]

et changer
[...]

Le probleme reste le meme : 22450 arrodi au pair le plus proche 2.24

RE: Probleme FP - Added by Frédéric Bréal over 2 years ago

Oui j'ai remaqué mais je connaissais pas la raison donnée par Alexis et je fais comme lui pour les arrondis.

RE: Probleme FP - Added by emmanuel quillasi over 2 years ago

Bon, je pourrai considerer juste un arrondi inferieur ou superieur, mais comme on reutilise les valeurs dans 5 ou 6 calculs à la suite, l'erreur se propage.

Je vais bidouiller pour ne pas avoir de multiple impair de 50.

RE: Probleme FP - Added by Frédéric Bréal over 2 years ago

J'ai tout fait avec fp et suis parti d'une classe a avec une valeur paire.

source.tex (4.8 kB)

RE: Probleme FP - Added by emmanuel quillasi over 2 years ago

Merci pour vos réponses et vos éclaircissements.

Encore une question.
Apres passage de l'examen, on peut changer le bareme. Ddonc normalement pour une question numérique scorexact et scoreapprox.
Mais peut on également changer les parametres
- exact ?
- approx ?

RE: Probleme FP - Added by Alexis Bienvenüe over 2 years ago

Oui ces deux paramètres font partie du barème. On peut également modifier la valeur numérique correcte, mais pas le nombre de décimales, la présence de signe, qui changent le nombre de cases et leur signification.

RE: Probleme FP - Added by Frédéric Bréal over 2 years ago

J'ai tout fait avec fp mais sans une classe A paire mais avec modulo 100 pour voir si le reste est égal à 50 dans ce cas j'ajoute 50 à \EG.

source.tex (5 kB)

(1-21/21)