Equal tempered Scale by Strähle
>t=0:0.1:1; d12=(0:12)/12; plot2d(t,d12'*t,a=-0.2,b=1.2,c=-0.2,d=1.2); ...
>m=-1.2; x=m/(m-1); y=x; x1=1-2*(1-x); y1=m*(x1-1); ...
>plot2d([x1,1],[y1,0],color=4,add=1); ...
>x=m/(m-d12); y=d12*x; plot2d(x,y,points=1,style="o",add=1); insimg;

>xe=x1+(1-x1)/2^d12; ye=m*(xe-1); ...
> plot2d(xe,ye,points=1,style="[]",color=6,add=1); insimg;

>sol &= solve([y=d*x,y=m*(x-1)],[x,y])
m d m
[[x = - -----, y = - -----]]
d - m d - m
>x1 &= 1-2*(1-m/(m-1)); y1 &= m*(x1-1)
m
- 2 m (1 - -----)
m - 1
>&(m/(m-d)-x1)/(1-x1), function f(m,d) &= ratsimp(%)
m m
----- + 2 (1 - -----) - 1
m - d m - 1
-------------------------
m
2 (1 - -----)
m - 1
- (d - 2) m - d
---------------
2 m - 2 d
>f(-1.2,0.5), 2^(-0.5)
0.676470588235
0.707106781187
>f(-1.2,1),
0.5
>f(-1.2,d12)/2^(-d12)-1
[ 0 -0.0162128409521 -0.0281121289029 -0.0363321654288
-0.0413644185582 -0.043594125105 -0.0433261195711 -0.0408034134014
-0.0362207898765 -0.0297349054765 -0.0214718997475 -0.011533200105
0 ]
>function map g(m) := max(abs(f(m,d12)/2^(-d12)-1))
>plot2d("g",-10,-0.2); insimg;

>mopt=fmin("g",-10,-0.2)
-2.41416056259
>g(mopt)
0.00129116472778
>log(1+g(mopt))/log(2^(1/12))
0.0223386650501
>-(1+sqrt(2))
-2.41421356237
>t=0:0.1:1; d12=(0:12)/12; plot2d(t,d12'*t,a=-0.2,b=1.2,c=-0.2,d=1.2); ...
> m=mopt; x=m/(m-1); y=x; x1=1-2*(1-x); y1=m*(x1-1); ...
> plot2d([x1,1],[y1,0],color=4,add=1); ...
> x=m/(m-d12); y=d12*x; plot2d(x,y,points=1,style="o",add=1); ...
> xe=x1+(1-x1)/2^d12; ye=m*(xe-1); ...
> plot2d(xe,ye,points=1,style="[]",color=6,add=1); insimg;

>&solve(f(m,1/2)=1/sqrt(2),m), &rat(rhs(%[1]))|algebraic
sqrt(2) - 2
[m = -------------]
3 sqrt(2) - 4
- sqrt(2) - 1
>plot2d("f(-(1+sqrt(2)),x)-2^(-x)",0,1); insimg;

>&solve(f(m,7/12)=2/3,m), &rat(rhs(%[1]))|algebraic
7
[m = - -]
3
7
- -
3
>2/3, 2^(-7/12)
0.666666666667
0.667419927085
>plot2d("f(-7/3,x)-2^(-x)",0,1); insimg;

>log(1+g(-7/3))/log(2^(1/12))
0.0449620315388
>&solve(x=-7/3*(x-1),x)
7
[x = --]
10
>x0=0; y0=5; t=-1:2/12:1; ...
>plot2d(dup(x0,13)|t',dup(y0,13)|dup(0,13),a=-3,b=3,c=-0.5,d=5.5); ...
>x1=-7/10; y1=3/10*y0; x2=1-2*(1-x1); y2=2*y1; ...
>plot2d([1,x2],[0,y2],color=4,add=1); ...
>plot2d(x2+(1-x2)/2^d12,y2-y2/2^d12,points=1,style="x",color=6,add=1); ...
>plot2d(x2+(1-x2)/2^d12,y2-y2/2^d12,points=1,style="[]",color=6,add=1); ...
>insimg(35);

>fracprint(contfracbest(2^(1/12),2))
18/17
>n=0:12; X=((2^(n/12)_f(m,1-n/12)*2_(18/17)^n)); X'
1 1 1
1.05946309436 1.06039942424 1.05882352941
1.12246204831 1.12389864513 1.12110726644
1.189207115 1.19074257728 1.1870547527
1.25992104989 1.26120263411 1.25688150286
1.33483985417 1.33558041128 1.33081570891
1.41421356237 1.41421200218 1.4090989859
1.49830707688 1.49747307558 1.49198716154
1.58740105197 1.58578487743 1.57975111222
1.68179283051 1.67962135893 1.67267764823
1.78179743628 1.77951768565 1.77107045107
1.88774862536 1.88608045021 1.87525106584
2 2 1.98555995207
>plot2d(n,X[3]-X[1],a=0,b=12,c=-0.02,d=0.02,>points); ...
>plot2d(n,X[2]-X[1],>points,>add,color=red); insimg;

>fracprint(contfracbest(2^(1/12),3))
107/101
>n=0:12; X=((2^(n/12)_f(m,1-n/12)*2_(107/101)^n)); X'
1 1 1
1.05946309436 1.06039942424 1.05940594059
1.12246204831 1.12389864513 1.12234094697
1.189207115 1.19074257728 1.18901466659
1.25992104989 1.26120263411 1.25964920124
1.33483985417 1.33558041128 1.33447984685
1.41421356237 1.41421200218 1.41375587736
1.49830707688 1.49747307558 1.49774137503
1.58740105197 1.58578487743 1.58671611018
1.68179283051 1.67962135893 1.68097647316
1.78179743628 1.77951768565 1.78083646166
1.88774862536 1.88608045021 1.88662872671
2 2 1.99870568077
>plot2d(n,X[3]-X[1],a=0,b=12,c=-0.02,d=0.02,>points); ...
>plot2d(n,X[2]-X[1],>points,>add,color=red); insimg;

Examples Homepage