wetchのブログ

他人に見られることを想定していない書き散らかし独習ノート.物理学とかVBAとか.

クロスフロー冷却塔の熱交換の数値計算その2(ほぼ完成)

前回の続き。
https://wetch.hatenablog.com/entry/2018/12/08/221328

陰解法を、WikipediaとQiitaを読みながらデッカー法で実装。
ブレント法 - Wikipedia
qiita.com
ブレント法は理解できなかったよ…。

今回はまったのは、初期値を求める部分。
f(x)=0 になる解 x を探すのに、ある区間f の符号が逆になる2点を探そうとしてるのに全然見つからない。
何でかとずっと調べてて、f(x) のグラフを書いてみてやっと判明。こんな形になってた。

f:id:wetch:20181223122601p:plain
f(x)の形

あるところで発散して、それより左側は計算できない「未定義」状態だった・・・。
常にこうなるわけではなくパラメータがシビアな時だけ起きる現象だし、未定義の場合は関数の戻り値を 0 にしてたから気づかなかった。


発散しないギリギリの点を推定する方法を必死で考えて何とかこの問題を回避できた。
一度初期値が決まってしまえば、グラフの形は滑らか&単調なので解はすんなりと求められる。
デッカー法で実装はしたが、実はセカント法だけしか使っていない模様。

次の課題:勉強しかけているオブジェクト指向でこのプログラムを書き直したい。