VS Code, clang lldb, C/C++ デバッグ

環境

Ubuntu 18.04

clang-6.0, lldb-6.0, cmake

 

gdbの場合は以下のコマンドを実行すればC/C++デバッグが可能

sudo apt install gdb

 

lldbを利用したい場合は以下のプラグインを導入する

marketplace.visualstudio.com

 

 

以降の手順は以下のリンクを参考にしてください

qiita.com

 

Twitterのつぶやき内容に応じて、Microsoft Flowを利用してOffice 365 Outlookから自動でメールを送信する

japan.flow.microsoft.com

いわゆるIFTTTのMicrosoft

 

  • IFTTTとは?

ifttt.com

Twitter, Google カレンダー, Google Drirve, LINE, Outlook... etc.

異なるサービス同士を連携できるサービス

 

  • Office 365 Outlook を使う理由

1. 本当はSlackを使いたい、G Suite for Educationを使いたい…!

Slack -> セキュリティがどう(いまSkype使ってるけど :thinking_face:

G Suite for Education -> 個人的最適解。 でもこのサービス内でG Mailを利用するには、MXコードの編集が必須で大学のIT管理者問い合わせが必須条件。過去にG Suiteを取りやめたことがあるらしく、説得は困難かと予想(あとで聞きに行く)

 

2. IFTTTだと条件分岐を行うことが困難で、文面の指定が難しい

 

  • Twitterを使う理由:ツイ廃(自称)

 

 

今回の目的:

Twitterで特定のハッシュタグ、特定の単語を含んでいるかどうかを条件分岐で判断し、Office 365 Outlookメールで「遅刻連絡」または「欠席連絡」を行う

 

手順

1. Microsoft Flowにログインします

2. 「1からフローを作り」ます

3. トリガーにはTwitterの「新しいツイートが投稿されたら」を選択,

ここでは from: や #ハッシュタグ 等の検索オプションを使って、トリガーとするツイートを絞り込む

理由:ユーザを絞り込まないと他人のツイートに反応するし、ハッシュタグで制限しないとすべての自分のツイートがトリガーになるので危険きわまりないため

4. 遅刻や欠席の判別については条件分岐を駆使してください

以下のフローチャートを参照

f:id:heruwakame:20180606183414p:plain

私にはどうやっても使いこなし方が見い出せなかったけれども、MS のドキュメントを読み込めば、「式」(ラムダ式?)を使ってより簡易化できると考えられる

docs.microsoft.com

5. 「アクションを追加」でOutlookを選択、メールの宛先、件名、本文を設定。

6. 完了!

 

f:id:heruwakame:20180606184701p:plain

 

実情:Twitter社のAPI利用制限が邪悪なためか、15分に一回しか自動で実行してくれない。即応性を求める場合はこの方法を使用するべきではない。ただし、テストは15分待たずに行うことが可能。フロー編集画面右上にある Testをクリックすれば、トリガー待受状態になり、すぐに動作テストが行える。

Setup OpenGL 4.5 on Ubuntu 18.04 LTS

 

情報元

本記事は以下のWebサイトをもとにしています

無料で親切な、OpenGLに関する教材です。

learnopengl.com

 

本記事の目標

以下のレポジトリにあるソースコードをcmakeコマンドで一斉コンパイルすることなく、自前でちまちまコンパイルできるようにすること。

つまり、glad, glfwやopenglを導入し、自分が記述したソースコードを自前でコンパイルして実行できるようにすること。

github.com

 

CPUとGPU情報

$ lscpu

ベンダー ID: GenuineIntel
CPU ファミリー: 6
モデル: 60
モデル名: Intel(R) Core(TM) i7-4790 CPU @ 3.60GHz

GPU : NVIDIARADEONもない、Intel HD Graphicsを利用

 

対応OpenGLバージョンの確認

OpenGLの場合

lscpuで確認した「CPUファミリー」に表示されている数字は、CPUの世代を表している。

私の場合は6であったので、第6世代インテルCoreプロセッサーの欄を確認した。

www.intel.co.jp

 

2018年4月下旬現在、手持ちのCPUが対応しているOpenGLの最新バージョンは4.5。

一方、OpenGLの公式サイトで発表されているOpenGLの最新バージョンは4.6。

OpenGL - The Industry Standard for High Performance Graphics

 

対応バージョンが最新版でない理由は、OpenGLを管理するKhronosが策定した仕様に対し、GPUメーカーが追従して開発するためと考えられる。

 

Mesaの場合

2018年4月下旬現在、Mesaの最新版は以下のサイトより、18.0.1

Bug fixが含まれているので、これより古ければアップデートを検討

The Mesa 3D Graphics Library

 

 

現在利用中のOpenGL等のバージョン確認

最新版情報を確認したあとは、現在利用しているソフトウェアのバージョンを確認する。

$ glxinfo | grep "version string"

 

server glx version string: 1.4
client glx version string: 1.4
OpenGL core profile version string: 4.5 (Core Profile) Mesa 18.0.0-rc5
OpenGL core profile shading language version string: 4.50
OpenGL version string: 3.0 Mesa 18.0.0-rc5
OpenGL shading language version string: 1.30
OpenGL ES profile version string: OpenGL ES 3.1 Mesa 18.0.0-rc5
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.10

以上から、

  • OpenGL : 4.5
  • Mesa : 18.0.0-rc5

であることがわかる。

OpenGLは4.5で、対応バージョンの中では最新である。

Mesaは18.0.1がリリースされているため、アップデートを行いたいところだが、

$ tar xvzf mesa-18.0.1.tar.gz

$ cd mesa-18.0.1

$ ./configure

 ...

configure: error: --enable-llvm is required when building r300

というエラーを得た。

このエラーはよくわからないので、この記事を見てくれた人でプロがいらっしゃれば対処法を教えてください。

…というわけで、mesaのバージョンはこのままでいく

 

 

OpenGL関連ライブラリのインストール

GLFW

apt利用

sudo apt install libglfw3-dev libglfw3

GLFW - Download

Source packageから最新版をダウンロード&ビルドしても良いが、最新版のリリース日は2016年8月とちょっと古いうえ開発が滞っているため、aptでGLFWの最新版を導入できて楽である。

ビルド

Githubレポジトリからgit cloneしてlatestブランチに変更したあとでビルドしない限り、旨味はない。

GLFW: Compiling GLFW

 

GLAD

Githubレポジトリにいろいろ入っているけれども、無視してOK

github.com

 

以下のサイトにアクセス

http://glad.dav1d.de/

  • Language : C/C++
  • Specification : OpenGL
  • API :  gl -> version 4.5
  • gles 1, 2, 3 : None
  • Profile : Core
  • Extensions : 無視
  • Options : Generate a loader にチェック

を確認し、GENERATEを実行、生成されたZIPファイルをダウンロード.

$ unzip glad.zip

Archive: glad.zip
extracting: src/glad.c
extracting: include/glad/glad.h
extracting: include/KHR/khrplatform.h

src/glad.c は、プロジェクトフォルダと同じ階層に入れる。

includeに含まれているフォルダはフォルダごと /usr/include に入れる。

 

glfw3

GLFW - An OpenGL library

2018/4/27 (Fri) 18:18 "-lglfw3" の問題が出て、忘れていたことに気がつき追記

marina.sys.wakayama-u.ac.jp

 

 

実行

たとえば以下のファイルを実行したいとする

github.com

トップディレクトリのREADME.md曰く、必要なパッケージは以下の通り

g++ cmake git libsoil-dev libglm-dev libassimp-dev libglew-dev libglfw3-dev libxinerama-dev libxcursor-dev libxi-dev

現在のディレクトリを

> ~/Document/LearnOpenGL

としたとき、

  1. glad.cをこのLearnOpenGLフォルダに追加
  2. コピーしてきたソースコードの3行目くらいに以下の行を追加

#include "glad.c"

gcc, g++ コンパイル時のオプションは以下の通り

gcc <ファイル名>.c -lglfw3 -pthread -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -ldl -lXcursor

g++ <ファイル名>.cpp -lglfw3 -pthread -lXrandr -lXxf86vm -lXi -lXinerama -lX11 -ldl -lXcursor

 

タイトルがLearnOpenGLの、真っ黒なウィンドウが表示されたら成功です

 

失敗したが自力で対処できた場合、本記事を加筆修正しますので、コメント欄にコメントを残してください

github.io + jekyll での自作サイト設定

ごめんなさいやっぱり無理でした…

流れ

  1. ローカルのコンピュータにruby, jekyllの環境を構築します
  2. jekyllで適当なサイトを作成します
  3. 作成したサイトをgithub pagesに反映させてみます
  4. 作成したサイトのテーマを変更してみます

参考資料

段階 1, 2, 3 で参考になります。

qiita.com

環境構築

まずはDependency versionsで、今github pages側が

  1. どのバージョンのrubyに対応しているか
  2. github-pagesのバージョンはいくつか

といったことを確認しましょう。 

pages.github.com

Rubyの導入 (Linux)

rubyの導入のためにまずはrbenvを入れます。

が、さらにその前にanyenvの導入をおすすめします。

anyenvはrbenvのみならずpyenvといった他の言語のenvをまとめて管理できるツールです。

github.comanyenvの導入や設定方法、使い方は上記のサイトを参照してください。

もちろん、rbenv単体で利用したとしても操作方法に一切差はありません。

 

さて、rbenvで、rubyのバージョンを指定しつつrubyをインストールします。

rbenv install (Dependency で指定されている rubyのバージョン)

rbenv global (Dependency で指定されている rubyのバージョン)

例) rbenv install 2.4.2

