投稿

ラベル(実験)が付いた投稿を表示しています

gnuplotプロット例 : 最小二乗法の可視化的説明

イメージ
データプロットを関数(ax + b)でフィッティング 始めに  最小二乗法を用いた数値解析によるフィッティングを可視化してみることにしました。 実験で得られた測定データ、表計算や解析ソフトでは簡単に近似曲線と関数が得ることが出来ます。こういうのは実際どういった処理で求めているのかを意識することは無いかも知れません。ただあまりブラックボックスな技術にばかり頼りっきりでもしょうがないので、ちょっと試しに可視化してみることにしました。 用いるデータ さて、用いたデータプロットは以下のようになっています。これを 関数 f(x) = ax + b でフィッティング、つまり最適解となる変数a, bを求めます。 用いるデータプロット ここでは最小二乗法については説明しませんが、手順としてはまず適当にaとbをそれぞれある値に決めます。そこで定まった関数とデータプロットの各点との差を求めます。ここで差は二乗してデータプロット全ての点のそれを合計します(便宜上sumと置く)。そうするとa, b, sumのワンセットが得られます。あとはこれをa, bの値をそれぞれ変化させて、どのパラメーターを取ればsumが最小となるかを求めてそれを解とします。 可視化してみる   解だけ求めるなら計算してsumが最小となる点を抽出すればいいのですが、その過程を可視化するためにもう少し準備をします。  まず計算により得られるデータセットは以下の3列からなります。 a1, b1, sum1 a2, b2, sum2 a3, b3, sum3 a4, b4, sum4 ︙ なので、aをx、bをy、sumをzとして三次元プロットをしてみます。計算過程を動画にすると以下のようになります(左側がデータプロットと関数の二次元プロット、右側が三次元プロット)。左側のグラフではデータプロットの各点と関数との差を矢印で図示するようにしています。 (Youtubeにアップロードした動画、処理にはPythonによるプログラミングも併用)  この動画では大雑把にaとbの範囲を設定して計算しているので、どこが最小なのかはいまいち分かり難くなっています。これは、データプロットから大きく外れたときのsumの値がかなり大きくなるの...

[ちょっと実験] 温度計を気温差がある場所へ持ち出した時に安定するまでの時間

イメージ
屋外の温度を測りたいので  6月も後半で梅雨の時期らしく雨に日が多くなってきた感じ。 家庭菜園でちょっとばかり野菜を育てている関係上、外の温度がどれくらいなのか気になるところ。あまり気温が上がらない日が続くと生育が遅れがちになってしまいます。まぁだからといってもこればかりは自然相手なので、対処するのも手段は限られるわけですが。  さて、屋外の気温を調べる場合は気象庁のアメダスのデータで大体は把握出来るのですが、ここの場所は観測点からはちょっと離れているので一応どれくらい差があるものか確認しておきたいです。温度を測るとき、正確性を持たせるなら地上からの高さや日差しを遮るなどいろいろ条件を整える必要があるのですが、簡単に温度計を外に吊るしておくだけにしておきます。  とまぁアメダス観測点との違いを調べるかのように書いてますが、今回のブログで主に調べるのは後述するように温度計が示す温度の安定するまでの時間についてになります。 温度計が安定するまでの時間  さて、温度計を外に吊るしておくだけならすぐに出来るわけですが、外に吊るしたからといっても即座にそこの温度を示すわけではありません。温度計がそこの温度を示すまでにはある程度の時間を要するはず。室温30℃に置いていた温度計を、外気温0℃の外に吊るしてもすぐに0℃になるわけではないですから。このへんは温度計測定部の応答速度や、温度計外装(プラスチック部分など)がそこの温度と熱平衡になるまで待つ必要があったりとか関係してきます。なので、外に吊るした温度計が一体どれくらいの時間でそこの温度を示すようになるのか確認してみることにします。 (おそらく時間は一定ではなく、温度差や風のあるなし、日光などに影響されるでしょう) 用いる温度計と測定方法 温度計 とりあえず、部屋にあったこの温度計を使うことにしました。温度の他に湿度も測れます。この温度計、測定原理はたぶんバイメタル方式だと思います。あとはこれを外に吊るして、経過時間とともにそのときに示している温度を記録していきます。 測定結果  測定といってもそう大したものでもないですが、一応結果としては以下のグラフのようになりました。 温度(℃)、湿度(%)と経過時間の関係  室...

データ測定で全部「分単位」に揃えちゃえば楽かと思ったらそうでもなく

日付をまたぐデータ測定をしていた時、日時の扱いであれこれ考えていたときのまとめです。適当に書き散らしただけなので、雑談程度のまとめとなります。 以下のような日付と時刻のデータがあります。 2018/12/07 11:34 2018/12/07 19:09 2018/12/08 03:21 2018/12/08 15:27 2018/12/09 01:34 連続データとして扱うには単位を統一する必要があるので、これらを分単位で書き直すことにします。日付部分の情報は削って「1日目、2日目、3日目…」と扱うことにします。 まず経過日数を「時(hour)」に変換してまとめます。 11:34 19:09 (3+24):21 → 27:21 (15+24):27 → 39:27 (1+24*2):34 → 49:34 要は経過日数をaとしてa*24をそれぞれの時刻に加算しています。1日目の場合は日数が経過していない(つまり0日目なのでa=0)ので0*24が加算されます。2日目は1日が経過しているのでa=1、1*24が加算となっていきます。 これではまだ時(hour)と分(minute)が分かれているので、これも分にまとめます。 11*60+34 → 694 19*60+09 → 1149 27*60+21 → 1641 39*60+27 → 2367 49*60+34 → 2974 経過時間と考えると始まりが「694」というのは直感的ではないので、始まりの「0分」として扱うことにします(つまり相対時間に書き直す)。 694 - 694 = 0 1149 - 694 = 455 1641 - 694 = 947 2367 - 694 = 1673 2974 - 694 = 2280 このように単位を合わせてしまえば連続データとして扱いやすくなります。あとから絶対時間に戻したくなる場合もあるので、起点の日時(2018/12/07 11:34)は別で記録しておけばいいでしょう。 めでたしめでたし。 と、簡単に考えると話はここで終わるのですが、より厳密に考えていくといくつか考慮すべき条件が増えていきます。。 まず月をまたぐ場合、月によって30日、31日、28日と分かれているので、「月→日」に変換する場合に条件分けして計...

