Evalúe una bolsa de monedas
Una bolsa de monedas estadounidenses nuevas es robada de un banco. Sin abrir la bolsa, ¿qué se puede decir del valor monetario de sus contenidos? Una característica física obvia que se puede medir fácilmente es el peso de la bolsa. Suponiendo que es una bolsa de monedas de una libra, combine los conocimientos técnicos de Wolfram Knowledgebase sobre monedas con la habilidad incorporada para solucionar ecuaciones lineares, para estudiar el valor esperado del botín.
Para empezar, genere una lista de monedas estadounidenses en circulación actual por medio de una clase de entidades implícitamente definida.
EntityClass["CurrencyDenomination", {EntityProperty[
"CurrencyDenomination", "IssuingCountry"] ->
Entity["Country", "UnitedStates"],
EntityProperty["CurrencyDenomination", "Format"] -> "coin"}]
Expanda la clase de entidades implícitamente definida haciendo clic en [+], encuentre sus miembros, y ordénelos por valor.
coinsUS = EntityList[
EntityClass[
"CurrencyDenomination", {
EntityProperty[
"CurrencyDenomination", "IssuingCountry"] -> Entity[
"Country", "UnitedStates"],
EntityProperty["CurrencyDenomination", "Format"] -> "coin"}]] //
SortBy[#[EntityProperty["CurrencyDenomination", "Value"]] &]
Cree un collage de imágenes de moneda.
ImageCollage[
EntityValue[coinsUS,
EntityProperty["CurrencyDenomination", "Image"]],
Background -> White]
Resuma las propiedades de las monedas en una tabla.
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
Obtenga denominaciones (en centavos) y masas (en gramos) de monedas y convierta las masas en números racionales.
{values, masses} =
Transpose[EntityValue[coinsUS, {"Value", "Weight"}]]
coinsandweights = Transpose[{
QuantityMagnitude[UnitConvert[values, "USCents"]],
Rationalize[QuantityMagnitude[N[UnitConvert[masses, "Grams"]]]]
}]
lcm = LCM @@ Denominator[Rationalize[coinsandweights][[All, 2]]];
rationalcoinweights = lcm #2 & @@@ Rationalize[coinsandweights]
Encuentre todas las distribuciones de monedas que son compatibles con una medida de peso de una libra con un error de medición de ± 0.1% (asumiendo que la bolsa misma contribuye de forma no significativa).
meanWeight =
QuantityMagnitude[UnitConvert[Quantity[1, "Pounds"], "Grams"]];
error = Normal[Quantity[0.1, "Percent"]];
{minScaledWeight,
maxScaledWeight} = {Floor[lcm meanWeight (1 - error/2)],
Ceiling[lcm meanWeight (1 + error/2)]}
Use FrobeniusSolve para determinar todas las posibles colecciones de moneda dando el peso total requerido.
Flatten[allSolutions, 1] // Length
Encuentre el mínimo, la mediana, la media y el máximo de los valores monetarios totales de las monedas en la bolsa (asumiendo que todas las combinaciones son igualmente probables).
Cree un histograma de la distribución del valor monetario total.
Histogram[dollarValues, Automatic, "PDF",
AxesLabel -> {Quantity[None, "USDollars"], "fraction"}]
La distribución de peso de todas las bolsas es bastante uniforme.
Histogram[weightvalues, 50, "PDF",
AxesLabel -> {Quantity[None, "USDollars"], "fraction"}]
Represente gráficamente la distribución del número de monedas.
Histogram[Total /@ Flatten[allSolutions, 1], {5}]
La distribución bivariante del valor monetario versus el número de monedas en la bolsa.
Histogram3D[{coins.#/100., Total[#]} & /@ Flatten[allSolutions, 1],
AxesLabel -> {Quantity[None, "USDollars"], "coins"}]