例) rbenv global (rubyのバージョン)

Ubuntuなら ~/.bashrcの編集等をお忘れなく。

github-pages の導入

続いてgem でgithub-pagesを導入。

gem install github-pages -v (指定のgithub-pages のバージョン)

例) gem install github-pages -v 175

これでDependency versions に書いてあるgemは全部一括で、しかも記載された通りのバージョンで導入できました。

jekyll new (ディレクトリ名)
rm Gemfile Gemflie.lock

rm Gemfile Gemfile.lock の実行についてはQiita記事を参考にしているのでなんとも言えません。Gemfileは削除してもしなくてもいいが、Gemfileを使う場合は必ず以下の1行目をコメントアウトし、2行目を追加する必要がある。

gem "jekyll", "~> 3.6.2"


gem 'github-pages', group: :jekyll_plugins

 

jekyll s

でローカルでどのようなサイトが出来上がるかを確認することができます。

github pagesに反映

で、とりあえずこのサンプルページをgithubpages上にあげてみます。

ちなみに、 (githubユーザー名).github.io に直接ページを作成するならリポジトリ名を(githubユーザー名).github.ioに設定すればよいですが、そうでないならばブランチ名をgh-pagesに設定することで、<githubユーザー名>.github.io/リポジトリ名に設定することができます。

