AstroBlog

宇宙系大学院生の戯言

MacでHigh Sierraにアップデートしたらfatal error: stdio.h: No such file or directory #include <stdio.h>と出たときの解決法

Mac OSの最新アップデート”macOS High Sierra”が出ました。早速アップデートしたのですが、アップデート前の30分前までは行えていたC言語のコンパイルgccができなくなっていました。

こんなエラーが出ていました。

fatal error: stdio.h: No such file or directory #include <stdio.h>

少しググると、すぐに解決策は見つかりました。

 

ターミナルを開いて、

xcode-select --install

と打ち、Enterを押しましょう。

あるいは、App Storeから検索欄でXcodeを検索して、XcodeをインストールするのでもOKなはずです。

 

しかし、なぜHigh Sierraにアップデートしたらgccでコンパイルできなくなっていたのでしょうか。謎です。

大学院に入学して半年経ったので思うところを適当に書いてみる

大学院の修士課程に入学して半年が経ちました。
しばらくブログを更新していなかったので、この半年で思ったことや学んだことを書いていきます。

同期と過ごす時間は楽しい

同期にはいろんな人がいます。大学からそのままの内部生が4割程度、残りは他大学から来ていて、留学生も9月入学の人も合わせると数人います。

僕は一度就職しているためほとんどの同期より年齢が少し上になってしまっているのですが、やはり同期と話すのは楽しいです。

とはいえ、授業で会うのがほとんどです。修士2年からは授業も取り終わり、土日祝日を除いたほぼ毎日(たまに休みの日も来る人はいますが、たいていの人は長くは続かないようです)を研究室で過ごすことになります。

ゼミがまあまあきつい(研究室による)

僕の研究室はM1の間はGalactic Dynamicsという非常に有名な本を勉強するためのゼミがあります。これは全て英語で書かれていて、内容も難しいものになっています。

大学院生のゼミというと、普通?は数人で論文を順番に読んでいくような形になると思うのですが、僕の研究室の場合には毎週僕が準備をして、発表というか読んで理解した内容の説明をします。

僕の研究室のメンバーの方はこの本の内容をよく理解している人が多いので、頻繁に突っ込まれます。そして無事死亡します。

と、ネガティブなことを書いていますが、このゼミはかなり勉強になります。このようなゼミが無ければ、絶対にここまで理解して読めないだろうな。。と思うくらい細かく理解できます。

修論のテーマに悩み中

今ちょうど修論テーマをどうするか悩んでいるところです。僕の研究室の院生としては早い方のようなのですが、なるべく早く(ただしよく考えて)決めて早く研究をしたいと考えているため、PDの方に相談したりしながら決めようとしているところです。

やはりコミュニケーション能力は大事

僕自身ではわかりませんが、先輩からはコミュ力や社会性があると言われました。僕は昔コミュ力が無かったのですが、それを自覚してコミュ力を上げるためにいろいろ頑張って来ました。そのおかげか、就活でも面接は得意だったので少しだけ自信があります。

また、PDの方には一応社会人経験があるから(?)しっかりしていると言われます(よくイジられますが)。

まだぺーぺーなので論じるのもおこがましいですが、やはりコミュ力があると、研究者として生きていくにも有利に働くだろうなと思います。月並みな話ですがとても大事なことだと感じています。

具体的にどうコミュ力が活きてくるかというと、研究に関して積極的に質問する(自分でもよく考えないとダメ。何でも教えてマンになってはいけない)とか、将来共同研究するかもしれない人と関係を保てるとか、何かプラスの情報をいろんな人から聞けるとか、研究室のメンバーと良い雰囲気で接することができるとか、就活をしなくてもいろいろな面で影響があると考えられます。当たり前の話ですみません。

論文を読むのは難しい

M1にとって論文を読むのは結構難しいです。最初は全然よく分からないです。全部英語ですし(文系では逆に日本語の場合が多いかもしれません)。何本か読んでいくと、だんだん読み方に慣れて読めるようになってきます。そううい僕もまだ読むのは下手ですが。

論文を読むというのは研究する上で必須なことなので、読めるようになるべきです。最初はキツイですが、頑張って読んでいくうちに読むのが上手くなっていくはずです。

論文を探すのも難しい

自分が興味のある内容の論文を探すのも難しいと思います。ただ、これは数をこなしていくとどうやって読むべき論文を探せばいいのかが分かってきます。

今回はこんな感じです。もっと書かなきゃ。。

Rでのt検定(片側検定、両側検定)のやり方

今回は自分のためのメモ的な投稿です。

たとえば、
x = -1.22, -1.17, 0.93, -0.58, -1.14
y = 1.03 , -1.59, -0.41, 0.71, 2.10
という2つのデータがあったとします。まずはデータセットをします。

> x <- c(-1.22, -1.17, 0.93, -0.58, -1.14)
> y <- c(1.03 , -1.59, -0.41, 0.71, 2.10)

この2つの標本についてt検定を行うと、

片側検定は

> t.test(x, y, var.equal = FALSE)

    Welch Two Sample t-test

