> restart:#"m02_p02"

Si se sabe que el valor de un total de 100 monedas mezcladas, de 1, 5 y 25 ptas es de 500 ptas,  ¿cuál es la distribución más probable?.

Datos:

> dat:=[N=3,V[1]=1,V[2]=5,V[3]=25,n=100,s=500]:

> eqN:=1=Sum(p[i],'i'=1..N);eqS:=S=-k*Sum(p[i]*ln(p[i]),i=1..N);eqSum:=s/n=Sum(V[i]*p[i],'i'=1..N);

`:=`(eqN, 1 = Sum(p[i], i = 1 .. N))

`:=`(eqS, S = `+`(`-`(`*`(k, `*`(Sum(`*`(p[i], `*`(ln(p[i]))), i = 1 .. N))))))

`:=`(eqSum, `/`(`*`(s), `*`(n)) = Sum(`*`(V[i], `*`(p[i])), i = 1 .. N))

> Phi:=rhs(eqS)+alpha*rhs(eqN)+beta*rhs(eqSum);eqS_:=simplify(subs(dat,S=-k*sum(p[i]*ln(p[i]),i=1..N)));eqSol[i]:=Diff('Phi',p[i])=0;eqSol[i]:=diff(-k*p[i]*ln(p[i])+alpha*p[i]+beta*V[i]*p[i],p[i])=0;eqSol[i]:=p[i]=solve(eqSol[i],p[i]);

`:=`(Phi, `+`(`-`(`*`(k, `*`(Sum(`*`(p[i], `*`(ln(p[i]))), i = 1 .. N)))), `*`(alpha, `*`(Sum(p[i], i = 1 .. N))), `*`(beta, `*`(Sum(`*`(V[i], `*`(p[i])), i = 1 .. N)))))

`:=`(eqS_, S = `+`(`-`(`*`(k, `*`(sum(`*`(p[i], `*`(ln(p[i]))), i = 1 .. 3))))))

`:=`(eqSol[i], Diff(Phi, p[i]) = 0)

`:=`(eqSol[i], `+`(`-`(`*`(k, `*`(ln(p[i])))), `-`(k), alpha, `*`(beta, `*`(V[i]))) = 0)

`:=`(eqSol[i], p[i] = exp(`/`(`*`(`+`(`-`(k), alpha, `*`(beta, `*`(V[i])))), `*`(k))))

> N:=subs(dat,N);eqN_:=1=subs(dat,sum(subs(eqSol[i],p[i]),i=1..N));eqSum_:=s/n=subs(dat,sum(subs(eqSol[i],V[i]*p[i]),i=1..N));sol:=solve(subs(dat,dat,{eqN_,eqSum_}),{alpha,beta}):alpha:=evalf(allvalues(subs(sol,alpha/k)*k))[1];beta:=evalf(allvalues(subs(sol,beta/k)*k))[1];sol2:=subs(eqSol[i],p[i]):sol2_:=evalf(subs(dat,[seq(p[i]=sol2,i=1..N)]));

`:=`(N, 3)

`:=`(eqN_, 1 = `+`(exp(`/`(`*`(`+`(`-`(k), alpha, beta)), `*`(k))), exp(`/`(`*`(`+`(`-`(k), alpha, `*`(5, `*`(beta)))), `*`(k))), exp(`/`(`*`(`+`(`-`(k), alpha, `*`(25, `*`(beta)))), `*`(k)))))

`:=`(eqSum_, `/`(`*`(s), `*`(n)) = `+`(exp(`/`(`*`(`+`(`-`(k), alpha, beta)), `*`(k))), `*`(5, `*`(exp(`/`(`*`(`+`(`-`(k), alpha, `*`(5, `*`(beta)))), `*`(k))))), `*`(25, `*`(exp(`/`(`*`(`+`(`-`(k), a...
`:=`(alpha, `+`(`*`(.3917078862, `*`(k))))

`:=`(beta, `+`(`-`(`*`(0.6705991300e-1, `*`(k)))))

`:=`(sol2_, [p[1] = .5089772154, p[2] = .3892273422, p[3] = .1017954431])

es decir, lo más probable es que haya en torno a 51 de 1 Pta, 39 de 5 Pta y 10 de 25 Pta, que para que verifique el enunciado elegimos 10 de 25, 40 de 5 y 50 de 1.

> (10+40+50)*monedas,(10*25+40*5+50*1)*Pta;

`+`(`*`(100, `*`(monedas))), `+`(`*`(500, `*`(Pta)))

Otro procedimiento:

> restart:N:=3:val1:=1;val2:=5;val3:=25;eq1:=n1+n2+n3=100;eq2:=n1*val1+n2*val2+n3*val3=500;isolve({eq1,eq2});assign(%):

`:=`(val1, 1)

`:=`(val2, 5)

`:=`(val3, 25)

`:=`(eq1, `+`(n1, n2, n3) = 100)

`:=`(eq2, `+`(n1, `*`(5, `*`(n2)), `*`(25, `*`(n3))) = 500)

{n3 = _Z1, n1 = `+`(`*`(5, `*`(_Z1))), n2 = `+`(100, `-`(`*`(6, `*`(_Z1))))}

> for _Z1 from iquo(100,6) by -1 to 1 do S(_Z1):=sum('-n||i'*ln('n||i'/100)/100,'i'=1..N):print(_Z1,n1,n2,n3,n1+n2+n3,n1*val1+n2*val2+n3*val3,evalf(S(_Z1))); od:

16, 80, 4, 16, 100, 500, .6004829082

15, 75, 10, 15, 100, 500, .7305880615

14, 70, 16, 14, 100, 500, .8181412947

13, 65, 22, 13, 100, 500, .8783457046

12, 60, 28, 12, 100, 500, .9173573879

11, 55, 34, 11, 100, 500, .9384058755

10, 50, 40, 10, 100, 500, .9433483924

9, 45, 46, 9, 100, 500, .9332468113

8, 40, 52, 8, 100, 500, .9086163473

7, 35, 58, 7, 100, 500, .8695277077

6, 30, 64, 6, 100, 500, .8156202299

5, 25, 70, 5, 100, 500, .7460326647

4, 20, 76, 4, 100, 500, .6592146181

3, 15, 82, 3, 100, 500, .5524945044

2, 10, 88, 2, 100, 500, .4209923363

1, 5, 94, 1, 100, 500, .2540011951

> plot([seq([i,S(i)],i=0..16)],'n[25]'=0..16,colour=black);

Plot_2d

>