git init

git add .

git commit -m "Initial commit"

git branch -m master gh-pages

git remote add origin https://github.com/(ユーザー名)/(リポジトリ名).git

git push -u origin gh-pages

見た目がおかしいとき

で、このままだとページの見た目が大きく崩れていると思います。

そこで、以下のStackOverflowのQ&Aを参考にして

stackoverflow.com_config.ymlからbaseurlの設定を見つけ出してリポジトリ名を書き込みます。

また、index.html の css の設定を変更します。

以上の変更をgithub上に反映すれば、ページは綺麗に表示できるようになったと思います。

 

他のテーマの使用

はじめに

他のテーマの使用のためには、Gemfileを編集する必要があります。

数字は一例ですが、以下の記述を

gem "jekyll", "~> 3.6.2"

以下のように変更してください。

# gem "jekyll", "~> 3.6.2" 

gem 'github-pages', group: :jekyll_plugins

また、念の為に libcurl4-openssl-dev を apt-get等で導入してください。

本題

minimal mistakes という、githubが公式で提供しているわけではないテーマを使うためには、

_config.ymlに対して以下の行を追加します。

plugins:
  - jekyll-remote-theme

remote_theme: mmistakes/minimal-mistakes

なお、おそらくminimal mistakes以外にも追加することは可能と思われます。