# data:  x and y
# t = -1.3339, df = 6.8431, p-value = 0.2249
# alternative hypothesis: true difference in means is not equal to 0
# 95 percent confidence interval:
#  -2.79205  0.78405
# sample estimates:
# mean of x mean of y 
#   -0.636     0.368 

となり、続いて両側検定は

> t.test(x, y, var.equal = FALSE, alternative="less")

    Welch Two Sample t-test

# data:  x and y
# t = -1.3339, df = 6.8431, p-value = 0.1125
# alternative hypothesis: true difference in means is less than 0
# 95 percent confidence interval:
#       -Inf 0.4268973
# sample estimates:
# mean of x mean of y 
#    -0.636     0.368 

となります。

大学院生の就職について

Googleでみんなどんな検索キーワードを使っているんだろうと調べたら、
大学院 就職
と一番上に出たので、大学院生の就職について少し書きたいと思います。

一つ先に謝っておくと、僕は大学院生の状態から就職をするという経験をしたことはありません。 ただ、一応就活をして就職するという経験はあるので、それを通じて多少の情報は持っているつもりです。

僕のした経験は、

  • 大学生のときの研究室の先輩(大学院生、主に修士)就職状況を見てきた。
  • 就活したときに大学院生もたくさんいて、その人たちの就職先を知っている。
  • 社会人として仕事をする中で、大学院卒の人をたくさん見てきた。

という感じです。社会人経験が無い人よりは知っているのではないかなと思います。

文系大学院生の就職事情

前置きはこれくらいにして、ごく簡単に言えば、大学院生の就職事情はかなりポジティブだと思います。

文系の大学院卒は就職は厳しいという話はたまに聞いたりしますが、僕の周りの文系大学院生はかなりの割合でいわゆる一流企業から内定をもらっています。

ただ、やはり文系は学部卒の方が有利です。専門性が活かせる業界に就活をするなら全く話は別(法学部の大学院卒の人が法律事務所に就職する、など)です。

理系大学院生の就職事情

理系の場合は話は異なり、修士課程卒が一番就職が強い感じはあります。

なので、理系はもし行けるなら修士に行った方が就職にとってはいいのではないかと思います。

博士卒の就職事情

博士課程卒はどうなのか、という話ですが、博士卒は日本においてはまだ就職しづらい空気がありまうす。

それでも理系に関しては一流企業に就職している先輩もたくさんいますので、悲観的になる必要は決してないと思います。 自分の気が済むまで研究をしてから就職をしたいという場合、博士課程まで行ってから就職活動をするという選択肢も最近は大いにあるようです。

これに対して文系は、博士卒の就職状況は僕は全く知らないため、すみませんがここで書くことはできません。 しかし一つ言えるのは、文系は博士号を取るのが非常に大変で、5年、6年もかかるのがデフォルトという研究室もあるようなので、絶対に研究者になりたい、という気持ちがあるのでなければ、博士課程に進むのはやめておいたほうがいいような気がします。研究者にならないつもりの場合、20代の貴重な数年を使う上、就職事情は悪くなってしまうという、デメリットが非常に目立つ状況になってしまうからです。

以上、こんな感じで終わります。

PythonのSymPyでの3次方程式の解き方

ちょっと3次方程式を解く必要に迫られて、しかしこれを自分で解くのは非常にめんどくさいなと。 未知数の次数について整理するのすらめんどくさい。 そこで少し調べていたら、PythonのSymPyというモジュールを使えば、方程式を簡単に解くことができるということを知りました。

今回は、SymPyで方程式を解くときのコード例を紹介します。

まず、解きたい方程式はこちらです。 $$\frac{nt}{\left(mt + nt\sigma^{2}\frac{A}{p}\right)^{½}} = 10$$ これをtについて解きたいという状況です。
t以外の文字は本当は具体的な値があるのですが、今回は適当な定数として扱います。

さて、肝心のSymPyでの書き方ですが、これにはどうやら2つのタイプがあって、1つは

from sympy import *

# t以外の文字の値はここでは適当な値とする

def main():
    var("t")      # tを未知数とする
    n = 10
    m = 20
    sigma = 30
    A = 40
    p = 50
    eq = Eq(n*t/(m*t + n*t + sigma*A/p)**(1/2) - 10)    # 方程式を書く
    ans = solve(eq)      # 方程式の解を計算
    print(ans)      # 表示

if __name__ == '__main__':
    main()

というやり方です。
この場合結果はこうなります。

[30.7797338380595]

関数には別にしなくても良さそうですが、なんとなくここでは関数を作りました。

もう1つの書き方は、

import sympy

# t以外の文字の値はここでは適当な値とする
n = 10
m = 20
sigma = 30
A = 40
p = 50

t = sympy.Symbol('t')     # ここでtを未知数と定義
exp = n*t/(m*t + n*t + sigma*A/p)**(1/2) - 10     # 方程式を定義
print(sympy.solve(exp))    # 表示

という書き方です。 importのところが少し違いますね。 この場合は結果はこうなります。

[30.7797338380595]

当然ですが、上のやり方と同じ結果になりますね。

今回はこんな感じです。SymPyは微分方程式でも使えるようなので、少しずつ習得していきたいです(あまり使わないかも)。