- (2021年2月10日)初投稿
- (2021年4月23日)Tex導入
古来数学者達は、それがx=1の時に$\frac{π}{2}$で収束して円周率に迫るのでアークタンジェント(ArcTangent)近似式の高速化に血道を上げてきたのです。
円周率の公式と計算法
#ビエトの無限乗積式(Vieteian Infinite Product Formula)
そうした円周率近似演算の原風景として「(初めて既知数を記号化し記号代数の原理と方法を確立して当時の代数学を体系化した事から)代数学の父」と呼ばれるフランソワ・ビエト(François Viète、1540年~1603年)の無限乗積式(Infinite Product Formula)があり、それ自体は「最初のk項までの積=半径1の円に内接する正2k+1角形の面積πへの収束」あるいは「半円に内接する半多角形の周長への収束)」を求める内容だったのです。
#π=2×2/sqrt(2)×2/sqrt(2+sqrt(2))×2/sqrt(2+sqrt(2+sqrt(2)))…
> 2*2/sqrt(2)
[1] 2.828427
> 2*2/sqrt(2)*2/sqrt(2+sqrt(2))
[1] 3.061467
> 2*2/sqrt(2)*2/sqrt(2+sqrt(2))*2/sqrt(2+sqrt(2+sqrt(2)))
[1] 3.121445
>2*2/sqrt(2)*2/sqrt(2+sqrt(2))*2/sqrt(2+sqrt(2+sqrt(2)))*2/sqrt(2+sqrt(2+sqrt(2+sqrt(2))))
[1] 3.136548
>2*2/sqrt(2)*2/sqrt(2+sqrt(2))*2/sqrt(2+sqrt(2+sqrt(2)))*2/sqrt(2+sqrt(2+sqrt(2+sqrt(2))))*2/sqrt(2+sqrt(2+sqrt(2+sqrt(2+sqrt(2)))))
[1] 3.140331
#ところで√2/2(0.7071068)は√2/(√2^2)。
#なので分子分母共に√2乗すると1/√2。
#すなわち2×2/sqrt(2)(2.828427)=2×sqrt(2)となる。
[1] 2.828427
> sqrt(2)/2
[1] 0.7071068
> 1/sqrt(2)
[1] 0.7071068
> 2*sqrt(2)
[1] 2.828427
> 2*2/sqrt(2)
[1] 2.828427
#当然2/sqrt(2)=sqrt(2)である。
> 2/sqrt(2)
[1] 1.414214
> sqrt(2)
[1] 1.414214
#すなわち
> 2*sqrt(2)
[1] 2.828427
> 2*sqrt(2)*2/sqrt(2+sqrt(2))
[1] 3.061467
#つまりこの計算は半円に内接する半多角形の周長を求めているのに等しい。
半円に内接する半多角形の周長計算と考えた場合の「ビエトの円近似(Vieteian Circle Approximation)」
f0<-function(x) sqrt(1-(x-1)^2)
plot(f0,asp=1,xlim=c(0,2),ylim=c(0,1),main="Vieteian Circle Approximation",xlab="Real",ylab="Imaginal")
segments(0,0,2,0,col=rgb(1,0,0),lwd=2)
#ここでおもむろに「ガウスの巡回群による三角関数演算」概念を導入。
par(new=T)#上書き指定
c0=seq(0,pi,length=3)
cx0=cos(c0)+1
cy0=sin(c0)
plot(cx0,cy0,type="l",asp=1,xlim=c(0,2),ylim=c(0,1),main="",xlab="",ylab="",col=rgb(0,0,1),lwd=2)
par(new=T)#上書き指定
c1=seq(0,pi,length=5)
cx1=cos(c1)+1
cy1=sin(c1)
plot(cx1,cy1,type="l",asp=1,xlim=c(0,2),ylim=c(0,1),main="",xlab="",ylab="",col=rgb(0,1,0),lwd=2)
legend("bottomright", legend=c("2","2×2/√2=2.83","2×2/√2×2/√(2+√2))=3.06"),lty=c(1,1,1,1),col=c(rgb(1,0,0),rgb(0,0,1),rgb(0,1,0)),cex=3/4)
- 「往復(1周)」でなく「片道(半周)」しか見ないので、私の投稿では1の冪乗根を求める演算z^n=1の結果集合たるガウスの巡回群を用いて計算を省力化した「(円を挟む内接多角形と外接多角形の辺数をひたすら増やし続けながら辺長計の差を求める)挟み撃ち定理(Squeeze Theorem)」の半分の計算範囲。
【初心者向け】挟み撃ち定理による円周率πの近似
- 一方ユークリッド計量(Euclidean metric)概念を用いた表現では「xy軸上の直線距離{0,0}-{2,0}の中心(0,1)に(ピタゴラスの定理$y=\sqrt{1-x^2}$に従って)等距離の経過点を置いて行く」イメージとなるが、これを一般化した計量関数(Metric Function)は通常xy軸上の直線距離{1,0}{0,1}(0→π/2=90度の範囲)しか見ないのでその倍の計算範囲。
【初心者向け】方形描画関数②距離空間との関係。
こうした視座(Perspective)の概念は、以下の各次元上の制約に対応します。
-
点=同心円空間(Dot=Concentric Circle Space)0-0.5次元の広がりを有する$2^0$座標系の場合は全周範囲(2π Range)。
【Rで球面幾何学】等差数列(算術数列)②数直線概念から同心円集合概念へ
-
線=円柱/トーラス空間(line=Cylinder/Torus Space)1-1.5次元の広がりを有する$2^1$座標系の場合は半周範囲(π Range)。
【初心者向け】群論概念①基本定義
【無限遠点を巡る数理】等差数列と等比数列②基底関数概念の導入
-
デカルト座標系=円錐空間(Cartesian Coordinate System=Cone Space)2-3.5次元の広がりを有する$2^2$/$2^3$座標系の場合は$\frac{1}{4}$周範囲($\frac{π}{2} $Range)/$\frac{1}{8}$周範囲($\frac{π}{4}$Range)。
【初心者向け】線形関数や絶対値関数
- ちなみに四元数(Quaternion)は$2^3$座標系とは$2^1$座標系からの拡張のされ方が異なる$3^2$座標系に分類される(それぞれが複素数平面を備える二つの回転軸の組み合わせにより全周範囲視座を回復)。
【Rで球面幾何学】ハミルトンの四元数は何を表しているのか?
【オイラーの多面体定理と正多面体】正方形における平方対角線と立方体における立方対角線の関係について。
【Rで球面幾何学】そもそも「内積」とは「外積」とは何か?
人間にとって$2^3$座標系より$3^2$座標系の方が難しく感じられるのは、生物が進化過程で獲得してきた視覚の補完機能に関わってくる話である。
【無限遠点を巡る数理】「ピタゴラスの定理」と「デカルト座標系」の狭間
こういう話は具体例で考えた方が話が早い。例えば以下のアニメーションが右回りにも左回りにも見えるのが「視覚的補完」…
【初心者向け】複素共役(Complex Conjugate)のアニメーション表示について。
以下の図の「球面の裏側まで映り込んでいる周辺部」にどうしても焦点を合わせられないのが「視覚的切り捨て」となる。
【初心者向け】誤差関数(ERF)と相補誤差関数 (ERFC)。
- いずれにせよ$2^3$座標系も3^2座標系も素数族2^n3^mの部分集合に過ぎず、平面上の正六角形(Regular Hexagon)による平面充填(Tiling)をその極限とする。
しばしば「収束が遅く実用的でない」なる一言で片付けられてしまうビエトの円近似法ですが挟み撃ち定理の特殊例に過ぎないとはいえ「(sqrt(2)を含む)素数族2^nのみ導入された環境下でもπ(3.141593)へは到達可能である事を示す意味合いにおいて重要です(sqrt(2)の逆数たる2^2=4すら登場しない)。
#ビエトの円近似には外接多角形の半周の計算に対応する逆算もありそう?
#現段階では未達…
#正方形
>f0(4)
[1] 4
> 2*(2*(2-1))
[1] 4
#正八角形
> f0(8)
[1] 3.313708
> 3.313708/4
[1] 0.828427
> 0.828427/2
[1] 0.4142135
> sqrt(2)-1
[1] 0.4142136
> 2*(2*(2-1))*(2*(sqrt(2)-1))
[1] 3.313708
#正16角形
> f0(16)
[1] 3.182598
> 3.182598/3.313708
[1] 0.9604341
> 0.9604341/2
[1] 0.480217
sqrt(x)-1
> 1.480217^2
[1] 2.191042
[1] 2.191042
> 2*(2*(2-1))*(2*(sqrt(2)-1))*(2*(sqrt(2.191042)-1))
[1] 3.182597
#現段階では、これが精一杯…
- ちなみにビエトの無限乗積式(Vieteian Infinite Product Formula)に拠る演算結果集合は、0あるいは2を単位元と定め、πに収束する元に-1を掛け、2に収束する演算結果集合を逆元と設定すると結合条件も成立し群定義の少なくとも一部を満たす((興味深い事に単位元を0に定めた時は2,2に定めた時は0が極限値となるので両者が単位元として並び立つ事はない)
【初心者向け】群論概念①基本定義 - 問題は演算結果が閉じない事だが(そもそも近似過程で現れる全ての数字を含めた元をイメージする事自体がナンセンス?)、同じ問題なら式形(1+1/N)^Nの時にネイピア数exp(1)(2.718282)、式形(1-1/N)^Nの時にネイピア数の逆数exp(-1)(0.3678794)、式形(1±θi/N)^Nの時に単位元0/極限-1(±π)へと収束する自然指数関数(Natural Exponential Function)e^xも抱えており、こういう場合には実数全体を元に採用するしかない(ちなみに私の投稿では実数を「10進方法の演算結果集合」と規定し、無理数もとりあえず計算可能範囲まで計算した結果をその演算結果集合に「仮に」加えている。コンピューター時代ならではの対「ゴルディアスの結び目(Gordian Knot)」解決法?)。
【初心者向け】指数・対数関数の発見とそれ以降の発展について。
ところで、ここまでビエトの無限乗積式への関心を掻き立てておいて何なのですが、残念なお知らせがあります。実はこの演算、オイラーの公式(Eulerian Formula,奇しくも著名なe^θi=Cos(θ)+Sin(θ)iと同名)Sin(x)/x(Sinc関数)=cos(x/2)×cos(x/4)×cos(x/6)×cos(x/8)×cos(x/16)…に((0±1i)^2x→e^πi変換の様に)x=π/2を代入した特殊ケースに過ぎなかったのです。
ヴィエトの無限積の公式
sinx/xの極限は?x→0とx→∞の場合を証明付きで東大医学部生が教えます!
Macrolin_expansion_exp<-function(x){
#グラフのスケール決定
Graph_scale_x<-c(-40,40)
Graph_scale_y<-c(-1,1)
#関数と凡例の決定
switch(x,
"0"= f0<-function(x) {cos(x/2)},
"1"= f0<-function(x) {cos(x/2)*cos(x/4)},
"2"= f0<-function(x) {cos(x/2)*cos(x/4)*cos(x/8)},
"3"= f0<-function(x) {cos(x/2)*cos(x/4)*cos(x/8)*cos(x/16)},
"4"= f0<-function(x) {cos(x/2)*cos(x/4)*cos(x/8)*cos(x/16)*cos(x/32)},
"5"= f0<-function(x) {cos(x/2)*cos(x/4)*cos(x/8)*cos(x/16)*cos(x/32)*cos(x/64)}
)
switch(x,
"0"=text<-c("cos(x/2)"),
"1"=text<-c("cos(x/2)*cos(x/4)"),
"2"=text<-c("cos(x/2)*cos(x/4)*cos(x/8)"),
"3"=text<-c("cos(x/2)*cos(x/4)*cos(x/8)*cos(x/16)"),
"4"=text<-c("cos(x/2)*cos(x/4)*cos(x/8)*cos(x/16)*cos(x/32)"),
"5"=text<-c("cos(x/2)*cos(x/4)*cos(x/8)*cos(x/16)*cos(x/32)*cos(x/64)"),
)
f1=function(x){sin(x)/x}
plot(f1,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(0,0,0),main="Macrolin expansion", xlab="X", ylab="Y")
par(new=T)#上書き指定
plot(f0,xlim=Graph_scale_x,ylim=Graph_scale_y,type="l",col=rgb(1,0,0),main="", xlab="", ylab="")
legend("bottomleft", legend=c("e^x",text),lty=c(1,1),col=c(rgb(0,0,0),rgb(1,0,0)))
}
library("animation")
Time_Code=c("0","0","0","1","1","1","2","2","2","3","3","3","4","4","4","5","5","5")
saveGIF({
for (i in Time_Code){
Macrolin_expansion_exp(i)
}
}, interval = 0.1, movie.name = "sync01.gif")
それってどういう事? また歴史的価値しかない式と思いきや、ロジスティック方程式/写像との絡みがあって大学受験数学の出題範囲にもなってる模様…
ロジスティック写像と漸化式
【初心者向け】ロジスティック方程式とその関連範囲
ロジスティック写像 - Wikipedia
#オイラー変換(Eulerian Transformation)
オイラーはアークタンジェント(Arctangent)の求め方の高速化も図っています。具体的には1755年に1671年にスコットランドのジェームス・グレゴリーが発見したグレゴリー級数(Gregory Series)のアルゴリズムを大幅に改善したオイラー変換(Eulerian Transformation)を発表。
円周率の公式と計算法
グレゴリー級数
【Rで球面幾何学】オイラーの公式を導出したマクローリン級数の限界?
#ライプニッツ級数(Leibniz series,1674年)とグレゴリー級数(Gregory series, 1671年)とテイラー級数(Taylor Series,1715年)
ライプニッツ級数(Leibniz series,1674年)
\sum_{n}^{\infty}\frac{-1^n}{2n+1}=\frac{π}{4}
グレゴリー級数(Gregory series, 1671年)
\sum_{n}^{\infty}\frac{-1^n}{2n+1}x^{2n+1}=\frac{π}{4}
x=1の時、ライプニッツ級数と一致する。
数学において、テイラー級数(Taylor series)は関数のある一点での導関数たちの値から計算される項の無限和として関数を表したものである。そのような級数を得ることをテイラー展開という。
テイラー級数の概念はスコットランドの数学者ジェームズ・グレゴリーにより定式化され、フォーマルにはイギリスの数学者ブルック・テイラーによって1715年に導入された。0を中心としたテイラー級数は、マクローリン級数(Maclaurin Series)とも呼ばれる。これはスコットランドの数学者コリン・マクローリンにちなんでおり、彼は18世紀にテイラー級数のこの特別な場合を積極的に活用した。
関数はそのテイラー級数の有限個の項を用いて近似することができる。テイラーの定理はそのような近似による誤差の定量的な評価を与える。テイラー級数の最初のいくつかの項として得られる多項式はテイラー多項式と呼ばれる。関数のテイラー級数は、その関数のテイラー多項式で次数を増やした極限が存在すればその極限である。関数はそのテイラー級数がすべての点で収束するときでさえもテイラー級数に等しいとは限らない。開区間(あるいは複素平面の開円板)でテイラー級数に等しい関数はその区間上の解析関数と呼ばれる。
なるほど、以下で私が悩んだ「ベクトルの世界と関数列の世界をどう統合するか」問題の起源はまさにその大源流にあった訳です(ライプニッツの数列をグレゴリーが関数列化し、これにニュートンやライプニッツの手になる微積分概念が合流して「関数列」テイラー級数となった)。
【無限遠点を巡る数理】等差数列と等比数列③基底関数の線形結合?
そんな感じで以下続報…