以下のissue内ではテーマカラーを選択することができないと言われていますが、現在では

minimal_mistakes_skin : "default" # この他 "dark" 等あり

 でちゃんと変更することができてます。

github.comほか、_config.ymlに設定を追加していくことで、minimal mistakesが持つ特徴を反映させることが可能です。

_config.ymlに追加するべきオプション等については、テーマ元となるリポジトリにある_config.ymlを参考にしてください。例えば、minimal mistakesであれば

以下のリポジトリ

github.com(↑テーマのはいったリポジトリ ↓リポジトリのなかでも参照すべきファイル)

minimal-mistakes/_config.yml at master · mmistakes/minimal-mistakes · GitHub

 

jekyll s をローカルで実行された方は気がつくかもしれませんが、github pages上サイトにテーマを反映させるにはわりかし長い時間がかかります(それでも記事一切無しで1分未満、細かく言えば36秒でした)。

 

注意点

ローカルでうまく動かないからと言って凹まないで…設定さえ合っていればリモートで動くから…

 

備忘録

Minimal Mistakesというテーマを気に入ったので、このテーマを利用します。

 

以下の手順1, 3の詳細はここ見ればOK

Adding a Jekyll theme to your GitHub Pages site with the Jekyll Theme Chooser - User Documentation

 

 githubpagesの導入

1. githubに登録したら、以下の手順に従います

pages.github.com

github側では既定のデザインテーマが用意されているのでそっち使ってもOK

この場合はrubyのインストールとか飛ばしてもへーき(手順も英語読めれば余裕)

Adding a Jekyll theme to your GitHub Pages site with the Jekyll Theme Chooser - User Documentation

 

jekyllの導入

2. PC上にrubyをインストールします

オブジェクト指向スクリプト言語 Ruby

(私はUbuntuのrbenvでインストールしました、Windowsでの設定はgemの設定で文句いろいろ言われるので調教を諦めました)

 

3. gemでJekyll, bundleを導入します

(rbenvでruby入れたせいか以下の設定が必要でした)

(ubuntuのaptだと普通にbundleのバージョンが古いし勝手にruby2.3をインストールしようとするのでダメ)

qiita.com

使いたいテーマの導入

4. 導入したいテーマがプリセットなものでない場合は以下を参考に導入する。

たまたま私もminimal mistakesが気に入ったので以下のバイブルを参考にした。

ともかく後の運びはこの記事を読めばわかる。

k11i.bi

以下のダウンロードからzipファイルを引っ張ってきて、

ローカルの<username>.github.io上に展開する

mmistakes.github.io

展開したらGemfileが見つかるはずなので、githubpages用にGemfileを以下のように編集する

source "https://rubygems.org"
gem "github-pages", group: :jekyll_plugins

その後 bundle update, または bundle installを実行

_config.ymlに以下を記述

remote_theme: "mmistakes/minimal-mistakes"

 

たぶんこの時点で

bundle exec jekyll serve

を実行すればローカルでページが生成されて、アドレスがコンソール上に表示される

そのアドレスをブラウザで開けば完成形が見られる。

 

 

Webサイトの設定

_config.ymlを編集する。

ファイルの末尾に以下を追加する

remote_theme : "mmistakes/minimal-mistakes"

以降はここ参照。

mmistakes.github.io

minimal_mistakes_skin : では様々なカラーテーマがあるので選ぶ

