今日のアニソン、「ストラス・フォー」から『1st Priority』 [今日のアニソン]
あらためて、
今日のアニソン、アニメ「ストラス・フォー」から『1st Priority』です。
YouTubeには、同アニメのOPシーンの動画もアップされているので、あわせて紹介します。
微分方程式y''=y²は解けるのか? [微分方程式の解法]
微分方程式y''=y²は解けるのか?
少し前に、数値計算のところで登場した微分方程式
は解けるのか?
簡単そうな形をしているから解けそうに思うだろうが、この微分方程式は解けない。
「解けない」というのは語弊があるだろう。正確に表現すると、この解を初等的な関数で表すことはできない。そして、普通、「この微分方程式は解けない」という。
とおくと、(1)式の左辺は、
になるので、(1)は次のように書き換えることができる。
これは変数分離法を用いて、
正の符号だけをとると
ここまでは求められる。
しかし、この左辺に出てくる不定積分はどんなに頑張っても初等関数で表すことが出来ない(不定積分できない)んだケロ。
という不定積分は、初等的な関数で表現できないんだにゃ。
そこで、
とあるサイト(このサイトのアドレスは教えない!!)にこの不定積分の計算をお願いしたところ、次のようなおどろおどろしいものが返ってきた(笑)。
(3)を表現するには、(第一種の)楕円積分(楕円関数)と呼ばれる謎の関数(上の式ではFで表される)が必要になるんだケロ。
――この不定積分は実関数であるのに、何と、式中に複素数が含まれている!!――
しかし、上の不定積分の結果は、その実、
と置くのと何ら変わらない。
そして、新たに導入したNemunNeko関数(の逆関数)を用いることによってのみ、微分方程式(1)の解は、初めて、簡潔に表現できるのであった(^^ゞ
定理 楕円関数(ワイエルシュトラスのペー関数)は微分方程式
を満足する。
だから、この微分方程式の一般解は、ワイエルシュトラスのペー関数という未知の関数(特殊関数)を用いて表すことができる!!
https://www.s.u-tokyo.ac.jp/ja/story/newsletter/keywords/11/01.html
たとえ、それを用いて表せたとしても、ワイエルシュトラスのペー関数の数表はどこにも出ていないし、表計算ソフトにもこの関数はない。
C言語やFortranなどでもこの関数はサポートされていないから、その値を知ることはできないケロ(笑)。
だ・か・ら、初期値を与えても、この(特殊)解の値を知ることはできず、グラフに書くことはできない。
だったら、最初から無駄な足掻きはせず、オイラー法やルンゲ・クッタ法を使って数値的に解いた方がいいのではなかろうか(^^)
少なくとも、我ら⑨の一族には、楕円関数による解表示なんて必要ないのではなかろうか!!
今日のアニソン、「うたの☆プリンスさまっ♪」から『オルフェ』 [今日のアニソン]
十進BASICとマチンの公式を用いて円周率πを100桁求める [数値解析]
十進BASICとマチンの公式を用いて円周率πを100桁求める
円周率πの近似値を100桁求めたところで何の役にも立たないけれど、十進BASICを使って、πの近似値を100桁求めてみた。
計算結果は次の通り。
Π=3.
14159 26535 89793 23846 26433 83279 50288 41971 69399 37510
58209 74944 59230 78164 06286 20899 86280 34825 34211 70679
82148 08651
すこし余分を見て、110桁まで表示してある。
この計算に使用したプログラムは次の通り。
REM Machiの公式を用いたπの近似計算
OPTION ARITHMETIC DECIMAL_HIGH
LET n=100
LET S=0
LET FMT$="#."&REPEAT$("#",110)
PRINT USING fmt$
FOR k=1 TO n
LET A=(-1)^(k-1)/(2*k-1)
LET B = 4/5^(2*k-1)
LET C = 1./239^(2*k-1)
LET S = S + 4*A*(B-C)
NEXT k
PRINT USING fmt$:s
END
これをプログラムと呼ぶのが恥ずかしい。
計算効率も悪いし・・・。
プログラムのわかりやすさ(可読性)を重視したということで、この点は大目に見てもらおう。
これくらいの計算回数ならば計算速度は問題にならないけれど、計算速度を重視するならば、FOR NEXTループのべき乗計算は絶対に避けるべき。
たとえば、
このべき乗計算は
という漸化式に書き換えることができる。
だから、たとえば、次のように書き換えたほうがいいと思うにゃ。
REM Machiの公式を用いたπの近似計算
OPTION ARITHMETIC DECIMAL_HIGH
LET N=100
LET S=0
LET S5=1/(5*5)
LET S239=1/(239*239)
LET f=1
LET B=1/5
LET C=1/239
FOR K=1 TO N
LET A=f/(2*k-1)
LET S = S + A*(16*B-4*C)
LET f=-f
LET B = S5*B
LET C = S239*C
NEXT k
LET FMT$="#."&REPEAT$("#",110)
PRINT USING fmt$
PRINT USING fmt$:S
END
FOR NEXTループの反復回数nを100万くらいすると、おそらく、計算速度の違いを体感できると思う。
このプログラムを使って、1000桁まで計算をしてみたのだが、996桁目の値が異なってしまった。十進BASICの1000桁の精度を誇る、計算拡張モードを使ったのだけれど、このあたりが十進BASICで計算できる円周率πの限界のようだ。