Advertisement
Guest User

Untitled

a guest
Jun 19th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.07 KB | None | 0 0
  1. Table[Flatten[{h} /. FindRoot[h == F[h, b, g], {b, 1, 1000}, {g, 1, 60})
  2.  
  3. ι[m_, n_] := Binomial[n, n*(1 - m)/2]*2^(-n);
  4. f[m_, h_, b_, g_, n_] := (h*m + g/2*m^2) +
  5. 1/(n*b)*Log[ι[m, n]];
  6. μ[m_, h_, b_, g_, n_] :=
  7. Exp[b*n*f[m, h, b, g, n] + b*n*(-h + g/2)]/
  8. Sum[Exp[b*n*f[x, h, b, g, n] + b*n*(-h + g/2)], {x, -1 + 2/n,
  9. 1 - 2/n, 2/n}];
  10. moment[h_, x_, b_, g_, n_] := Sum[m^x*μ[m, h, b, g, n], {m, -1 + 2/n, 1 - 2/n, 2/n}];
  11. var[h_, b_, g_, n_] := moment[h, 2, b, g, n] - moment[h, 1, b, g, n]^2;
  12. cov[h_, b_, g_, n_] := moment[h, 3, b, g, n] - moment[h, 1, b, g,n]*moment[h, 2, b, g, n];
  13. F[h_,b_,g_,n_]:= -d*b*(cov[h, b, gg, n] +
  14. 2 var[h, b, gg, n]);
  15. n = 100;
  16. d = 0.9;
  17.  
  18. glist = Table[g, {g, 0.4, 1, 0.01}];
  19. blist = Table[b, {b, 1.1, 10.1, 0.01}];
  20.  
  21. heatdata = Table[
  22. Flatten[{h} /.
  23. FindRoot[
  24. h == F[h,b,g,n], {h, -0.01}]][[1]]
  25. , {b, blist}, {g, glist}];
  26.  
  27. n = 100;
  28. mlist = Range[-1. + 2/n, 1. - 2/n, 2./n];
  29. m2list = mlist^2;
  30. m3list = mlist^3;
  31. logiotalist = Log[Binomial[n, n*(1 - mlist)/2]*2^(-n)];
  32.  
  33. d = 0.9;
  34. glist = Range[0.4, 1, 0.01];
  35. blist = Range[1.1, 10.1, 0.01];
  36.  
  37. ClearAll[F];
  38. F[h_?NumericQ, b_, g_] :=
  39. Module[{var, cov, explist, μlist, mom1, mom2, mom3},
  40. explist = Exp[(b n h) mlist + (b n g/2) m2list + logiotalist + b n (-h + g/2)];
  41. μlist = explist/Total[explist];
  42. mom1 = μlist.mlist;
  43. mom2 = μlist.m2list;
  44. mom3 = μlist.m3list;
  45. var = Subtract[mom2, mom1 mom1];
  46. cov = Subtract[mom3, mom1 mom2];
  47. (-d b) (cov + 2. var)
  48. ];
  49.  
  50. {t1, r1} = F[0.1, blist[[1]], glist[[1]], n] // RepeatedTiming;
  51. {t2, r2} = Fnew[0.1, blist[[1]], glist[[1]]] // RepeatedTiming;
  52. Abs[r1 - r2]/r1
  53. t1/t2
  54.  
  55. ParallelEvaluate[Off[General::munfl]];
  56. heatdata = Developer`ToPackedArray[
  57. ParallelTable[
  58. Block[{h0, h},
  59. h0 = -0.01;
  60. Developer`ToPackedArray[
  61. Table[
  62. h0 = h /. FindRoot[h == Fnew[h, b, g], {h, h0}],
  63. {b, blist}]
  64. ]
  65. ],
  66. {g, glist}]
  67. ]; // AbsoluteTiming // First
  68.  
  69. 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