locale : "en-US" から "ja-JP"  に変更

title : "サイトのタイトル"

ほかにもsnsとの連携、サイト管理者情報(bio)、アクセス統計をとるシステムとの連携(google analyticsなど)、記事のタグ付け方法、コメント掲載機能(reCHAPTA対応、様々なアカウントと連携可能)

等々、設定はいろいろあるけれども、先ほど示した日本語のページに詳しく書かれているのでそちらを参照してください。

あと、_config.yml についてはそのファイル形式上極めて面倒な形式が決まっているのだけれども、エラーがでた時はその行数と位置を絶対当てにしないで欲しい。

 

あとはおいおいwikiを追っていけばわかる

RC直列回路

はじめに

以下のサイトの内容を実際に実験した結果をまとめたものです

Introduction to RC Circuits [Analog Devices Wiki]

回路図等の図は上記を参照願います

 

使用機器

www.analog.com

www.analog.com

実験結果

RC直列回路(@50Hz)

f:id:heruwakame:20180218193050p:plain

 

RC直列回路(@500Hz)

f:id:heruwakame:20180218193118p:plain

 

RC直列回路(@1000Hz)

f:id:heruwakame:20180218193150p:plain

 

RC直列回路(@1500Hz)

f:id:heruwakame:20180218193211p:plain

 

結論

周波数が高くなると明らかに振幅が小さくなっていることがわかります

測定結果を出力して周波数による振幅比の変化をグラフで表示しても良かったんですが、どうもExport Data機能が完全に死んでいるらしいので難しいですね。ソフトウェアを管理者権限で動かしたら保存できるのかな?

分圧・分流の法則

はじめに

以下のサイトの内容を実際に実験した結果をまとめたものです

M1K Basics and Voltage/Current Dividers [Analog Devices Wiki]

回路図等の図は上記を参照願います

 

使用機器

www.analog.com

www.analog.com

実験結果

分圧回路

定電圧源

f:id:heruwakame:20180218185755p:plain

電圧実測値:\(2.9221 {\rm V}\)

電圧理論値:\(V=5.0\times\frac{1.5}{1.0+1.5}=3.0 {\rm V}\)

 

正弦波電圧源(交流ではない)

f:id:heruwakame:20180218185816p:plain

 

電圧理論値-最大値:\(V_{\rm max}=4.5\times\frac{1.5}{1.0+1.5}=2.7 {\rm V}\)

電圧理論値-最小値:\(V_{\rm min}=0.5\times\frac{1.5}{1.0+1.5}=0.3 {\rm V}\)

電圧実験値:理論値とだいたい一緒(細かい電圧値を見る方法がわからないので…)

 

分流回路

定電流源

f:id:heruwakame:20180218185908p:plain

電圧実測値:\(2.7221 {\rm V}\)

よって\(1.0{\rm k}\Omega\)抵抗を流れる電流値は

電圧理論値:\(V=\frac{2.7221}{1.0}=2.7221 {\rm mA}\)

 

正弦波電流源(交流ではない)

f:id:heruwakame:20180218185920p:plain

 

何が起きたのかよくわからない。計算値と合わない。

「考察」とは

今北産業*1

考察のためには

  1. 文章力が大事
  2. 統計学も大事
  3. 調査能力も大事

 

まえがき

工学部の実験講義で課されるレポートの中で最も頭を抱えたくなるのは、

  • その分量の多さ
  • 何を書けばいいのかさっぱりわからない実験原理
  • 大量のデータ処理がとてもめんどくさい実験結果
  • まず問題文からして言っていることがさっぱりわからない課題

以上4つのいずれでもなく、間違いなく

  • 定性的・定量的な考察

の部分であろう。

 

私が普通科高校に在籍していたときに課された実験の実施回数は片手で数える程度でしかなく、またその実験に関してたとえいい加減なレポートを書いて提出したとしても最低でも「良」(またはB)評価が来たものだった。

