2020年04月20日

なるほどね、やってみると新しい問題に出くわすね

問題がない == 何もやっていない、という事ですね。

プランクの黒体放射の数式をwxMaximaで計算してグラフ化してみた。

image

T = 6000K  これは本に載っているものと同じであり温度を変えて計算するとピークがずれていくのもわかった。
では宇宙背景放射の場合にはどうなるか。T = 3K にして計算して見た。

するとMaximaは計算できんのだった。なんで? 
これね。何かやると問題が出てくる。
問題がない = 何もやっとらん(あくまでも個人の場合であり・・・・)

    以下、どのようなエラーが出たのか、どうすればよいのかを書くがコーヒー飲んでからだ。

image

   簡単に言うとオーバーフローが生じた。wxMaximaでは何も指定しない場合にCで言うdouble型であり64bitで表現する。この場合には範囲は
2.225074 10-308 < double の絶対値 < 1.797693 10+308
https://www.cc.kyoto-su.ac.jp/~yamada/programming/float.html

ではどうして、この範囲を超えるような数字が出たのか。これは黒体放射の数式を記号で出して終わり・・・とする学習では気づかぬ。数式は数字を伴ってこそ初めて意味を持つ。数字なしの理論は空想のレベルだ(あくまでも個人の感想であり・・・・)
もっとも定性的な事がわかれば満足する連中はそれでもいい。なんちて。

というわけで、黒体輻射のプランク数式のどこで範囲外になるような計算をしてしまうか? 
これだ。
コーヒー二杯め、飲んでからだ。

計算式
image
floating  point over flowが生ずるのは分母にあるexp(hν/kT) である。これがdouble型の最大値を超えるのだ。
最大値を1.79E308として、これがeの何乗になるかというと、
log(1.78E308);  -----> 709.77 (Maximaのlog()は自然対数である)

image

maximaはe^710だとOverFlowですわ。

h : 6.626E-34   ;
k : 1.381E-23   ;
T : 3         ;
ν : 可視光で600THZ = 6E14 のときに、
hν/kT = 9595 !!   これは710よりはるかに大きいので計算できん。

ただ、ここで振動数が低い領域ではエラーにならない領域はある。

しかし振動数は0から無限大とか考えたいからなあ・・・・
ここらはどのようにして避けるんだろか。

数式に値を入れてみるとoverflowしましたぜ・・・・

倍精度ではなくて倍の倍精度にするか?  ここらは数値を小さくする工夫が必要なんだろなあ。

と気づいた時点で終わり。新コロ休みの宿題とする。テキトー

おまけ
T = 3   このとき、周波数を低い方に限定 Overflowしない。だいたい160GHzあたりにピークがある。これはCOBE衛星での測定値と一致するってさ。
つまり、宇宙はT = 3K の黒体であるって話。うーむ。そうらしいぞ。
image

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