2013年9月22日日曜日

整数で気圧高度の計算

整数だけで気圧高度を計算するライブラリを作ってみました
実際には浮動小数点のようにある程度正確な数値ではなく
予め作られた2つのテーブルを使用しているのでかなり容量を使います
テーブル1が800バイトと少し
テーブル2がおよそ15キロバイト
とかなり大容量になっています(ビルド後のサイズ/ソースはもっとデカい)

精度はどうかというと、さすがにちゃんとした固定小数点数等を使っているわけではないので浮動小数点数(double)には劣りますが、おそらく近似値を使った直線よりは高精度なはずです

縦軸が高さ 横軸が気圧 右軸が高度で左軸が誤差(共にm) です
海面気圧は101325Paを使用しました

er軸はdoubleで計算した値からどれくらいズレているかという数値です
1mから9m程度高くでていますが、
 気圧が低ければ誤差は下の方に集まり、
 気圧が高ければ誤差の振れ幅は少ない
という感じになっています

今回は計算のしやすさのために1hPa単位でテーブルを作りましたが
2hPa単位にするだけでテーブル容量ははるかに小さくなるため、気が向いたらその方向の改良もしていこうかと思います

誤差については、さすがに10m前後は見過ごせない大きさではありますが
しばらくは「そういうもの」と割りきって使うことになりそうです
おそらくこの変動はテーブルによる物だと予想していますが、実際に確かめたわけではないので、結局のところ原因は不明です

不正な値が入力された場合の挙動に対応できないことや、負の高度(P0>P)を正確に処理できないという問題があるので そのあたりも課題です

0 件のコメント:

コメントを投稿