top

質問や振り返りに対する回答

授業中に受けた質問や, 振り返りシートに書かれた質問・コメント などで,こちらからの回答やコメントを共有するのが有益と思われた ものをここに書きます.振り返りシートに対する回答は150文字以内に 限定されているというのもここに書く理由です.

C++をいきなり学ぶのはキツイでしょうか?

という趣旨の質問を振り返りシートで受けました. 主観も交じるかもしれませんがお答えします(田浦).

初学者用におすすめの言語は?

初心者向けの言語という意味では,以下の3つの点が重要だと思います. それらをよく満たすという意味で, なかなかPythonに並ぶものはありません. Pythonを90点として, いくつか70点くらいはあげられる言語を あえてあげるとすると,

端末でpythonと実行するのとEmacsのバッファでC-c C-z してC-c C-cで実行するのとで違いはあるか?

プログラミングができるようになるためのコツはありますか?

深淵かつ難しい問いです.これがコツ,という万人 に当てはまる答えはきっとないのでしょう.スポー ツと同じで,どこでひっかかるか,何をマスターし た瞬間に,悟りを開くかが人によって異なるのだと 思います.ちなみに自分(田浦)も1年生でプログラ ミングをやった時は何のことかよくわかりませんで した.いつの間にできる(ような気がする)ようになっ たのか,その瞬間は覚えていませんが,授業でその 当時習っていた言語(当時はアニメーションやグラ フィクスなどはおろか,メニューの出るプログラム を書くのも大変でした)で本格的・実用的なプログ ラムが書けるということを知ったとき,モチベーショ ンが湧いてきて,それ以降はなぜか,今までどうで も良かった課題も意欲を持って取り組めるようにな りました.あと,当時は家にWindowsが動くPCがあ る人が珍しかったので,家でも課題ができるように 頑張って環境を整えるとやる気が出るとか,案外そ んなものかもしれません.
以下は,参考になるかわかりませんが, こうすると良いのではないかという学び方です.

7-3の解説

時間がなくてやらなかった7-3 (バネに吊るされた質点のシミュレーション)を解説します. 他と比べて極端に難しいわけではないですが, 他の人の解答を見るのはためになるということで, それに1つ追加というつもりです.中々慣れないという人のために, 思考過程を示します.

問題は以下でした.

バネで吊るされた質点に,時間と共に変わる外力 f(t) を与えたときの運動を Visual Python を用いて アニメーションせよ(t は時刻, f(t) は垂直方向のベクトル). バネ定数k, 質点の質量が m で,初期状態は自然長の位置に停止しているとする.

外力0の場合

外力f(t) = sin wtの場合

外力が0でない場合も大した困難はありません.fはPythonの関数として与えられ, tを入れると3次元のベクタを返してくれるとします.もちろんy軸方向のみの 力と仮定します.更新式をほんの少しいじれればよいだけです. fはtを必要とするのでtを明示的にトラックするコードも入れてやります.
def spring(k, m, f):
    s = sphere(pos=vector(0,0,0), vel=vector(0,0,0))
    h = helix(pos=vector(0,30,0))
    h.axis = s.pos - h.pos
    g = vector(0, 9.8, 0)
    T = 50.0 # 目標時刻
    n_steps = 1000
    dt = T / n_steps
    t = 0
    for i in range(n_steps): 
        rate(1.0 / dt)
        s.alpha = -k * s.pos / m + f(t) / m - g
        s.pos = s.pos + s.vel * dt
        s.vel = s.vel + s.alpha * dt
        h.axis = s.pos - h.pos
        t = t + dt

6/24からの進め方

「matpliblibで」アニメーションがしたい

matplotlibの説明を軽くしましたが, もしかするとmatplotlibで表示するグラフを時々刻々変えたい (例えば温度の分布,波動関数,流速などがどう時間発展するかを 表示したい)ということがあるかもしれません. 説明を書いている時間がないので,とりあえずここに, サンプルプログラム (1次元, 2次元, 色) を書きました. これを見ればできるかもしれませんが, やりたい人は聞いて下さい.