来訪者カウントが35万人を突破した.35万という数字を目安にしてきたので,この意義は重い.それは,このポイントを突破したときには何かが起こるという予測の実現性を測るステージに突入したことを意味する.まだ準備は整っていないが,そろそろ動き始めなくては…
いつの間にか訪問者が30万を超えていた
いつの間にか訪問者が30万を超えていた.ちょっと前に見たときは,今日の訪問者が千人を超えていたので驚いたのだが,そのときは,まだ30万には1000くらい足りなかった.それから数時間でこの数字だ.どうなっているのだろう?
午前2時ですでに500人を超えている!
いや,それどころではない.いま午前10時だが,今日の来訪者が1万を越えようとしている.実際,今日の午前0時頃に30万を超えたばかりなのに,すでに31万を超えている!
もし,これが本当ならタイムゾーンに関係なく来訪していることになる.つまり,諸外国からのアクセスが急増していると見るしかない.8月13日に来訪者1万突破というログが残っている.これが持続するとかなりおもしろいことになりそうな気はする.ロボットによる自動アクセスということも考えられるが,ロボットだったらそれほど長い時間滞留していないのではないか?
LibreOffice が立ち上がらない
LibreOffice が立ち上がらない.タスクバー上のアイコンも消えてしまっている.ともかく,もう一度ダウンロードしてインストールし直すしかない.原因としては,カスペルスキーの更新後の再起動後に現象が起きているので,その辺りで何か不都合が生じたと考えられない.
最新版は24.8.1,安定版として 24.2.6 というのがあるが,この際なので最新版を入れてみよう.346MBもある.残り時間1時間だ.povo の24時間使い放題を使うことにしよう.ポンタポイントが使えたので,出費ゼロで間に合った.⇒あっという間に,残り時間4分になった.Cドライブの空き容量は9.43GBでアイコンは赤くなっているが,何とか間に合うだろう.
このトッピングは24時間使えるので,放置しておいてはもったいない.イヤホンが使えればお散歩に出たとき,YouTubeを視聴できるのだが… 多分ダイソーにはあると思うので,購入することも考えられる.ダイソーではまだ何か買うものがあったような気がするが… ティーポットは(割れてしまったので)買い替えるしかない.その2つを買った帰り道でタバコを買うことにしよう.
どうも怪しくなってきた.インストールパネルを開いたまま,フリーズしたような感じになっている.メモリが4GBのうち,82%使っているんので,ここがネックになっている可能性はある.⇒いや,どうも,インストーラが走っていないような感じだ.キャンセルして一度中断してみよう.いや,パネルがもう一枚出ていたのに気付いていなかっただけかもしれない.⇒ようやくインストールが始まった.⇒今度は,以前のインストールファイルを削除していますのところで手間取っている.⇒抜けてきたが,バックアップファイルの削除も手間取りそうだ.⇒終わった.一つだけ不満があるのは,タスクバー上に出したアイコンが色で識別できないことだ.
まだ,午前8時
三角形面積の二等分線をGeoGebraで作図
来訪者数が25万人を越えている
来訪者数が25万人を越えている.最近は1日の来訪者が2千を超す場合もある(滅多にないが).どこから湧いてくるのかよく分からないが,数が増えるのは単純にうれしい.
べき乗和の一般公式を求めているところだが,ゴールがやや近付いたという雰囲気が出てきた.黒木の公式とファウルハーバーの公式を架橋するというのが目標だが,黒木の公式を一般化できる可能性が出てきた.まだ,どこかに計算ミスが残っているようだが,もし,これで基本的なところが通っているとすれば,解決は時間の問題だ.そのためには少し環境整備しなくてはならない.複数の公式・恒等式を使わなくてはならないが,その中にはまだ数値的に動作確認されていないものも含まれる.その辺りは黒木氏にお願いしているところなのだが,あまり積極的ではないように見かけるので,そろそろ自分でやる必要が出てきた.まず,julia のサビ落としから始めなくてはならない.
動作確認する必要のある関数(アルゴリズム)には以下がある.
- 黒木の公式 ✓
- ファウルハーバーの公式
- べき乗和の公式 ✓
- ベルヌーイ数列の一般項
- ベルヌーイ数マトリックスの生成
- 黒木の恒等式
- べき指数の逆順変換
- べき乗和の一般公式
まず,黒木の公式から確認したいのだが,方法はあるだろうか?今の環境では変数の入った多項式を文字式として扱うことはできない.従って,できるとしても,kとnを指定して値を基準値と比較するしかない.そのためには,まず第3項のべき乗和の公式を作る必要がある.これはkごとにF_k(n)=F(n)のような多項式として表示した式だ.現在,julia 環境には,仕掛りのプロジェクトとして「階乗素因数のべき」というのが上がっている.走らせると,以下のような出力が吐き出される.
n=14^16 ゼロ=2494949494949492 n=10000000000000000 r=6.000000000000000041323199371444658202404150485
572577732799965364508923497182429
多分,これはAMSのDaily Epsilonに関係するものと思われるが,すっかり忘れてしまった.TrailingZeros という関数名があるので,巨大数末尾のゼロの個数をカウントしていたものと思われるが… その他に,primeExponent という関数も入っている.階乗数Nをb進数表記したときの末尾ゼロの個数をカウントしているのだろう.使っているモジュールは Printf と Primes だけだ.高精度演算が必要なので,setprecision などが使われている.データ型はBigIntとBigFloatを使っている.あとは,@printf や println だけだ.
べき乗和公式というフォルダを作って,ここから始めることにした.⇒PowSum1~5という関数セットを作った.動作している.べき乗和を単純に計算する処理を組み込んで結果が一致していることを確認した.べき乗するところはbig(n)^kのような形式で実行する必要がある.さもないと桁落ちが発生してしまう.さて,いよいよ黒木の公式だ.これは大きいのでかなり大変だろう.
いや,かなり簡単に実装できた.実際,この関数はべき乗和関数を再帰実行しているので,既成のPowerSumがそのまま使えた.これで3つの関数が出揃ったことになる.動作確認が必要なルーチンがあと,2つある.黒木の恒等式とべき指数の逆順変換だ.黒木の恒等式は片付いた.べき指数の逆順変換も通った.これで準備は整った.
サビ落とししてゼルコバの木を動かす
前にもどこかでこのような話題が出たことはあるが,どこでだったか覚えていない.G++をやっていた時期ではないかと思う.この時期には海外の系図研究者と活発な対話が成立していた.ゼルコバの木に入力してみようと思っのだが,動かない.サブ機にはコラッツ特注版というのが入っているが,起動時エラーになる.開発機に入っているのはこれとは別バージョンだが,フォントサイズを変更しようとしてエラーが止まらなくなってしまった.
開発環境でリビルドして以下のエラーになった.
2>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\ Common7 \IDE\VC\VCTargets\ Microsoft.Cpp.WindowsSDK.targets(46,5): error MSB8036: Windows SDK バージョン 10.0.17763.0 が見つかりませんでした。必要なバージョンの Windows SDK をインストールするか、プロジェクト プロパティ ページで SDK バージョンを変更するか、ソリューションを右クリックして [ソリューションの再ターゲット] を選択してください。
[ソリューションの再ターゲット] を実行してビルドできるようになった.ビルドできた!実行してみよう.⇒問題なく起動できた.氏名を入力すると下の欄に10という数字が表示されている.多分コラッツ版で入れたものだろう.⇒配偶者を登録し,配偶者に未婚の子どもを入力して例外が発生した.
▲配偶者に連れ子を入力して例外が発生した.GP例外のようだ.いや,TRIBEBOX::StartTribe でスローしている例外だ.group()が空でないために論理エラーとみなされている.MakeUpTree→SortTribeList→StartTribe というシーケンスだ.SortTribeListでは始系列を取り出そうとしているので,動作が矛盾している.⇒暫定的に止めて動作するようになった.
人名枠の中身を出力しているところを探さなくてはならない.関数名を忘れてしまった.NameBox.cppというのがある.PrintParameterでパラメータ類を出力している.
▲所属を表示しようとして停止した. Bobject::setClipRegionでマッピングモードがMM_TEXTになっているためだ.
デルタ多面体を三角錐に分解する
デルタ多面体を三角錐に分解する問題:任意の多面体をデルタ多面体に転換することは容易に可能だが,多面体→デルタ多面体の変換には多義性がある.つまり,デルタ多面体には三角錐に分解できるものとできないものがある.それをどのように識別するか?それが問題だ.平面グラフと多面体は等価であると考えられるので,グラフ理論上の問題として考えるのが妥当かもしれない.平面グラフについて少し考えてみよう.
①平面的グラフ:平面的グラフは球面など種数0の曲面に描けるグラフと同値である.②平面グラフにおいて,辺で囲まれた極小な領域を面という.有界な面を有限面,そうでない面を無限面と呼ぶ.③オイラーの公式:種数gの曲面S上に描かれた連結グラフがSをf個の領域に分割しているとき,|V|-|E|+f=2-2g.③ワグナーの定理:グラフが非平面的であるのは,K3,3またはK5を部分グラフとして含むときかつそのときに限る.④クラトフスキーの定理:グラフが平面的グラフであるための必要十分条件は5角形グラフあるいは6角形グラフに縮小し得るようなグラフを元のグラフが含まないことである.⑤四色定理:平面グラフは4色で彩色できる.⑥2連結3平面正則グラフは1因子分解できる.これは四色定理と同値.
外平面的グラフ:すべての頂点が無限面の回りにくるように描ける平面的グラフ.このうち,辺集合が極大となっているものを極大外平面的グラフと呼ぶ.極大外平面的グラフには切断点がなく無限面以外の面がすべて三角形になるように平面描画できる.
タットの定理:グラフGが完全マッチングを持つのは頂点集合Vの任意の部分集合Uに対し,V-Uの導出部分グラフの奇数個の頂点を持つ連結成分の個数が高々|U|であるとき,かつそのときに限る.→ガライの補題
基数が2のときの動作がおかしい
基数が2のときの動作がおかしい.2は素数なので(n-1)/zの値はきっちりpにならなくてはならないはずなのに,端数が出ている.⇒2^kでk=7の場合と,14の場合で不一致が発生している.⇒2^7をダンプして末尾ゼロを目測でカウントしてみたところ,127あった.この数字は正しい.TrailingZeros が返してくる値は126で1小さい.どこかで桁落ちなど起きているのだろうか?
primeExponentが返してくる値が,126になっている.
n=128, p=2, k=6, e=64+32+16+8+4+2=126
どうも,対数関数のlogが誤差を出しているようだ.
p=2 n=128 log =6.999999999999999999999999999999999999999999999999999999999999999999999999999931
この値のfloorを取ると6になってしまう.これは本来7でなくてはならないのではないだろうか?2^7=128だから,log_2(128)=7でなくてはならない.これを回避するにはどうすればよいか?logの引数をBigFloatにしてみたが,効果なし.logの値をBigFloatで受けるようにしてみたが,同じ.BigFloatの精度は256もあるのに,計算値は80桁くらいしかない.⇒やった!primeExponentの冒頭でsetprecision(BigFloat, 512)を実行したら,log=
7.0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006
という値が取り出せた.これでrも1.0に落ち着いた.とりあえず,これでよいということにしておこう.⇒この計算誤差は他の数値でも出ている可能性がある.チェックしておこう.⇒数値には変化はなかった.
nの階乗のb進数表記末尾のゼロの個数の数え上げ関数を実装した
階乗の末尾連続ゼロ数は基数のbによって決まる.bの素因数分解に含まれる素数をpとするとき,N=n!に含まれる最小のp^eの個数が連続ゼロ数となるので,最小のp^eの個数を決定する必要がある.一般にはpが大きいほどこの値は小さくなるが,pが小さくてもeが大きければ逆転する可能性がある.
まず,一般的にnとbを指定したときの連続ゼロ数を与える関数を作ってみよう.このためには,nを素因数分解するところから始めなくてはならない.julia には factor という関数がある.以下のダンプは b=2^2・3 を表している.
b=12 f =Primes.Factorization(2 => 2, 3 => 1)
Factorization というのは連想配列で,とりあえず,
for (p, e) in f
@printf(“%d %d \n”, p, e)
end
の形で取り出すことができる.