So-net無料ブログ作成

微分方程式が解けない [計算物理学入門]

原子核の崩壊のシミュレーションで核種が2種類ある場合、解析的に値を求めるには連立微分方程式を解く必要がある。でも、その微分方程式が解けなかった。微分法定式なんて、かれこれ10年以上解いていないから解き方をすっかり忘れてしまっていた。数学は、高校の途中から苦手意識を持ち始めていたから、忘れるのも無理はないかも。それでも、やっぱりショックだった。

出先で本を読みながら、「どうやって解くんだっけ?」となり、数学の教科書は家に置いてあるので、解き方をインターネットで調べた。(便利な世の中になった)

たどりついた先が、化学反応の計算のサイトだった。大学、大学院は、化学専攻だったのに。大学の1年の時習っていたはずだった。さらにショック。


プリンタってバッドノウハウの塊みたいだ [コンピュータ]

Excelのファイルを印刷してみたら、セルの内容とセルの罫線の位置がずれていた。使うフォントを「明朝」から「MS明朝」に変えてみたら、ちゃんと印刷された。

今時、こんな現象に出会うなんて... 未だに印刷って難しいんだ。

昔、元SEの回顧録みたいな本に、プリンタの仕様を把握できていないライバル会社がプロジェクトではまって行く様子が描かれていたが、それを思い出してしまった。

プリンタのドライバや印刷機能って、バッドノウハウの塊なんかな。


朝日新聞が赤字に陥った [時代の変化]

朝日新聞が赤字に陥ったそうである。アメリカの数年遅れかな。雑誌は、既に廃刊が続出しているし、紙ベースのメディアは、これからどんどん厳しい状況になっていくのだろう。

原因として、若者の活字離れとかインターネットの台頭とか言われているけど、それだけではないと思う。

新聞って、一部の会社の独占状態になっていて、ビジネスモデルの変革ができなくなってしまっているし、自浄作用が働かなくなってしまっているように見える

新聞の売り上げって、記事の内容よりも販売店の営業力で決まってしまっている。だから、ちゃんと取材し切れていない情報の垂れ流しみたいな記事を載せ続けている。それに、広告にも依存してしまっているから、広告主の変なよいしょ記事を書いたり、広告主に都合の悪い内容は特別扱いをしたりする。

こんな客の方を向いていない事をしていたら売り上げが下がるのは当然である。ライバルが現れたのではなく、自滅しているだけだと思う。結局のところ、ネットの掲示板の書き込みと同じレベルの信用度しかないと判断されてもしかたがない。この辺の事情は朝日新聞に限った話ではないが。

紙ベースの記事の販売をメインに据えたら、販売店の営業力に依存してしまって、製品(記事)の質が下がるだろうし、広告主に依存していたら記事の内容が偏向してしまうだろう。このどちらからも、脱却するようなビジネスモデルに変えないと、復活の道はないと思う。ちゃんと復活して欲しいと思う。ネットでの情報集めって、ちゃんと押さえておくべきニュースを押さえ切れているか自信がないから、新聞には頑張って欲しい。「まだ、あの人新聞読んでいるんだ。」みたいな事は言われたくない。

Googleは、広告モデルでも稼げていたのだから、顧客にしっかりと支持される記事を安定して書けていれば、広告主の方が寄ってくるのではないかと思う。広告主の影響を受けずに記事を書けるようになるには、収益・コストの構造を変えないといけないのだと思う。

でもねえ、広告なしの有料の情報提供って高いんだよね。この辺にチープ革命とかが起きればいいんだけど。


原子核の崩壊のシミュレーション 〜 『計算物理学入門』読み(その8) [計算物理学入門]

放射性原子核の崩壊の基本法則は以下のように書ける。

AtomDecayEquation.png

ここで、λは崩壊定数である。
この方程式の形は、ニュートンの冷却の法則のシミュレーションとほぼ同じ形をしている。 それ故、放射性崩壊のシミュレーションのプログラムは以下の通りの短いものになる。
(define (decay Lamda time N dt)
  (euler 0.0 N time (lambda (t N) (- (* Lambda N))) dt))

λを直接指定するよりも、半減期を指定できた方が便利である。半減期は以下で与えられる。

HalfLifeEquation.png
半減期を指定できるようにしたプログラムは以下の通り。単にラッパーの関数を作っただけ。
(define (decay-half-reduce T_1/2 time N dt)
  (decay (/ 2 (exp T_1/2)) time N dt))

オイラー法は1次の精度しかないので、2次の精度で計算してみる。2次の方程式は以下の通り。

SecondPrecisionEquation.png

2次の精度で求めるプログラムは以下の通り。

(define (decay-2nd-precision Lambda time N dt)
  (let loop ((x-i 0)
             (y-i N))
    (if (< x-i time)
        (loop (+ x-i dt) (- y-i (* (/ Lambda 2)
                                   (- (* 2 y-i) (* Lambda y-i dt))
                                   dt)))
        y-i)))

様々なdtで、解析解、オイラー法と比較してみると

gosh> (* 100 (exp (- (* 1 1))))
36.787944117144235
gosh> (map (lambda (dt)
	     (decay 1 1 100 dt))
	   '(0.1 0.01 0.001 0.0001 0.00001 0.000001 0.0000001))
(31.381059608999998
 36.603234127322985
 36.76954247709651
 36.78242603282879
 36.78739229905556
 36.78792572316515
 36.787938598960544)
gosh> (map (lambda (dt)
	     (decay-2nd-precision 1 1 100 dt))
	   '(0.1 0.01 0.001 0.0001 0.00001 0.000001 0.0000001))
(33.352959127436435
 36.78856187161925
 36.78795025306916
 36.78426556798378
 36.7875762401565
 36.78794411715042
 36.78794043835247)
あれ? なんか値が解析解に収束していかないぞ。誤差が溜まってきてしまうのかなあ。まあ、途中までの結果をみると、2次の精度で求められているようだ。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。