Évaluez un sac de pièces de monnaie
Un sac contenant des pièces de monnaie américaines neuves a été volé dans une banque. Sans ouvrir le sac, que peut-on dire de la valeur monétaire de son contenu ? Le poids du sac est une caractéristique physique évidente et facile à mesurer. Dans l'hypothèse d'un sac de pièces d'une livre, combinez le savoir-faire de la base de connaissances de Wolfram en matière de monnaies et sa capacité intégrée à résoudre des équations linéaires pour étudier la valeur attendue du butin.
Pour commencer, renvoyez une liste de pièces de monnaie américaines en circulation au moyen d'une classe d'entités implicitement définie.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_23.png)
EntityClass["CurrencyDenomination", {EntityProperty[
"CurrencyDenomination", "IssuingCountry"] ->
Entity["Country", "UnitedStates"],
EntityProperty["CurrencyDenomination", "Format"] -> "coin"}]
![](assets.en/valuate-a-bag-of-coins/O_20.png)
Agrandissez la classe d'entité implicitement définie en cliquant sur le [+], trouvez les membres de cette classe et classez-les par valeur.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_24.png)
coinsUS = EntityList[
EntityClass[
"CurrencyDenomination", {
EntityProperty[
"CurrencyDenomination", "IssuingCountry"] -> Entity[
"Country", "UnitedStates"],
EntityProperty["CurrencyDenomination", "Format"] -> "coin"}]] //
SortBy[#[EntityProperty["CurrencyDenomination", "Value"]] &]
![](assets.en/valuate-a-bag-of-coins/O_21.png)
Réalisez un collage d'images de pièces de monnaie.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_25.png)
ImageCollage[
EntityValue[coinsUS,
EntityProperty["CurrencyDenomination", "Image"]],
Background -> White]
![](assets.en/valuate-a-bag-of-coins/O_22.png)
Résumez les propriétés des pièces de monnaie dans un tableau.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_26.png)
TextGrid[{ImageResize[#2, 60], #1,
Row[Riffle[#3, Style[" | ", Gray]]]} & @@@
EntityValue[
coinsUS, {EntityProperty["CurrencyDenomination", "Entity"],
EntityProperty["CurrencyDenomination", "Image"],
EntityProperty["CurrencyDenomination", "PeopleOnCurrency"]}],
Alignment -> {Left, Center}, Dividers -> All] // TraditionalForm
![](assets.en/valuate-a-bag-of-coins/O_23.png)
Obtenez les dénominations des pièces (en centimes) et les masses (en grammes) et convertissez les masses en nombres rationnels.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_27.png)
{values, masses} =
Transpose[EntityValue[coinsUS, {"Value", "Weight"}]]
![](assets.en/valuate-a-bag-of-coins/O_24.png)
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_28.png)
coinsandweights = Transpose[{
QuantityMagnitude[UnitConvert[values, "USCents"]],
Rationalize[QuantityMagnitude[N[UnitConvert[masses, "Grams"]]]]
}]
![](assets.en/valuate-a-bag-of-coins/O_25.png)
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_29.png)
lcm = LCM @@ Denominator[Rationalize[coinsandweights][[All, 2]]];
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_30.png)
rationalcoinweights = lcm #2 & @@@ Rationalize[coinsandweights]
![](assets.en/valuate-a-bag-of-coins/O_26.png)
Trouvez toutes les distributions de pièces compatibles avec une mesure de poids d'une livre avec une mesure d'erreur de ± 0,1% (en supposant que le sac lui-même contribue de manière négligeable).
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_31.png)
meanWeight =
QuantityMagnitude[UnitConvert[Quantity[1, "Pounds"], "Grams"]];
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_32.png)
error = Normal[Quantity[0.1, "Percent"]];
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_33.png)
{minScaledWeight,
maxScaledWeight} = {Floor[lcm meanWeight (1 - error/2)],
Ceiling[lcm meanWeight (1 + error/2)]}
![](assets.en/valuate-a-bag-of-coins/O_27.png)
Utilisez FrobeniusSolve pour déterminer toutes les collections de pièces possibles donnant le poids total requis.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_35.png)
Flatten[allSolutions, 1] // Length
![](assets.en/valuate-a-bag-of-coins/O_28.png)
Trouvez les valeurs minimale, médiane, moyenne et maximale de la valeur monétaire totale des pièces du sac (en supposant que toutes les combinaisons ont la même probabilité).
![](assets.en/valuate-a-bag-of-coins/O_29.png)
Faites un histogramme de la répartition de la valeur monétaire totale.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_39.png)
Histogram[dollarValues, Automatic, "PDF",
AxesLabel -> {Quantity[None, "USDollars"], "fraction"}]
![](assets.en/valuate-a-bag-of-coins/O_30.png)
La répartition du poids de tous les sacs est assez uniforme.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_41.png)
Histogram[weightvalues, 50, "PDF",
AxesLabel -> {Quantity[None, "USDollars"], "fraction"}]
![](assets.en/valuate-a-bag-of-coins/O_31.png)
Tracez la répartition du nombre de pièces.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_42.png)
Histogram[Total /@ Flatten[allSolutions, 1], {5}]
![](assets.en/valuate-a-bag-of-coins/O_32.png)
Voici la répartition bivariée de la valeur monétaire en fonction du nombre de pièces dans le sac.
![Click for copyable input](assets.en/valuate-a-bag-of-coins/In_43.png)
Histogram3D[{coins.#/100., Total[#]} & /@ Flatten[allSolutions, 1],
AxesLabel -> {Quantity[None, "USDollars"], "coins"}]
![](assets.en/valuate-a-bag-of-coins/O_33.png)