しかし大学ではご丁寧にも「定性的・定量的な考察」という評価観点が入ってくる。

普通ならそんなこと言われたって…わけがわからないよ…としょげるところである。

実際私も言っている意味がよくわからなかったので、とりあえずTAから貰ったヒントを活かして、精度や誤差、平均値などを論じたりした。しかし、今考えるともっとやりようはあったのではないかと思う。*2

目的

本記事の目的は、そのような「定量的な考察ぅ?わけがわからないよ…」という、大学1年のときの私のような人に対して、定量的な考察の仕方をまとめて示すことにある。*3

考察とは?

そもそも考察とは、例えば実験結果で見つかった傾向や外れ値の、要因または原因の追究や、実験結果は理論的に得られる結果と比較して妥当であるかどうかの分析を行う、レポートの中では最も重要な部分である。

 

以下しばらくポエム

考察という部分がなかったら、「ピサの斜塔のてっぺんから鉄球を落としたら地面に向かって落ちました、羽を落としたら鉄球よりもゆっくりと地面に向かって落ちていきました!」と報告する「だけ」で済んでしまう。このような報告は観察日記に過ぎない。(極論)

より重要なのは、実験結果についてその妥当性を検証を行うこと、あるいはたとえ後世で間違っていたと証明されてしまうにしても何らかの仮説を立てることであり、そしてその場合は単に仮説をたてるだけではなく、その仮説が成り立つ理由を、レポートを読んだ人が十分納得できるように列挙していく過程にある。

と私は考えている。

ポエム終了

 

考察に必要なこと

考察は学生によってその質と量とに大きく差が出る。

1. 文章力

まず、読み手を納得させるためには、読みやすい文章*4が必須である。

例えば、複数の実験結果について比較するときに、実験1について言及していたかと思えば、いつの間にか断りもなく実験2の結果について言及していていたり、かと思えばやはり何の断りもなく再び実験1の結果について言及している、という場合や、「あれ」や「それ」、「これ」の指示語の先が明らかでない場合があると、「今この文章は何について述べているんだろう?」となりかねない。

適当にガーッと考察を書いているとたまにそういった文章が現れるため、レポートを書くときは「今この文章は何について述べているか」を常に意識することが大切である。

この点を満足するには、何かに言及するときははっきりと対象を述べたり、「これ」といった指示語を控えて「この傾向は」「この結果は」「この値は」といったように名詞を伴って利用するべきであるし、もしどうしても指示語単体を使う必要がでてきたときには、指示先となる文章との距離を最低限に抑えるべきである。また、「しかし」「一方で」「したがって」「ほかにも」「加えて」といった接続詞を適切に使う必要がある。*5 *6

 

この記事にあるような支離滅裂な文章って読んでて辛い。現にいま読み直していて辛い。レポートを読む先生は更に大変だと思う。もしかしたら実は先生方は精神や感情を押し殺してレポートを読んでいるのではないだろうか。あまりに酷い文章だと点数に悪影響を与えているかもしれない。

 

2. 統計学的な知識

実験ではデータを多く扱うので、その処理や表現方法に長けている必要がある。

例えばデータの性質は何でもかんでも平均値で表せばいいというものではない、ということを十分把握しておく必要がある。

この点最も必要になる知識は、やはり統計学の知識である。

平均値

統計学的な量として最初に習う平均値と言う言葉にすら複数の算出方法が存在する。

  1. 相加平均
  2. 相乗平均
  3. 調和平均
  4. …他にある?あったら教えてね
  • 相加平均

$$\mu=\frac{1}{n}\sum^n_{k=1}{x_k}=\frac{x_1+x_2+x_3+...+x_n}{n}$$

相加平均のよいところは簡単なところ。n個の値を足してnで割るだけ。

相加平均の悪いところは単純なところ。1個でも極端に大きな値があるとモロに影響を受けてしまう。

  •  相乗平均

