C++ Python 計算速度比較
評価手法
for文で10億回足し合わせる計算をPythonとC++で同じ計算をした。
計測時間はmsecの分解能で測定した。
python
import time x = 0 start_time = time.time() for i in range(0,100000000): x +=1 elapsed_time = time.time()-start_time
#include <iostream> #include <chrono> #include <stdio.h> using namespace std; int main() { chrono::system_clock::time_point start, end; start = chrono::system_clock::now(); int x = 0; for (int v = 0;v < 100000000;v++) { x +=1; } end = chrono::system_clock::now(); double time = static_cast<double>(chrono::duration_cast <chrono::microseconds>(end - start).count()/1000.0); }
使用スペック
CPU | Intel(R) Core(TM) i5-7200U CPU @ 2.50 GHz |
---|---|
メインメモリ | 8GB LPDDR3 SDRAM |
microsoft wordのバグ??
wordで数式ツールを使って、シンボルをつけるときに文字によってつくシンボルが変わるバグを発見した。
数式のショートカット\barを使うとオーバーラインのアクセントがつく。
しかし、には横棒がつく。
その他のやはオーバーラインがつくのだが、は横棒になる。
そのほかに横棒になるものも探してみた。
がオーバーラインにならず、横棒になる。
アクセントを平均の意味として用いる場合、統一していないととても恥ずかしいのでしっかりと統一するようにしよう。
先に枠だけ作る形になるので、バグに見舞われることもないだろう。
有効数字のすゝめ
はじめに
有効数字は多くの人が苦手意識を持つ。それは手法として覚えているからだと私は思う。そのため、物理的観点から理論として理解する。
有効数字(有効桁数)
信じることのできる桁数のことをさす。また、測定器が出せる分解能のことを指して、同様に用いることがある。
数字として信じられる有効桁数は以下の様になる。
測定データ | 20.0 | 1441 | 5.14425 | 0.0004 | 1.342 |
---|---|---|---|---|---|
有効桁数 | 3ケタ | 4ケタ | 6ケタ | 1ケタ | 4ケタ |
次に、測定器の分解能として信じてよい小数点以下の有効桁数は以下の様になる。
測定データ | 20.0 | 1441 | 5.14425 | 0.0004 | 1.342 |
---|---|---|---|---|---|
小数点以下の有効数字 | 1ケタ | 0ケタ | 5ケタ | 5ケタ | 3ケタ |
小数点以下の有効桁数とは、どこまで細かく測定できるかを見る桁数のことだ。
有効数字の四則演算
下のような実験があった場合を想定してやってみる。この緑と青の面積を求める。
O [m] | X [m] | Y [m] |
---|---|---|
0.521 | 157.0 | 156.50 |
横
計算の前と後で扱っている物理量(単位)が変わらない。そのため、測定の分解能の粗さで考えればよいだけだ。よって、小数点以下有効桁数1桁に合わせて
となる。
加算、減算のような物理量(単位)が変わらない計算の場合は、小数点以下の有効桁数が一番粗いものに合わせればよい。物理量が変わらないので、計算後に分解能が高くなるのはおかしいと考えられるはずだ。
面積
計算の前後で物理量(単位)が変わっている。つまり、測定器では直接求められない。そのため、数字の有効桁数で考えればよく、有効桁数を4桁に合わせて、
となる。
物理量(単位)が変わる場合、数字のもつ有効桁数が一番粗いものに合わせればよい。物理量が変わるので、測定器の分解能を考慮する必要はない。
発展
156.0 | 120.4 | 80.3 | 40.9 | 9.0 |
---|
同じ測定器で条件を変えながら測定し、上のようなデータが取れたとする。この場合の有効数字を考える。
同じ測定器なので、小数点以下の有効桁数は変わらない。そこで、以下の様にする。
156.0 | 120.4 | 080.3 | 040.9 | 009.0 |
---|
本来は見えない数字をあえて、露出することで有効桁数を合わせることが出来る。また、その測定器の持つ粗い有効桁数を示すことが出来るため、物理的意味も持った数字として扱うことが出来る。しかし、レポートでは、このように書くことはおかしいので、計算の都合上、表しているだけだということは理解しておきたい。
誰にでも見せられるグラフ
系列を増やしたグラフを作成する時、おそらく多くの人がこのようなグラフを書くだろう。
しかし、このグラフは白黒にした時、色盲の人が見た時、どういったグラフに見えるのだろうか。
白黒にするとこうだ。これではせっかくの系列を分けたグラフが読み取りづらく、読み手にストレスを与える。
そこで、一工夫を加える。それはマーカーの形を変えることだ。
このように変えることで、白黒になったとしても、色盲の方が読んだとしても伝えたいことをダイレクトに伝えれられる。
Excelでのマーカーの変え方
グラフツールの書式設定で系列の書式設定を表示する。
上のような書式設定から、マーカーのオプションを自動から組み込みに変え、マーカーの形やサイズを変えられる。
近似曲線の求め方~三角関数の二乗~
はじめに
のような関数は微・積分が非常に楽で最小二乗法で面倒な作業計算を必要としない。
上の三角関数を含むような式における最小二乗法は微・積分によってとを繰り返すため計算が煩雑になる。偏光実験における近似曲線の求め方を備忘録として記録した。関数は以下の関数だ。
パラメータの導出
とすると、
、、となり
、、となる。
ここの式変形は倍角の公式やらを駆使すればできる。ぜひ自分の手で解いてみてほしい。
さらに、
、、とすると、
となる。
ここまでくれば,やが出てこないので,後は3変数の最小二乗法をやるだけである.
が最小となるA、B、Cを求める。
のように簡易的に書き示すと、
となり、この三式の行列を解けばABCが求まる。
論文や研究発表で考えるべき事
1.現在までに分かっていることは何か。
多くは研究背景と呼ばれるものだ。自分のやっていることの方向性が聞き手に理解できるよう、研究室の概要や自分の研究の大元を書く。
2.何を新しく知ろうとしているか。
自分の研究テーマの大元からもう少し深ぼった内容を書く。先輩の実験の引き継ぎをしている場合のような実験テーマを書く。
3.なぜこの仕事が重要か、何が面白いか。
自分の研究によって解明されること、また研究することで得られる結果の重要性を書く。この章では、自分が実際にやった研究の話をし、その研究が世の中になにをもたらすかを示す。つまり、ここが弱いということは自分の研究が意味のない研究であることを自分から示すことになる。聞き手に自分の研究の面白さを力説するように書く。
4.実際の仕事の結果として分かったことは何か。
これまでにやった研究成果を書く。解析手法や、評価手法などの実験方法からはじめ、その結果と考察を書く。自分の苦労話をするのではなく、それが実際にどういったことを世にもたらすかを書く。
(5.その結果がその分野で何をもたらすか)
本来は4章で書いたことが1章への解答であるべきだ。しかし、研究のすべてが世の利益となるものであるとは言えない。世の利益となる研究をするための研究だってあるわけだ。そんな時に、自分の成果がなにを自分の分野にもたらすかを書く。