科学と家事とプログラミング (python を中心に)

python 温度計測 湿度計測 DS18B20 USB9097

python

図形を使った解法は、見ためも安心なのです(改)

コンピューターグラフィックスのアイデアが、ピタッとと当てはまる問題というのがあります。 教科書に出てきそうな Bang-Bang 制御の切り替え線の判定も、そんな問題の一つです。 図形の論理演算(and/or)を使って、制御の ON/OFF を判定する例を紹介します。…

多変数最適化の Nelder-Mead は、なかなか使い勝手が良いのです

多変数最適化のアルゴリズムの一種である Nelder-Mead は、なかなか使い勝手の良いアルゴリズムですね。 汎用的に使える(対象が最小二乗に限定されない)ことに加えて、 微分情報を使わないところも魅力です。 評価関数の性格が多少悪くても、上手に最適をみ…

剛体回転に関するオイラーの定理は、絵的に理解したいのです

「剛体回転におけるオイラーの定理」について、 天球図を使った直感的な説明を紹介します。 代数的な説明だけだと、なんとなく分かった気がしない...という人におすすめです。 オイラーの定理 オイラーの名の付く定理や公式は、いくつもあって紛らわしいので…

補間と言えば akima-spline は知らなきゃもぐりだろう、と言ってみたいのです

スプライン補間でもっともメジャーなのは cubic-spline でしょうか。 ある種の理解しやすさや微分も一緒に求まるという使い良さもあるのですが、 データにギャップがある場合に、補間結果が振動するという やっかいな特性を持っています。 下の図の赤線は、…

高級な補間公式が、万能とは限らないのです。

補間公式には、ラグランジュ、エルミート、スプライン...と、各種ありますが、 私がよく使うのは、線形補間(直線補間)とAkima-Spline の 2 種類くらいです(JPL の惑星歴のチェビシェフは除く)。 線形補間(直線補間)とは、随分と原始的なものを使うのですね..…

緯度経度で分割された星カタログの選択は、なかなかやっかいなのです

カメラ視野を模擬したい カメラの視野を模擬するとき、 手元の星カタログを全部スキャンすると星の数が多すぎて性能が出ない時があります。 こういう時は、星カタログをいくつかの部分に分けて対応します。 分けたものをサブカタログと呼んだりします。 経度…

tanθに従う現象をべき級数で近似するのは、なんだか残念なのです

tan のべき級数展開には気をつけよう べき級数で近似するのは手軽な方法ですが、対象とする現象が tan に従う場合には、 次数を上げたところで精度の向上は期待できません。 かりに次数を上げることで必要精度を達成できた場合でも、 それは単に tan を再現…

座標変換ルーチンの爆発的な増殖は、なんとしても避けたいのです

問題設定 天文宇宙に関連したアプリケーションでは、多くの座標系が登場します。 黄道座標系、地球赤道座標系、地球固定座標系、月固定座標系、などなど。 さらに、赤道座標系や黄道座標系には、分点の違いによって、 基準エポック、平均分点(MOD)、真分点(T…

角度を扱うプログラムは、要注意なのです

天文計算や宇宙機の姿勢軌道制御では、角度の計算が欠かせませんが、 角度を扱う時は、色々と気が抜けません。 代表的には以下の3点。 単位 極性 定義域 (周回の不確定性の扱いを含む) 単位 初等教育や日常生活では、deg を使う場面が多いけれど、プログラミ…

桁落ち誤差は、時に牙をむくのです

数値計算には誤差がつきものですが、扱いをあやまると酷い目に会うことになります。 特に桁落ち誤差には注意が必要です。 天文計算の分野で有名な例は、universal kepler 方程式を解く時に出てくる stumpff 関数の計算式でしょうか。例えば、こんな感じ。 見…

ケプラー方程式をニュートン法で解くときの開始点の選び方は、悩みが尽きないのです

ケプラー方程式 を解くとき、よくニュートン法が使われます。 離心率が大きい長楕円軌道の場合、開始点の選択を誤ると繰り返し計算がバタついて、 収束しないことがあります。 ケプラー方程式は、下に凸な関数なので、 大きい側から近づくと動作が安定します…

時刻を秒の少数まで表示するのは、ちょっと難しいんです

時刻表示の落とし穴 天文や宇宙関連のプログラムを作っていると、時刻表示で落とし穴にはまることがありますね。 例えば、秒の少数1桁まで表示したいのだけど、四捨五入されて秒が 60.0 になってしまったり... >>> "%02d:%02d:%04.1f" % (23, 59, 59.95) '2…

超構造化(09) プログラムは手順の集まりか?

手続き vs 宣言 「プログラムは手順の集まりである」という表現は、賞味期限つきの標語の良い例だ。 初めてプログラムを書くときに、この助言が役立つ場面は確かにあると思う。 しかしその一方で、さまざまなプログラミング言語が目指すものは 「人間から見…

python 3.6 (32bit on Windows) に numpy / matplotlib をインストール

numpy の *.whl を入手 scipy 使うなら mkl 版の numpy が吉(ダウンロードにちょっと時間がかかった)。 *.whl を、https://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy から入手した。 (pypi の numpy は mkl ではない)。 インストール 念の為、管理者モード…

python 3.6 on windows 仮想環境~pypi 登録まで

仮想環境は venv 構築 python -m venv myenv 開始 Scripts\activate 終了 deactivate 標準 lib の venv で構築できるのでそれを使う。 (virtualenv は、python 2.x と 3.x を同居したいときに使う) 配布物の生成 構築 python setup.py sdist python setup.py…

カルマンフィルタのデモ (LKF, EKF, UKF)

カルマンフィルタは、パラメータを適切に設定しないと、まともな結果が得られない。直感的な理解を目的として、プロセスノイズや初期共分散をGUIで変更できるデモを公開した。デモで遊べばパラメータの意味(効果)を理解しやすいと思う。 minidemoKalmanFi…

パソコン(ノートPC)を使った温度と湿度の計測 (USB9097 の紹介)

計測システム 温度や湿度の計測に使っているシステムの構成を紹介します。 ノートPC + windows10 (USB ポート を使用) 1-wire adapter : USB9097 (PCsensor.com ShenZhen/China) http://pcsensor.com/1-wire-series.html 温度センサー: DS18B20 温度/湿度セ…