Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Table[Flatten[{h} /. FindRoot[h == F[h, b, g], {b, 1, 1000}, {g, 1, 60})
- ι[m_, n_] := Binomial[n, n*(1 - m)/2]*2^(-n);
- f[m_, h_, b_, g_, n_] := (h*m + g/2*m^2) +
- 1/(n*b)*Log[ι[m, n]];
- μ[m_, h_, b_, g_, n_] :=
- Exp[b*n*f[m, h, b, g, n] + b*n*(-h + g/2)]/
- Sum[Exp[b*n*f[x, h, b, g, n] + b*n*(-h + g/2)], {x, -1 + 2/n,
- 1 - 2/n, 2/n}];
- moment[h_, x_, b_, g_, n_] := Sum[m^x*μ[m, h, b, g, n], {m, -1 + 2/n, 1 - 2/n, 2/n}];
- var[h_, b_, g_, n_] := moment[h, 2, b, g, n] - moment[h, 1, b, g, n]^2;
- cov[h_, b_, g_, n_] := moment[h, 3, b, g, n] - moment[h, 1, b, g,n]*moment[h, 2, b, g, n];
- F[h_,b_,g_,n_]:= -d*b*(cov[h, b, gg, n] +
- 2 var[h, b, gg, n]);
- n = 100;
- d = 0.9;
- glist = Table[g, {g, 0.4, 1, 0.01}];
- blist = Table[b, {b, 1.1, 10.1, 0.01}];
- heatdata = Table[
- Flatten[{h} /.
- FindRoot[
- h == F[h,b,g,n], {h, -0.01}]][[1]]
- , {b, blist}, {g, glist}];
- n = 100;
- mlist = Range[-1. + 2/n, 1. - 2/n, 2./n];
- m2list = mlist^2;
- m3list = mlist^3;
- logiotalist = Log[Binomial[n, n*(1 - mlist)/2]*2^(-n)];
- d = 0.9;
- glist = Range[0.4, 1, 0.01];
- blist = Range[1.1, 10.1, 0.01];
- ClearAll[F];
- F[h_?NumericQ, b_, g_] :=
- Module[{var, cov, explist, μlist, mom1, mom2, mom3},
- explist = Exp[(b n h) mlist + (b n g/2) m2list + logiotalist + b n (-h + g/2)];
- μlist = explist/Total[explist];
- mom1 = μlist.mlist;
- mom2 = μlist.m2list;
- mom3 = μlist.m3list;
- var = Subtract[mom2, mom1 mom1];
- cov = Subtract[mom3, mom1 mom2];
- (-d b) (cov + 2. var)
- ];
- {t1, r1} = F[0.1, blist[[1]], glist[[1]], n] // RepeatedTiming;
- {t2, r2} = Fnew[0.1, blist[[1]], glist[[1]]] // RepeatedTiming;
- Abs[r1 - r2]/r1
- t1/t2
- ParallelEvaluate[Off[General::munfl]];
- heatdata = Developer`ToPackedArray[
- ParallelTable[
- Block[{h0, h},
- h0 = -0.01;
- Developer`ToPackedArray[
- Table[
- h0 = h /. FindRoot[h == Fnew[h, b, g], {h, h0}],
- {b, blist}]
- ]
- ],
- {g, glist}]
- ]; // AbsoluteTiming // First
- explist = Exp[(b n h) mlist + (b n g/2) m2list + logiotalist + b n (-h + g/2)];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement