|
|
● Maxima のインストール
|
●マニュアル
|
デフォルトのインストールでは /cygdrive/c/Program\ Files/Maxima-5.10.0/share/maxima/5.10.0/tests/ にサンプルファイルがあるので試しても良い。 例えば batch("c:/Program\ Files/Maxima-5.10.0/share/maxima/5.10.0/tests/rtest1.mac");
●マニュアル
f:x*y*(x^2-y^2)/(x^2+y^2)$ fx:factor(diff(f,x))$ fy:factor(diff(f,y))$ fxx:factor(diff(fx,x))$ fxy:factor(diff(fx,y))$ fyx:factor(diff(fy,x))$ fyy:factor(diff(fy,y))$ print("fx=",fx, "fy=",fy)$ print("fxx=",fxx, "fxy=",fxy)$ print("fyy=",fyy, "fyx=",fyx)$
x:cos(t)$ y:sin(t)$ /* def param */ f:x^4*y^2$ /* def func */ diff(f,t);
depends(y,x)$ diff(x^2+x*y+y^2-1=0,x); solve(%,diff(y,x));
depends(y,x)$ f:x^2+x*y+y^2-1=0; f1:diff(f,x); f2:diff(f,x,2); factor(solve([f1,f2],[diff(y,x),diff(y,x,2)]));
x:u+v$ y:u-v$ f:x*exp(x*y)$ factor(diff(f,u)); factor(diff(f,v)); kill(all);
f:2*x^3-3*x^2+6*x*y^2-3*y^2$ fx:diff(f,x)=0$ fy:diff(f,y)=0$ factor(solve([fx,fy],[x,y]));
f:(x+1)*cos(x+2*y)$ define(fx(x,y),diff(f,x,1)); define(fy(x,y),diff(f,y,1)); define(fxx(x,y),diff(f,x,2)); define(fyy(x,y),diff(f,y,2)); define(fxy(x,y),diff(diff(f,y,2),x,1)); fx(0,0); fy(0,0); fxx(0,0); fyy(0,0); fxy(0,0);
f(x):=(exp(x)-1)/x; /* moment gen. fn. for uniform dist. */ define( df(x), factor(diff( f(x), x ) )); define( df2(x), factor(diff( df(x), x ) )); limit(df(x),x,0); /* First moment */ limit(df2(x),x,0); /* Second moment */
n:1000$ /* Bin(n,p) */ p:1/100$ /* Bin(n,p) */ l:10$ /* P(l <= Bin(n,p) <= u) */ u:13$ bfloat(sum(binomial(n,i)*p^i*(1-p)^(n-i),i,l,u));
/* Pepysの問題, Grimmett, Stirzaker, One thausand.., Excercise 3.8.5, p.25 */ kill(all)$ k:6$ p:1/k$ p[n]:=1-sum(binomial(k*n,i)*p^i*(1-p)^(k*n-i),i,0,n-1)$ for n:1 thru 3 do(print("p[",n,"]=",rat(p[n]), " approx ", float(p[n])), newline());
M(t):= (p*%e^t+1-p)^n; /* moment gen. fun. */ for k:1 thru 5 do(define( dM(t), diff( M(t), t,k ) ), print("E(X^",k,")=",rat(dM(0),n)), newline());
/* Stirling Fomula for nCk */ load(log10)$ n:1000000$ k:100$ /* n choose k */ L:8$ /* represent precision */ g[n,k]:=(log10(n)-log10(k)-log10(n-k))/2 +n*log10(n)-k*log10(k)-(n-k)*log10(n-k)-(log10(2*%pi))/2$ /* Stirling formula for log10(nCk) */ a:floor(float(g[n,k]))$ /* integer part */ b:10^(float(g[n,k]-a))$ /* fractional part */ f1[n,k]:=(1+1/(11*n))/((1+1/(12*k))*(1+1/(12*(n-k))))$ /* upper estimate */ f2[n,k]:=(1+1/(12*n))/((1+1/(11*k))*(1+1/(11*(n-k))))$ /* lower estimate */ b1:b*f1[n,k]$ /* upper coefficient */ b2:b*f2[n,k]$ /* lower coefficient */ print(block([fpprec:L], bfloat(b2)),"x", "10^",a, "<=", n,"choose", k, "<=", block([fpprec:L], bfloat(b1)),"x","10^",a); print("precise value =", bfloat(binomial(n,k)));
N:15$ n:3$ K:6$ k:2$ /* 中田、内藤、確率・統計, 学術図書, 2017, p.99, 4.8 */ sol:binomial(K,k)*binomial(N-K,n-k)/binomial(N,n)$ print("超幾何確率: 成功", K, "個、失敗", N-K, "個")$ print(N,"個から",n, "個選び", k, "個成功する確率")$ print("Prob(X=",k,")=",sol)$
DICE:6$ /* # of faces of DICE */ N:10$ /* Trial times */ Q(N,t):=sum((-1)^i*binomial(N,i)*binomial(t-DICE*i-1,N-1)/DICE^N,i,0,(t-N)/DICE)$ for i:N thru DICE*N do print(i, Q(N,i)); j:25$ print("Prob(", N,"times sum=",j,")=", Q(N,j),"=", float(Q(N,j)))$ Adata:makelist([k, Q(N,k)], k, N, DICE*N)$ plot2d([discrete,Adata]); kill(all)$漸化式
Q(n,r) = \frac{1}{6}\sum_{k=\max\{r-6,n-1\}}^{\min\{r-1,6(n-1)\}}Q(n-1,k) (n\leq r \leq 6n,\ n\geq 2) \\ Q(1,r)= \frac{1}{6} (r=1,\cdots,6)プログラム
DICE:6$ /* # of faces of DICE */ N:3$ /* Trial times */ DSum:25$ /* Sum of DICEs */ Q(n,l) /* Q(n,l)=P(Sn=l) */ := block( if(n=1) then return(1/6), return(sum(Q(n-1,k),k,max(l-DICE,n-1),min(l-1,DICE*(n-1)))/6) ); for n:1 thru N do( for l:n thru DICE*n do( print("Q(",n,",",l,")=",Q(n,l))), newline() )$ kill(all);
load(simplify_sum)$ simplify_sum(sum( 1/(k+2)- 1/(k+3), k, 1, inf) ); simplify_sum(sum( 1/(k*k) , k, 1, inf) ); simplify_sum(sum( binomial(n,k)/(k+1), k, 0, n)); simplify_sum(sum( binomial(2*(n-k),n-k)*binomial(2*k,k), k, 0, n)); simplify_sum(sum( k*k*binomial(2*(n-k),n-k)*binomial(2*k,k), k, 0, n)); /* Fibonacci Quartly, 2012, Vol.50, No.1, H-714 の問題*/
K:100$ /* ペテルスブルグのゲームの裾確率 f(x) = P(X>x)のグラフ */ f1(x):=2^(log(x)/log(2)-fix(log(x)/log(2)))/x; f(x):=ev(f1(x)); plot2d(f(x),[x,1,K]);
A[n]:= block(if n = 1 then return(3) else (if n = 2 then return(19) else return((2*n+1)*A[n-1]+n^2*A[n-2])))$ B[n]:= block(if n = 1 then return(1) else (if n = 2 then return(6) else return((2*n+1)*B[n-1]+n^2*B[n-2])))$ for n:1 thru 10 do print("n=", n, "ratio=", A[n]/B[n], "pi =", float(A[n]/B[n])); kill(all);
n:10$ f(x):=1-cos(2*%pi*n*x); F(x):=x-sin(2*%pi*n*x)/(2*%pi*n); plot2d(F(x),[x,0,1]);
f(x):=exp(x)/(1+exp(x))^2; /* logistic density */ F(x):=integrate(f(t), t, minf, x); /* distribution func */ plot2d(F(x),[x,-10,10]);
F(x):=1-1/log(x); /* log-Pareto distribution func */ diff(F(x), x); f(x):=diff(F(x), x)$ /* log-Pareto density */ plot2d(f(x),[x,%e,10]); kill(all);
a:3$ b:1$ plot2d([parametric,a*cos(t),b*sin(t),[t,0,2*%pi]],[yx_ratio, -1]); /* maxima の旧バージョンだと [yx_ratio, -1] が不可? */
/* アステロイド */ a:1$ plot2d([parametric,cos(t)^3,sin(t)^3,[t,0,2*%pi]],[yx_ratio, -1]); /* カージオイド */ a:1$ b:1$ r(t):=a+b*cos(t)$ plot2d([parametric,r(t)*cos(t),r(t)*sin(t),[t,0,2*%pi]],[yx_ratio, -1]); /* Jacob Bernoulli のレムニスケート (解析概論p.136)*/ a:1$ r(t):=sqrt(2*a*cos(2*t))$ plot2d([parametric,r(t)*cos(t),r(t)*sin(t),[t,0,2*%pi]],[yx_ratio, -1]); /* デカルトの正葉線 (解析概論p.311, 例1) x^3+y^3-3axy =0 //r=3acosθsinθ/((cosθ)^3+(sinθ)^3) x=3at/(1+t^3), y=3at^2/(1+t^3) (t\neq -1)p.312の図を見てパラメータ選択! */ a:1$ eps1:0.3$ eps2:0.3$ L1:100$ L2:100$ plot2d( [[parametric,3*a*t/(1+t^3),3*a*t^2/(1+t^3),[t,-L1,-1-eps1]], [parametric,3*a*t/(1+t^3),3*a*t^2/(1+t^3),[t,-1+eps2,L2]]]);
load(implicit_plot)$ L:3$ implicit_plot(x^4+3*x^2+y^3-y=0,[x,-L,L], [y,-L,L], [gnuplot_preamble,"set size square"]); /* 越昭三他著, 微分積分学概論[新訂版], サイエンス社, p.141例題6 */ implicit_plot(x^3-3*x*y+y^3=0,[x,-L,L], [y,-L,L], [gnuplot_preamble,"set size square"]); /* 正葉線 */ load(implicit_plot)$ L:2$ implicit_plot(x^2+(y-x^(2/3))^2=1,[x,-L,L], [y,-L,L], [gnuplot_preamble,"set size square"]); /* ハート曲線1 */ implicit_plot(x^2+2*(y-3*x^(2/3)/5)^2=1,[x,-L,L], [y,-L,L], [gnuplot_preamble,"set size square"]); /* ハート曲線2 */
load(implicit_plot)$ L:2$ draw2d(grid = true, line_type = solid, key = "x^4+2*x^2+y^3-y=0", implicit(x^4+2*x^2+y^3-y=0, x, -L,L, y, -L,L), color = red, line_type = dots, key = "3*y^2=1", implicit(3*y^2=1, x,-L,L, y,-L,L), title = "Implicit function and Auxiliary lines" )$
q:1/2$ N:1000$ f1(x):=(1-q)*sum(q^(l-x)*%e^(-q^(l-x)), l, -N, N); f(x):=ev(f1(x)); plot2d(f(x),[x,0,1]);
/* f: cont, g(x,n): Bernstein polynomial (nth approx) */ f(x) := if x # 0 then x^(1/2)*sin(1/x) else 0$ g(x,n) := sum(binomial(n,i)*x^i*(1-x)^(n-i)*f(i/n),i,0,n)$ plt_list1 :makelist(g(x,n),n,1,10)$ plt_list: cons(f(x), plt_list1)$ plot2d(plt_list, [x,0,1],[legend,false],[gnuplot_preamble,"set size square"])$ kill(all)$
g(x):=if x-fix(x)<=0.5 then x-fix(x) else 1-(x-fix(x))$ f[n](x):=sum(g(2^k*x)*2^(-k),k,0,n)$ ratprint: false$ /* plot2d(f[7](x), [x,0,1]); */ plt_list : makelist(f[n](x),n,0,10)$ plot2d(plt_list, [x,0,1],[legend,false],[gnuplot_preamble,"set size square"]); kill(all);
load(fourie)$ f(x):=x$ totalfourier(f(x),x,%pi); define(g1(x),subst(10,inf,%)); /* 第10項までの和 */ g(x):=ev(g1(x)); plot2d([f(x),g(x)],[x,-2*%pi,2*%pi], [y,-2*%pi,2*%pi]);
z:x+y*%i; f:(z+%i)^3; u:realpart(f); v:imagpart(f); diff(u,x); diff(u,y); diff(v,x); diff(v,y);
z:x+y*%i$ f:1/conjugate(z)$ u:realpart(f)$ v:imagpart(f)$ print("f=", f)$ print("u=", u)$ print("v=", v)$ print("u_x=", factor(diff(u,x)))$ print("u_y=", factor(diff(u,y)))$ print("v_x=", factor(diff(v,x)))$ print("v_y=", factor(diff(v,y)))$
L:10$ f1(x):=1/(sqrt(2*%pi)*x)*exp(-(log(x))^2)$ /* 対数正規分布 (例) Durrett 4th ed. p.120, Sec. 3.3.5 */ f2(x):=1/(sqrt(2*%pi)*x^(3/2))*exp(-1/(2*x))$ /* 片側1/2安定分布 (例) Durrett 4th ed. (3.7.12) */ plot2d([f1(x),f2(x)],[x,0,L]); /* 重ね書き */
Eulerian[n,k]:=sum((-1)^r*binomial(n+1,r)*(k+1-r)^n,r,0,k)$ for n:1 thru 5 do ( for k:0 thru n-1 do sprint(Eulerian[n,k]), newline())$ kill(all);
a:6$ b:3$ c:1$ A:matrix([a,b,c],[c,a,b],[b,c,a])/(a+b+c); /* transition mat */ pi: [1, 0, 0]; /* init. distrib. */ for n:1 thru 4 do print(pi.A^^n); kill(all);
/* 5x5行列(吸収壁ランダムウォークの推移行列のn乗の計算) 羽鳥、森、有限マルコフ連鎖、培風館、1982、p.22 例4 4x4行列は母関数によるアルゴリズムとその具体形がある (が、5x5はやりたくない!) */ kill(all); T:matrix([1,0,0,0,0],[p,0,q,0,0],[0,p,0,q,0],[0,0,p,0,q],[0,0,0,0,1]); /* 1,5が吸収壁ランダムウォークの推移行列 (普通は右がp,左がqであるが、以下のp.155, Sec. 2.2 に従い逆にしている Y. Liu, Random Walks in Tennis, Missouri J. Math. Sci. 13(3): 154-162, 2001) */ /* eigenvalues(T); 固有値 */ ET:eigenvectors(T)$ /* 固有ベクトル(まとめて出力) */ X1:transpose(ET[2][1][1])$ /*重複度1の固有値の固有ベクトル*/ X2:transpose(ET[2][2][1])$ /*重複度1の固有値の固有ベクトル*/ X3:transpose(ET[2][3][1])$ /*重複度1の固有値の固有ベクトル*/ X4:transpose(ET[2][4][1])$ /*重複度2の固有値:配列の番号に注意 */ X5:transpose(ET[2][4][2])$ /*重複度2の固有値:配列の番号に注意 */ P:addcol(X1,X2,X3,X4,X5)$ /* 列ベクトルを並べて変換行列を作成*/ Pinv:(P^^-1),ratsimp$ /* Pの逆行列 */ S:Pinv.T.P,ratsimp$ /* 対角行列 */ declare(n, integer)$ /* nが整数であると宣言 */ S2n:matrixmap(lambda([x],x^(2*n)),S)$ /* 対角行列の2n乗 S^(2n) */ S2n1:matrixmap(lambda([x],x^(2*n+1)),S)$ /* 対角行列の2n+1乗 S^(2n+1) */ T2n:P.S2n.Pinv,fullratsimp,radcan,factor; /* 行列の2n乗 T^2n */ T2n1:P.S2n1.Pinv,fullratsimp,radcan,factor; /*行列の2n+1乗 T^2n+1*/
m:3; b:10; /* amazing matrix */ tr_p[i,j]:=b^(-m)*sum((-1)^r*binomial(m+1,r)* binomial(m-1-i+(j+1-r)*b,m) , r,0,j-fix(i/b)); A: genmatrix(tr_p,m-1,m-1,0,0); eigenvectors(A); kill(all);
f:[3*x+2*y,-2*x+y]$ /* def fun */ v:[x,y]$ /* def var */ jacobian(f,v); determinant(%);
r: matrix( [1], [0], [0], [0] ); A:matrix([1,0,0,1],[1,0,0,1],[1,0,0,1],[1,0,0,1]); I4:ident(4); (I4-A/4)^^(-1).r/4; /* 正方形領域におけるhitting probの計算*/
/* 森口繁一, 応用数学夜話, ちくま文庫, 2011, 256ページ, f[n](x):= E(N_x), (n≦x≦n+1) とおく。 257ページには以下のようになっている: f[2](x)=4-2/(x-1), f[3](x)=8-10/(x-1)-4*(log(x-2))/(x-1) maxima の計算によると以下のようになり答が違う! f[2](x)=(3*x-5)/(x-1); f[3](x)=-(4*log(x-2)-7*x+17)/(x-1); */ assume(x-100>0)$ f[n](x):=block(if n=0 then 0 else (2*( sum( integrate(f[k-1](t), t, k-1, k) ,k,1,n-1) + integrate(f[n-1](t), t, n-1, x-1))/(x-1)+1)); for n:1 thru 4 do print(factor(f[n](x))); kill(all);
/* n回(nは偶数)コインを投げたときにぴったり半分n/2になる確率: a k人で行ったときに一人はぴったり半分になる確率: P[k] (100回のコイン投げを想定)9人以上いるとぴったり50回が出る確率が1/2を越える */ n:100$ a:binomial(n,n/2)/2^n$ P[k]:= 1-(1-a)^k$ Adata:makelist([k, P[k]], k, 10, 30)$ k:25$ print("prob(",k,")=",float(P[k])); k:8$ print("prob(",k,")=",float(P[k])); k:9$ print("prob(",k,")=",float(P[k])); plot2d([discrete,Adata]); kill(all);
f[t,m,n,i,j]:=stirling2(m,i)*stirling2(n,j)*prod(t-k,k,0,i+j-1)/(t^(m+n)); P[m,n,t]:=sum( sum(f[t,m,n,i,j], i,1,m) ,j,1,n); AP[m,n,t]:=%e^(-t*(1-(1-1/t)^m)*(1-(1-1/t)^n)); nstep:3; APdata:makelist([10*n, float(AP[10*n,10*n,1000])], n, 1, nstep); Pdata:makelist([10*n, float(P[10*n,10*n,1000])], n, 1, nstep); plot2d( [[discrete,APdata],[discrete,Pdata]] );
sum:0; n:10; for i:0 thru n do sum:sum+1/i!; float(sum);
G(t):= (q*t^3+(1-2*q)*t^2)/(1-q*t^2); define( dG(t), diff( G(t), t ) )$ define( d2G(t), diff( G(t), t, 2 ) )$ E : dG(1)$ V2 : d2G(1)$ V : V2 +E -E^2$ print("henkin=",factor(radcan(E)))$ print("bunsan=",factor(radcan(V)))$
print("Gorroochurn Classic Problem of Probability, Wiley, 2012")$ print("p. 85, Table 9.1")$ print("h_n of 3 Consecutive Heads in n Tosses a Coin")$ n:10$ q:1-p$ H3(s):=p^3*s^3/(1-q*s-q*p*s^2-q*p^2*s^3)$ TYLR:taylor(H3(s),s,0,n)$ for k:1 thru n do(print("h_",k,"=", coeff(TYLR,s^k)), newline());
f(x):= cos(x/2)/cos((2*n+1)*x/2); g(x) := 1/(1-4*P*(sin(x/2))^2); define( df(x), diff( f(x), x ) ); define( d2f(x), diff( f(x), x, 2 ) ); define( dg(x), diff( g(x), x ) ); define( d2g(x), diff( g(x), x, 2 ) ); h(x):=df(x)/dg(x); E : limit(h(x),x,0) /* 平均 */ h2(x):=d2f(x)/(dg(x))^2 - df(x)*d2g(x)/(dg(x))^3; V2 : limit(h2(x),x,0); V : V2 +E -E^2 /* 分散 */; factor(radcan(V)); tex(%)
/* 上野, 測る, 東京図書, 2009, p.17, 問題1.3.1 劉徽の方法によるπの近似 */ L:16$ p(n) := block(if n = 6 then return(1) else return(sqrt(2-sqrt(4-p(n/2)*p(n/2)))))$ lp(n):= n*p(n)/2$ /* πの下からの評価 */ up(n):= n*p(n)*(1-sqrt(4-p(n)*p(n))/4)$ /* πの上からの評価 */ for k:0 thru 10 do( i:6*(2^k), /*print("p_",i,"=", p(i)), */ newline(), print("Estimate pi:",i,"gon", block([fpprec:L], bfloat(lp(i))), ":pi:", block([fpprec:L], bfloat(up(i)))), newline(), print("Error bound:", block([fpprec:L], bfloat( up(i)- lp(i)))), newline()); kill(all);
/* Abdin, T., Mahmoud, H., Modarres, A., & Wang, K. (2022). An index for betting with examples from games and sports. The Mathematical Gazette, 106(565), 32-40. doi:10.1017/mag.2022.7 */ /***************** American roulette p.35 ***************************/ kill(all); fpprec: 3$ eps:0.05$ b:1/2$ p:18/38$ A:-log(1-b)$ B:log(1+b)$ expX:2*p-1$ beta(b,p):=p*B-(1-p)*A$ beta:beta(b,p)$ a(b):=A/radcan(A+B)$ a:a(b)$ tau:log((1-p)*A/(p*B))/(A+B)$ rho(b,p) := (p/a)^a*((1-p)/(1-a))^(1-a)$ rho:rho(b,p)$ nmin:fix(log(eps)/float(log(rho)))+1$ print("American roulette p.35")$ print("b=1/2, P(X=1)=18/38, P(X=-1)=20/38")$ print("expectation=", expX, "=", float(expX))$ print("beta=", float(beta))$ print("tau=", float(tau))$ print("a=",a,"=", float(a))$ print("P(Mn>M0)<=(", float(rho), ")"^n)$ print("P(Mn>M0)<=", eps, "となる n は",nmin, "以上")$ /*********Mixed American roulette p.36 ***************************/ kill(all); fpprec: 10$ eps:0.05$ b:0.5$ p:1/38$ q:19/38$ pval:18-1/2$ mval: -1$ beta(b):=p*log(1+b*pval)+q*log(1+b*mval)$ beta:beta(b)$ phi(t):=p*exp(t*log(1+b*pval))+q*exp(t*log(1+b*mval))$ dphi(t):=diff(phi(t),t)$ tau:find_root (dphi(t), t, 0.1, 0.8)$ rho:phi(tau)$ nmin:fix(log(eps)/float(log(rho)))+1$ print("Mixed American roulette p.36")$ print("P(X=18-1/2)=1/38, P(X=0)=18/38, P(X=-1)=19/38")$ print("beta=", bfloat(beta))$ print("tau=", bfloat(tau))$ print("P(Mn>M0)<=(", bfloat(rho), ")"^n)$ print("P(Mn>M0)<=", eps, "となるnは",nmin, "以上")$ /*********Sports Betting p.37 ***************************/ kill(all); fpprec: 10$ eps:0.05$ b:0.16$ p:0.6$ pval:10/11$ mval: -1$ beta(b):=p*log(1+b*pval)+(1-p)*log(1+b*mval)$ beta:beta(b)$ print("Sports Betting p.37")$ print("b=1/2, P(X=10/11)=0.6, P(X=-1)=0.4")$ print("beta=", bfloat(beta))$ /**** p.39 p=0.6の有利な賭け (Abdin)*******************************/ kill(all); p:0.6$ expX:2*p-1$ beta(b,p):=p*log(1+b)+(1-p)*log(1-b)$ print("Optiminising bets p.39")$ print("P(X=1)=0.6, P(X=-1)=0.4")$ print("expectation=", expX, "=", float(expX))$ b1:find_root(beta(b,p), b, 0.1, 0.5)$ print("beta(b)>0となるbの範囲は 0< b < ", b1)$ /**** p.39 p=0.6の有利な賭け (a(b)利用)*******************************/ kill(all); p:0.6$ expX:2*p-1$ A:-log(1-b)$ B:log(1+b)$ expX:2*p-1$ a(b):=A/radcan(A+B)$ a:a(b)$ print("Optiminising bets p.39")$ print("P(X=1)=0.6, P(X=-1)=0.4")$ print("expectation=", expX, "=", float(expX))$ b1:find_root(a(b)-p, b, 0.1, 0.5)$ print("beta(b)>0となるbの範囲は 0< b < ", b1)$ /**** p.39 p=0.6の有利な賭け (b=0.5と限定)********************/ kill(all); b:0.5$ p:0.6$ eps:0.05$ expX:2*p-1$ A:-log(1-b)$ B:log(1+b)$ expX:2*p-1$ a:A/(A+B)$ rho:(p/a)^a*((1-p)/(1-a))^(1-a)$ nmin:fix(log(eps)/float(log(rho)))+1$ print("Optiminising bets p.39")$ print("P(X=1)=",p, "P(X=-1)=",1-p)$ print("expectation=", expX, "=", float(expX))$ print("b=", b, "rho=", rho)$ print("P(Mn>M0)<=(",float(rho),")"^n)$ print("P(Mn>M0)<=", eps, "となるnは",nmin, "以上")$ /**** p.39 p=0.6の有利な賭け (b=0.2と限定)********************/ kill(all); b:0.2$ p:0.6$ eps:0.05$ expX:2*p-1$ A:-log(1-b)$ B:log(1+b)$ expX:2*p-1$ a:A/(A+B)$ rho:(p/a)^a*((1-p)/(1-a))^(1-a)$ nmin:fix(log(eps)/float(log(rho)))+1$ print("Optiminising bets p.39")$ print("P(X=1)=",p, "P(X=-1)=",1-p)$ print("expectation=", expX, "=", float(expX))$ print("b=", b, "rho=", rho)$ print("P(Mn>M0)>=1-(",float(rho),")"^n)$ print("P(Mn>M0)>=", 1-eps, "となるnは",nmin, "以上")$ /**** p.39, FIGURE 1 のグラフの重ね書き *******************************/ beta(b,p):=p*log(1+b)+(1-p)*log(1-b)$ plot2d([beta(b,0.4),beta(b,0.6)],[b,0,0.9], [title, "beta with p=0.4, 0.6"]); /**** a(b), H(a,0.6) のグラフ(補題\ref{lem:ahanni})*****************/ a(b):=-log(1-b)/log((1+b)/(1-b)); radcan(diff(a(b),b)); plot2d(a(b),[b,0,1],[title, "a(b)"]); H(a,p):=a*log(a/p)+(1-a)*log((1-a)/(1-p))$ /* エントロピー*/ /* plot3d(H(a,p),[a,0.5,1], [p,0,1]); */ plot2d(H(a,0.6),[a,0.5,1],[title, "H(a,0.6)"]); /* */