У Рамануджана есть вторая формула приближенного расчета длины эллипса. Она более точная. На ее основе создано совсем уж замечательное выражение:

Чтобы не мучиться и не набивать текст формулы, даю его на здоровьице:
Код: Выделить всё
L= Pi*(a+b)*(1+3*(a-b)^2/((a+b)^2*(10+sqrt(4-3*(a-b)^2/(a+b)^2))))*(22/(7*Pi)-(22/(7*Pi)-1)*exp(-0.4896141612727e-5*ln(b/a)^(12.472927032747/ln(b/a)^.526617815392+2.356417700185)))
Расчет четырех параметров выполнялся по программе:
Код: Выделить всё
open #1,"ell-dat.txt","r"
open #2,"ell-2ramanud-t.txt","w"
dim x(300),y(300),f(300)
z=.001:t=22/7/pi:for i=1 to 72:input #1 x(i),y(i):next i
a0= -1:b0= 1:c0=-1:d0=1:s1=10^100:nn=100000000
for j=1 to nn:a=a0*(1+z*(ran()-.5)):b=b0*(1+z*(ran()-.5)):c=c0*(1+z*10*(ran()-.5)):d=d0*(1+z*(ran()-.5))
s=0:for i=1 to 72:x=x(i):y=y(i)
f(i)=t-(t-1)*exp(a*log(x)^(b*log(x)^c+d))
s=s+(y-f(i))^2:next i:if s<=s1 then:print f,a,b,c,d,s:s1=s:a0=a:b0=b:c0=c:d0=d:f0=f:r0=r
a1=a:b1=b:c1=c:d1=d:sk=s:fi:next j:print a1,b1,c1,d1,sk
Код: Выделить всё
1.1 1.000000000
1.2 1.000000000
1.3 0.9999999997
1.4 1.000000000
1.5 1.000000000
1.6 1.00000000
1.7 0.9999999998
1.8 0.9999999999
1.9 1.000000000
2 0.9999999999
3 1.000000033
4 1.000000249
5 1.000000851
6 1.000001964
7 1.000003629
8 1.000005821
9 1.000008487
10 1.000011558
20 1.000052396
30 1.000093261
40 1.000127453
50 1.000155380
60 1.000178317
70 1.000197394
80 1.000213474
90 1.000227195
100 1.000239034
200 1.000304457
300 1.000332172
400 1.000347560
500 1.000357376
600 1.000364190
700 1.000369203
800 1.000373052
900 1.000376096
1000 1.000378564
2000 1.000390105
3000 1.000394128
4000 1.000396174
5000 1.000397416
6000 1.000398248
7000 1.000398845
8000 1.000399299
9000 1.000399652
10000 1.000399932
200000 1.000402370
300000 1.000402414
400000 1.000402434
500000 1.000402448
600000 1.000402456
700000 1.000402462
800000 1.000402467
900000 1.000402472
1000000 1.000402474
2000000 1.000402486
3000000 1.000402491
4000000 1.000402493
5000000 1.000402494
6000000 1.000402495
7000000 1.000402496
8000000 1.000402496
9000000 1.000402497
10000000 1.000402497
20000000 1.000402498
30000000 1.000402499
40000000 1.000402498
50000000 1.000402499
60000000 1.000402499
70000000 1.000402499
80000000 1.000402499
90000000 1.000402500
100000000 1.000402500
[/color]