環境設定
(the page is encoded in UTF-8)
ホーム
ページの最後にアンケートがあるので,
この時間終了までに答えてください.
Python (Jupyter Notebook環境)を使ってみる
このゼミではプログラミング言語Pythonを使う.
そして,Pythonを使う環境としてJupyter notebookという環境を使う.
これは,ブラウザ経由で入力が出来る,
班のメンバー間やTA/教員と作業結果を容易に共有できる,
メモや説明とプログラムをきれいに整形して結果を残すことができる,
など色々な利点がある.
起動
画面左のランチャの中から「端末」
(

アイコン)を開き,
コマンドプロンプトに
jupyter notebookと入力
$ jupyter notebook
...
するとブラウザが勝手に立上がり以下のような画面が現れる.
画面右上の, New -> Python 3 (またはvpython. どちらでもいいとおもう...)を選ぶと ...
Python が起動して以下のようなページが現れる.
基本操作:
In [ ]: と表示された横の箱(セルと呼ぶ)
にPythonプログラムの断片を記入し,
Shift + Enter -> その断片を実行.
- 1+1, 1+2*3, 3**100 など, 色々な式を打ち込んで,結果を見てみよ.
Visual Pythonを使って見る
球を表示してみる
セルに以下を入力する (
ウソ!
from vpython import * としてください)
2つ目を入力した際に以下が表示されれば成功.
なおここで球が表示されている窓を閉じる(

ボタンを押す)と,以下のように
"The kernel appears to have died. It will restart automatically."
などというメッセージが表示される.今は気にせずに OK で先へ進む.
Visual Python情報源
作業の保存
ctrl-s (Ctrlキーを押しながら's')
を押すか,画面上部ツールバーの,
保存ボタン
を押す.このようにすると,入力したもの全てが
「ノートブック」という
形式のファイル (名前は
「なんとか.ipynb」) (
ipython
note
book) として保存される.
保存しておけば次回続きができるし,
こまめに保存すれば運悪くブラウザがクラッシュしても,
続きが実行できる.なお,保存をしなくてもある頻度で自動的に保存されるが,
それに頼らず,
こまめに作業を保存すべし!
ノートブックに名前をつける
放っておくと,ノートブックには,
Untitled.ipynb
とか
Untitled2.ipynbなどのかっこわるい名前がつく.
やっているテーマに応じた名前をつけるようにする.
ノートブックの名前を指定するには,画面上部にファイル名が表示されている
領域
のファイル名の所(上記の Untitled)をクリックして名前を入力する.
なお,ファイル名の右に ... (unsaved changes) とある場合は,
未保存の作業があるということなので,これを見たらこまめに保存すること.
Matplotlibを使って見る
プログラムの準備
Matplotlibはデータの可視化(グラフ化)を得意とする.
Matplotlib情報源
- Matplotlibの
ドキュメント
-
ギャラリー
は,matplotlibの基本を学んだあと,
どんなグラフを書くにはどうすればいいのかを見つけるための最高の情報源.
numpyを使って見る
numpyは数値計算全般を得意とする.
最もわかりやすいご利益は以下のように,
行列やベクトルの演算が簡単に行えること.
- 以下のプログラムをセルに入力(コピペ)してShift + Enter.
import numpy as np
A = np.matrix([[1,2],[3,4]])
x = np.matrix([[5],[6]])
y = A * x
# Ax = y を解く
np.linalg.solve(A, y)
-
以下のように表示されれば成功
[[ 5.]
[ 6.]]
scipyを使って見る
scipyも数値計算全般を得意とし,
numpyよりも機能が拡張されている.
例えば以下は関数の最小を求める(最適化)
機能を用いて, 円に内接する三角形の面積の最大値
(正確にはそれを
Sとして-2
Sの最小値)を求めている.
- 以下をセルに入力(コピペ)してShift + Enter.
import scipy.optimize
from math import pi,sin
def f(x):
return - sin(x[0]) - sin(x[1]) - sin(2.0 * pi - x[0] - x[1])
print(scipy.optimize.minimize(f, (0.5, 0.5)))
- 以下のような結果が表示されれば成功.
status: 0
success: True
njev: 7
nfev: 28
hess_inv: array([[ 0.69217057, -0.30782943],
[-0.30782943, 0.69217057]])
fun: -2.598076211353253
x: array([ 2.09439526, 2.09439526])
message: 'Optimization terminated successfully.'
jac: array([ 4.17232513e-07, 4.17232513e-07])
アンケート
初回終了までに以下のアンケートに答えてください.
また UTask-Webから「振り返りシート」の記入も,
授業最後もしくは直後に記入してください.
共同作業の方法
このゼミでは2-3人一組のチームを作り,
相談しながらやってもらう.単に分担するのではなく,
実際に一つのコードを見ながら相談したり,
コーディングをやめて解き方を議論したりして欲しい.
ここでは一つのコードを見ながら共同作業をしやすくするツールを紹介する.
使用は強制ではない.
もし物理的に一つの画面を覗きこんだほうが良いと思えばそれでもよいが,
実際にはなかなかやりにくいものである.それぞれのPC画面で,
一つの作業を共有できるようにする仕組みを紹介する.
前提
- 共同作業する人は全員, wpa.cという無線LANに接続していることを確認.
- どの人のノートブックを対象に作業するのかを決める
(その人を「マスター」と呼ぶことにする).
- マスターのPC画面に表示されている,
IP address (10.xx.xx.xx のような数字)を,
他のメンバーに教える
方法1: ノートブックを共有する
- マスター以外の人が,ブラウザのアドレスバーに
http://マスターのIPアドレス:8888/
と入力する.
- パスワードを聞かれたら授業で教えられたものを入力.
うまく行くと,マスターの人が作業しているノートブックを,
直接見られる状態になる.
- 注意: ある人が入力した一字一句が刻々と他の人に反映されるわけではない.
誰かが作業をしたら保存(ctrl-s)し,
他の人は再読み込み(F5)することで,作業が反映される.
- うっかり同時に二人の人が作業をしないように.一時に作業をするのは一人
と決め,残りの人は見て,口を出すモードにする.
- これが守られていれば作業をするのは誰でも良い
(マスターしか作業していけないわけではない)
方法2: 作業中の画面を共有する
- マスターはUbuntuメニューから,「デスクトップの共有」を選んで,
「他のユーザが自分のデスクトップを表示できる」
「他のユーザがデスクトップを操作できる」をチェックする
- 「セキュリティ」を適宜設定する(パスワードを設定してメンバーに教える)
- 他のメンバーは左のランチャ(なければUbuntuメニュー)から,
「Reminnaリモートデスクトップクライアント」を起動し,
- プロトコル: VNC - 仮想ネットワークコンピューティング
- サーバー: マスターのIP address
- ユーザ名,パスワード: 空
- 色数,品質: 適宜.色数は増やしたほうが良い,品質は高いほうが良いが,
ネットワークの性能との兼ね合い
で「接続」.パスワードを聞かれたら,マスターから教わったパスワードを入力
- うまくするとマスターの画面がまるごと表示される.
時々刻々の作業をすべて共有できる.
ただし,ネットワークの帯域を消費するので,
常時安定して動くかは未知数.