$$\mu_G=\sqrt[n]{\prod^n_{k=1}{x_k}}=\sqrt[n]{x_1x_2x_3...x_n}$$

  • 調和平均

$$\frac{n}{\mu_H}=\frac{n}{\sum^n_{k=1}{\frac{1}{x_k}}}=\frac{n}{\frac{1}{x_1}+\frac{1}{x_2}+\frac{1}{x_3}+...+\frac{1}{x_n}}$$

相乗平均、調和平均の使い所や利点・欠点は知らないので誰か教えて欲しい。

 

これは余談だが高校数学を習っているならば、1と2を「相加・相乗平均の関係式」として一度は聞いたことがあるはずである。*7

 

相加平均にメリット・デメリットが存在することがわかったところで、データの性質を表す他の方法を思い出そう。

 

すると、やはり高校数学で習ったであろう分散や偏差といったことが思い当たるはずである。

(母集団・標本)分散・標準偏差

分散は平均値まわりのデータの散らばり具合を示す統計的な指標である。

標準偏差は、分散のままだと実験データに対して得られる次元が$({もとの次元})^2$ということになってしまうので、$\sqrt{分散}$をとって元のデータとの次元をつじつま合わせした統計指標である。

(数式はどういうわけかMathjaxで入力できないので諦めた)

使いみちとしては、例えば複数回実験を行った場合、得られたデータには「必ず」ばらつきが生じる。

このばらつきの程度を評価しなければ、得られたデータに関して「その結果が得られたのって単なる偶然なんじゃないの?」と言われたときに返す言葉がなくなってしまう。

*8

したがって、実験データに見られる傾向が有意であることを示すために、標準偏差を用いてデータのばらつき具合を評価して、その小ささを示す必要がある。

やる気なくしたのでここまで。

 

正規分布

ここで、正規分布を導入する。(数Bにあったかな?)

正規分布ガウス分布ともよばれる。

 

平均値の不確かさ

正規分布を利用して平均値の不確かさを議論する方法が存在することに気がつけば、あとは容易に定量的な考察のポイントを大量に稼ぐことが可能である。

 

最小二乗法とその評価

最小二乗法、線形回帰、線形回帰の結果得られるR2値といったものもあるが、個人的にちょっと面白いと感じている方法として、「あえて対数をとって線形回帰をとり、その係数から次数を求めていろいろ判断を下す」といったものもある。

 

Excelの機能

特にExcelを使っている場合は線形回帰によって得られるパラメータを事細かに表示してくれたりする便利機能があるので、ぜひ活用するべきである。

  • 機能の有効化方法*9
  • 機能の利用方法*10

 

3. 文献漁り

研究室配属後のことはよくわからないが、どうやら入居したらいろいろ先行論文を読むことになるらしい。その読み物に関して私なりに考えていることは、「先行論文を読むことで研究領域の雰囲気もキーワードもつかめるし、同じ研究を2度繰り返した挙句に卒論発表会で『同じような先行研究あるよ』とすべてを台無しにされる可能性も薄くなる。また、学会で発表されるような論文それ自体は審査を受けているので、安心して参考文献リストに載せることができ、これにより自分の論理をパワーアップさせることができる。」という程度である。RPGか?

以上で述べたように、私は文献漁りを、キーワードをつかむために非常に重要な行動であると考えている。なぜなら、キーワードをつかむことができればGoogle検索なりOPACで書名を検索したり、関連論文を当たることができる、すなわち更に詳しい情報を得られるからである。*11

大抵の場合、ずさんな学生実験でなければ参考文献リストが載っている。これは暗に「お前らこの本借りて読むくらいはしろよ?」という先生からのお達しである。学生の中にはちゃんとレポートを書きましたよという雰囲気を出すために読んでもいない本を参考文献に載せる人もいるかもしれないが、これは愚かな行動である。読んだほうがいい。時々課題の解答すら載っている。

この情報を漁る能力は、定性的な考察において威力を発揮する。

