2024年04月20日

一日一項目 数列の和の話 なんですとぉ

∑(1/n), n = 1 ~ ∞は 発散する。つまり収束しない。 Limit(1/n) = 0, n –>∞ なので収束するかと思ったら収束しない。ここらはゼータ関数だか何だかの屁理屈はCopilot先生に訊く
image

ここで数学的な証明は賢い連中が好きにしーーいや なのでワタクシは実際の計算をしたらどうなるかを知りたいます。
で、C++でプログラム書いて n = 10億まで計算したらどういう結果になるかしら・なのだ。

ところがDELL OPTIPLEX 7010SFF Win 11 23H2(非推奨PC)でやってみると時間がかかってしゃーないのであーーーた。そこでCopilot先生に訊いたのである。これを高速化する手法はないかしら。するとCopilot先生が次のコードを回答してくれたのであーーーーた ます。

imageimage

なんと なんと 南斗水鳥拳のれい ちがーーう!!  なんじゃこりゃあ!!  OpenMPの威力はすごい。それ使わないで計算したら風呂入って飯食って散歩して帰ってきても終わっとらんぞ。たぶん。******   ここ 大きな勘違いがありました *******

上のコードはinclude等は略。もう一つ整数を見やすくするためには 100_000_000 とアンダースコアでの区切りはエラーで、アッポストロフィーを使うだす。知らなかっただす。

実は上のコードで OpenMPを使わなくても使っても大差はなかったのでした(笑)

上の10億で 21.3005,  100億では 23.60306659  なのでして。まあ飽和してないし、理屈では収束しないのだから微妙に増加を続けるのだろ。
10兆ではどうなるか・・・ よーし、夜に仕掛けて明日の朝に確認しよう。

int, long int ではダメで long long intにするであるね。理屈の上では収束しない、発散するようだが、これをグラフ化すると右側、すなわち n が膨大なところではグラフはほとんど水平になるだろな。それでも微小の増加があって収束しない・発散すると言い張るのだ(笑) 言い張るのではなくて抽象的な思考では発散すると言うのであるぞの。
数学で無限大が出てくるとな、数の世界から抽象的な世界に飛躍するのだよ。なにしろ∞は数ではない、数値ではない。数の計算している時に数ではないものを混ぜてくるって卑怯じゃね(笑)

ちなみにコンピュータ言語によっては、1/0 = inf  って出す ます。賢くなったなあコンピュータ言語も。知らんけど。

10億から100億までの計算結果のグラフ
image

だいたいね 21.tから23.5まで増えるのに横軸は80億ぐらいなのよ。グラフはだんだん緩やかになっているし、それでも微増しているから収束しない、発散するのだって事さ~。かもよ。
横軸を100兆まで計算したらどうなるかしら。やらんわ。時間かかるし。それでも微増するから収束しない・発散するって事さ~。たぶん。
long long intの最大値まで計算するとどうなるのだろな。微増は微増としても。。。。。。

てな感じで終わり。

花粉症の症状がでてきたが今はヒノキ花粉らしい。だが他にも何か飛んでいるのではないか。暖かなってくるとワタクシの部屋はダニがでてくるのですぜ。
ダニの季節が近づいてきましたってか。掃除しろよなあ。ってか。

posted by toinohni at 08:11| 東京 ☀| Comment(0) | 物理科学雑学 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください