オイラー数E(n)は,sec(x)のテイラー級数の項で,
sec(x) = sum E(n)/n! * x^n (n=0,1,...)
となる.nが奇数ならE(n)=0で,符号が交代する定義もある.
タンジェント数T(n)は,tan(x)のテイラー級数の項で,
tan(x) = sum T(n)/n! * x^n (n=0,1,...)
となる.nが偶数ならT(n)=0で,符号が交代する定義もある.
以下に,面白い算出方法を示す. 「sugimoto氏の数学研究ノート」より引用
**************************************************************
EulerTangent.sas
20100327 翔
オイラー数,タンジェント数の算出
reference
sugimoto氏の数学研究ノート オイラー数とタンジェント数(1) http://homepage3.nifty.com/y_sugi/gf/gf17.htm
wikipediaオイラー数 http://ja.wikipedia.org/wiki/%E3%82%AA%E3%82%A4%E3%83%A9%E3%83%BC%E6%95%B0
wikipediaタンジェント数 http://ja.wikipedia.org/wiki/%E3%82%BF%E3%83%B3%E3%82%B8%E3%82%A7%E3%83%B3%E3%83%88%E6%95%B0
**************************************************************;
options nocenter;
data;
file print;
array x(0:20,0:20) x1-x441;
x(0,0)=1;
put @4 "n" @21 "E(n)" @41 "T(n)";
put @4 "0" @24 x(0,0) @41 " 0";
do n=1 to 20;
/*n:奇数 タンジェント数 T(n)=x(n,n)の算出*/
if mod(n,2)=1 then do;
x(n,0)=0;
do j=1 to n;
x(n,j)=x(n,j-1)+x(n-1,j-1);
end;
end;
/*n:偶数 オイラー数 E(n)=x(n,0)の算出*/
else do;
x(n,n)=0;
do j=n-1 to 0 by -1;
x(n,j)=x(n,j+1)+x(n-1,j);
end;
end;
/* E(n) T(n)の表示 */
put n 4. x(n,0) comma20. x(n,n) comma20.;
end;
/*算出過程*/
do n=0 to 9;
indent=(9-n)*5+1;
put @indent @;
do j=0 to n;put x(n,j) best10. @@;end;
put;
end;
run;
/*
n E(n) T(n)
0 1 0
1 0 1
2 1 0
3 0 2
4 5 0
5 0 16
6 61 0
7 0 272
8 1,385 0
9 0 7,936
10 50,521 0
11 0 353,792
12 2,702,765 0
13 0 22,368,256
14 199,360,981 0
15 0 1,903,757,312
16 19,391,512,145 0
17 0 209,865,342,976
18 2,404,879,675,441 0
19 0 29,088,885,112,832
20 370,371,188,237,525 0
1
0 1
1 1 0
0 1 2 2
5 5 4 2 0
0 5 10 14 16 16
61 61 56 46 32 16 0
0 61 122 178 224 256 272 272
1385 1385 1324 1202 1024 800 544 272 0
0 1385 2770 4094 5296 6320 7120 7664 7936 7936
*/