教科書の些細な記述からでもいいので情報をたくさん持っていると、色々と考えを巡らせることができるのである。

 

0.おまけ

プログラミングによる実験を行ったので再実験がいくらでもできる、という場合は、入力データや内部処理を僅かに変えて変化を追って考察を行う、といったことも可能であるが、普通の学生実験では仮説を立てたところで再実験する暇はない。その場合は「こうすればこの仮説について検証することが可能である」という、自らが立てた仮説が正しいかどうかを示すための実験方法を示せばよいのである。

ここで先程の落体の実験の例を再度引き合いに出すことにする。実験結果から「羽は鉄球よりも質量が軽かったのでゆっくり落ちたのだ」と考えたのであれば、「羽は鉄球よりも軽かったために、鉄球に比べて落下に時間がかかったのだと考えられる。このことを検証するには、同じ質量の羽根と鉄球を同時に落としたら同じ時刻に同時に地面に落下することを、実験して示せば良い。」などと記述すれば良い。

もちろん実際には羽に対する空気抵抗が関わっているために、そのような結果が得られるわけではない。そのときは、「羽は手球よりも軽かったために、鉄球に比べて落下に時間がかかった」という仮説を棄却することができる。また、もし再実験の結果から空気抵抗の存在を見抜けたのであれば、「真空中で実験したらどのような結果が得られるだろうか?」という新たな疑問が湧いてくるはずである。

www.youtube.com

www.youtube.com

 

まとめ

考察は、教授陣にとって「実験を通じて勝手に育って欲しい能力」に違いない。

しかし自分から動かなければ全く育たない能力でもあるので、学部生の間に点数稼ぐという主目的をもちつつ、統計学について色々学んで力をつけていおいたほうがいいかもしれない。

*1:俺は3行といったんだが4行あるぞ?どういうことだ?

*2:そもそも大学1年や2年のはじめの時期に、多くの観点から考察できる人は限られているといってよい。これは経験上の話になるが、私の学科のレポート採点も一部を除いて甘かった。とはいえ採点が厳しい先生は一律で厳しいので、点数が低くても落ち込むことはない。また、時折理不尽な理由で減点されることもあるが気にすることはない。ないったらない。厳しい先生の中で高い点を勝ち取り、その中でも考察の点数が高ければ、それはそれで非常に喜ばしいことである。

*3:

もちろんこんなオープンな場でイキり倒したら「ご高説垂れてるところ申し訳ないけどそれ間違ってるよ」とか「他にもやり方あるよ」とか、「もうちょっとさぁ…数学勉強しよ?」という至極真っ当な指摘が飛んで来ると思うので、そのときは恥を忍んでちゃんと精進します…

*4:読みにくい文章書いておきながら何を偉そうに言ってるんだ俺は?

*5:そういえば「それゆえ」「このため」の「それ」「これ」って指示語を伴う接続語だよなぁと思ったりしている

*6:どうでもいいことですが、私はある本を読んだところ、換言表現である「つまり」「すなわち」の使い方に関する自信を失いました

*7:この関係式は結構強力だったと記憶していて、受験範囲の都合上数3を出題できない某有名文系専門国公立大学の問題では、うまく式変形をすれば微分を使うことなく最大値最小値を求められるパターンが存在するほどである。(隙あらば自分イキり)(微分を使うと2回微分まで求めなければならず面倒だが、相加相乗平均を使うと瞬殺できたパターン)

*8:1回しか実験しなかった場合は当然そのような評価をすることはできない。時間とお金があるなら実験を何回か繰り返すのは大事だと思うの。

*9:ファイル->オプション->アドイン->分析ツール->設定->ソルバーアドイン, 分析ツールのチェックボックスにチェックを入れる->OK

*10:データ タブ-> データ分析 -> 統計学のツールがいっぱい出てくる -> ごちゃごちゃ設定すると勝手に計算してくれる

*11:もちろん見切りをつけることも大事。