象の歯磨き粉(Elephant's toothpaste)実験とはなんぞや?

イメージ
象の歯磨き粉実験 というのがあるそうなので、ネットで画像や動画を見たら 「あー、あの実験のことね」 と思った次第。 実験の内容としては過酸化水素の分解実験。 分解促進の触媒を加え、洗剤を用いることで多量の発泡が行える。 見た目的にインパクトのある化学実験。 まぁ簡単に説明すればそんなところかと。 反応式や実験条件など詳しくはネットや書籍で調べてみて下さい。 象の歯磨き - Wikipedia Elephant's toothpaste - Wikipedia などなど 実験条件を工夫すればかなり強力な発泡になるようだけど、その分実験の危険度は増していくので要注意。保護メガネをするのはもちろん、発熱するので火傷の危険もあるし、発泡の制御をしくじるとガラス器具による怪我の恐れもあるでしょう。 実験は安全に行ってこそのものなので、事故や怪我をしたらなんにもなりません。 万全を期して詳しい人の指導の下で行うようにしましょう。 Youtubeに上がっている動画をいくつかプレイリストにまとめてみました。

ボールペンのペン先がホントにボールなのか見てみたお話

イメージ
筆記具としてボールペンをよく使っています。ボールペンは鉛筆やシャーペンと違って折れる心配がないので、結構重宝しています。まぁボールペンは消しゴムでは消せないので、適材適所でシャーペンと使い分けてはいるわけですが。 (最近は折れないシャーペンや消せるボールペンなんてのも出てますね) さて、いつもは特に気にせずにボールペンを使っているのですが、ふと気になって ・ペン先がホントにボールで出来ているのか? というのを疑問に思いました。実際、目で見ても小さすぎて全然分からないですし。 そこでデジカメのマクロモードを使ってなるべくペン先を拡大するようにして撮影してみました。 横から見るとこんな感じ。かろうじて先端にボール状のものがあるように見えます。 別アングルから ペン先をさらに拡大 ここまで拡大すると、ボール状になってるのがハッキリ分かるようになりました。 実際にはボールの半分以上が隠れていて見えないので、まだ追求して調べる余地はあるのですが今回はこんなところにしておきます。 普段何気なく使っているボールペンですが、改めてよく見てみるといろいろおもしろい発見が出来るかと思います。またボールペンの歴史なんかも調べるのもおもしろいですよ。まずはボールペンメーカーのサイトやWikipediaなどを調べてみるといいかと思います。

GNOME Boxesで仮想マシン環境を構築

イメージ
何かとパソコンを使っているといまの環境はそのままにしたいけど、他のOSを使いたいとか設定を変更したらどうなるか確認したい場合が出てきます。他に空いているパソコンでもあればそれで試せるのですが、パソコンを用意したり環境構築をしたりするのはめんどうです。 そういったときに仮想マシンというのを使うと便利です。仮想マシンを簡単に説明すると、パソコンの中にソフト上で別のパソコンを動作させるといったものです。以前と比べてパソコンの性能も上がっているので、仮想マシンでもそれなりの性能で動作してくれます。 UbuntuなどLinuxデスクトップ環境で仮想マシン環境を使う場合、VirtualBoxがよく使われています。 Oracle VM VirtualBox Wikipedia :  英語記事 、 日本語記事 VirtualBoxはいろいろ細かく設定出来るのですが、設定項目が多岐に渡るため少々とっつきにくい感じはあります。今回紹介するGNOME Boxesは比較的簡単な設定で使用することが出来る仮想マシン環境構築ソフトです。 Apps/Boxes - GNOME Wiki! Wikipedia 英語記事 Ubuntuの場合はソフトウェアセンターからもインストールすることが出来ます。 apt:gnome-boxes 正常に機能しない場合の対処について さて自分の環境(Ubuntu16.04)だけかも知れませんが、インストールしたGNOME Boxesがうまく使えないことがあります。新規の仮想マシンを作ろうとしても何故か失敗してしまう状況がありました。その場合は一度GNOME Boxesを終了してもう一度起動することで、正常に使用することが出来ました。 仮想マシンを作っている場合は起動画面にそれが表示されるのですが、起動に失敗した場合は上の画像のような初期画面が表示されてしまいます。そしてその場合は仮想マシン作成などは失敗してしまいます。起動画面に表示されないので、すでに作ってある仮想マシンも起動することが出来ません。 とりあえず一度起動してダメな場合は、終了して立ち上げ直せば大丈夫だとは思います。 仮想マシンを作った後では、正常に起動すると以下のように仮想マシン選択画面が表示されます。 基本的な使い方 使い方に...

スポンサーリンク