Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: Wow! Re: Slide rules at the ready!

Author: Odd Gunnar Malin

Date: 07:46:15 04/21/05

Go up one level in this thread


On April 21, 2005 at 09:57:34, Eelco de Groot wrote:

>I changed the Rtdiff routine so that it should now converge faster, using not a
>slope of fixed 700 everytime but making use of the fact that I can calculate the
>slope in Performance vs. Ratingdifference when assuming the normal distribution.
>I believe this is similar to Newton's method, for finding the roots of a graph
>or function numerically? But here I actually now the precise slope.
>
>But if Hastings approximation is just not good enough or I have forgotten
>another minus sign....it will of course not work... So I'll try to put this into
>an actual program. I have never made macro's for Excel yet, I will certainly try
>that now that you showed me how, Odd Gunnar! That is probably the easiest thing
>to do.
>
>These are the new routines, until further notice...:
>
>FUNCTION phi(x:REAL):REAL;
>CONST 	p=0.2316419;
>	c1=0.31938153;
>	c2=-0.356563782;
>	c3=1.78147937;
>	c4=-1.821255978;
>	c5=1.330274429;
>VAR t,sndf:REAL;
>BEGIN
>  sndf:=EXP(-SQR(x)/2)/SQRT(2*PI);
>  t:=1/(p*x+1);
>  phi:=-(((((c5*t+c4)*t+c3)*t+c2)*t+c1)*t*sndf)+1;
>END;
>
>
>
>FUNCTION Rtdiff(Performance:REAL):REAL;
>CONST	tol=0.0001;
>	sdev=200*SQRT(2);
>VAR delta,slope:REAL;
>BEGIN
>  slope:=708;
>  Rtdiff:=(Performance-0.50)*slope;
>  delta:=1
>  WHILE delta >= tol DO BEGIN
>     Iteration:=phi(Rtdiff/sdev);
>     delta:=Performance-Iteration;
>     slope:=400*SQRT(PI)*EXP(SQR(Rtdiff/sdev)/2);
>     Rtdiff:=Rtdiff+(delta*slope);
>  END;
>END;
>
>
>Regards, Eelco
>

Now you have it!
http://home.online.no/~malin/sjakk/elo.gif
Your number are equal with Excels Norm.dist function.

  Score      FIDE     Log10   Norm.dist. Schmitt     W-L      Groot
   0,50       0         0         0         0         0         0
   0,51       7         7         7         7         8         7
   0,52       14        14        14        14        16        14
   0,53       21        21        21        21        24        21
   0,54       29        28        28        28        32        28
   0,55       36        35        36        36        40        36
   0,56       43        42        43        43        48        43
   0,57       50        49        50        50        56        50
   0,58       57        56        57        57        64        57
   0,59       65        63        64        65        72        64
   0,60       72        70        72        72        80        72
   0,61       80        78        79        79        88        79
   0,62       87        85        86        87        96        86
   0,63       95        92        94        94       104        94
   0,64      102       100       101       102       112       101
   0,65      110       108       109       110       120       109
   0,66      117       115       117       118       128       117
   0,67      125       123       124       125       136       124
   0,68      133       131       132       133       144       132
   0,69      141       139       140       142       152       140
   0,70      149       147       148       150       160       148
   0,71      158       156       157       158       168       157
   0,72      166       164       165       167       176       165
   0,73      175       173       173       175       184       173
   0,74      184       182       182       184       192       182
   0,75      193       191       191       193       200       191
   0,76      202       200       200       202       208       200
   0,77      211       210       209       211       216       209
   0,78      220       220       218       221       224       218
   0,79      230       230       228       231       232       228
   0,80      240       241       238       241       240       238
   0,81      251       252       248       251       248       248
   0,82      262       263       259       262       256       259
   0,83      273       275       270       273       264       270
   0,84      284       288       281       285       272       281
   0,85      296       301       293       297       280       293
   0,86      309       315       306       309       288       306
   0,87      322       330       319       322       296       319
   0,88      336       346       332       336       304       332
   0,89      351       363       347       350       312       347
   0,90      366       382       362       366       320       362
   0,91      383       402       379       382       328       379
   0,92      401       424       397       400       336       397
   0,93      422       449       417       420       344       417
   0,94      444       478       440       443       352       440
   0,95      470       512       465       468       360       465
   0,96      501       552       495       499       368       495
   0,97      538       604       532       539       376       532
   0,98      589       676       581       597       384       581
   0,99      677       798       658       685       392       658
   1,00

Excel format (basic) of your code:

Function phi(x)
  p = 0.2316419
  c1 = 0.31938153
  c2 = -0.356563782
  c3 = 1.78147937
  c4 = -1.821255978
  c5 = 1.330274429
  Pi = 3.14159265358979
  sndf = Exp(-(x * x) / 2) / Sqr(2 * Pi)
  t = 1 / (p * x + 1)
  phi = -((((c5 * t + c4) * t + c3) * t + c2) * t + c1) * t * sndf + 1
End Function

Function Rtdiff(Performance)
  Pi = 3.14159265358979
  tol = 0.0001
  sdev = 200 * Sqr(2)
  Slope = 708
  Rtdiff2 = (Performance - 0.5) * Slope
  delta = 1
  Do While delta >= tol
    Iteration = phi(Rtdiff / sdev)
    delta = Performance - Iteration
    Slope = 400 * Sqr(Pi) * Exp((Rtdiff * Rtdiff) / (sdev * sdev * 2))
    Rtdiff = Rtdiff + (delta * Slope)
  Loop
End Function

Odd Gunnar



This page took 0 seconds to execute

Last modified: Thu, 15 Apr 21 08:11:13 -0700

Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.