#!/usr/bin/env python # coding: utf-8 # In[1]: get_ipython().run_line_magic('matplotlib', 'inline') # # Python 速習 (その1) # # ## インストール # # Python の Anacondaディストリビューション https://store.continuum.io/cshop/anaconda をダウンロードしてインストールしてください。 # もしこれまでPythonを使ったことがない人は、Python 3 の最新版をインストールするようにしてください。まだ 2.7 という人は移行をおすすめします。 # # MacやLinuxを使っている人は pyenv を使いましょう。詳細は検索してください。 # ## 起動 # # Windows ならコマンドプロンプトやPowerShellで、MacやLinuxの人はターミナルで # # ipython # # と打ち込んでエンター(リターン)を叩いてください。こんな感じに表示されれば成功です。 # # Python 3.4.3 |Anaconda 2.1.0 (x86_64)| (default, Mar 6 2015, 12:07:41) # Type "copyright", "credits" or "license" for more information. # # IPython 3.1.0 -- An enhanced Interactive Python. # Anaconda is brought to you by Continuum Analytics. # Please check out: http://continuum.io/thanks and https://binstar.org # ? -> Introduction and overview of IPython's features. # %quickref -> Quick reference. # help -> Python's own help system. # object? -> Details about 'object', use 'object??' for extra details. # # # ## 実験 # # ためしに次のように打ち込んでください。`numpy`は数値計算のためのデータ構造や関数を定義しているライブラリです。 # # シャープ記号 # のあとに続く文字はコメントです。打ち込む必要はありません。 # In[2]: import numpy as np import matplotlib.pyplot as plt # `matplotlib.pyplot`は2次元の可視化のためのライブラリです。これらをインポートして使えるようにします。`as ...` と書いたのは、打ち込む文字数を減らすための別名を定義しています。 # In[3]: x = np.linspace(0, 2 * np.pi, 100) # In[4]: x[:10] # ベクトルの最初の10個の要素 # In[5]: x[-10:] # ベクトルの最後の10個の要素 # In[6]: y = - x * np.sin(3 * x) + np.cos(20 * x) # In[7]: y[:10] # In[8]: y[-10:] # In[9]: plt.plot(x, y) # このノートでは図をinline表示にしているのですでに描画されていますが、普通は `plt.show()` を実行します。 # In[10]: plt.show() # ## スクリプトファイルの作成 # # まず、自分がどこのディレクトリ(フォルダ)にいるかを確認するために、`pwd` コマンドを IPython のシェルに打ち込んでみてください。`%` が付いているのはIPythonのマジックコマンドと呼ばれるものです。`%` は省略できますが省略しないように習慣づける方がいいでしょう。 # In[11]: get_ipython().run_line_magic('pwd', '') # このディレクトリの中にどんなファイルがあるかを調べるには、`ls` コマンドを使います。ここでは, 同じディレクトリの中に、 `script.py` というPythonスクリプトファイルを置いています。 # In[12]: get_ipython().run_line_magic('ls', '') # `script.py` の内容は次のようにしています。 # In[13]: get_ipython().run_line_magic('cat', 'script.py') # これをIPython上で実行するには、`%run` を使います。 # In[14]: get_ipython().run_line_magic('run', 'script') # IPython上で`%run`を実行すると、コード中の変数`independent`, `dependent`, `noise` にあとからアクセスできるので非常に便利です。 # In[15]: noise[:10] # テキストエディタでスクリプトを書いて、IPythonで実行し、うまく行かなければIPython上でデータの中身を確認しながら修正していく、というのがPythonプログラミングの典型的な作業になります。 # ## 瞬時効用関数の可視化 # 経済のファンダメンタルな要件を # \begin{align} # f(k) = A k^\alpha\\ # U(c) = 1 - e^{-c} # \end{align} # として、1部門モデルの既約型効用関数 # \begin{align} # u(x, y) = U(f(x) - y) # \end{align} # をPythonで表現してみます。 # In[16]: A = 1.3 # In[17]: α = 0.3 # In[18]: def f(k): return A * k ** α # In[19]: def U(c): return 1 - np.exp(-c) # In[20]: def u(x, y): return U(f(x) - y) # $u$ は2変数関数なので可視化のための馴染みのある方法は無差別曲線(等高線)を引くことでしょう。Pythonでは次のようにやります。 # In[21]: x = np.linspace(0.0, 10.0, 100) # In[22]: y = np.linspace(0.0, f(10.0), 100) # In[23]: X, Y = np.meshgrid(x, y) # In[24]: c = plt.contour(X, Y, u(X, Y), levels=np.linspace(0, u(10,0), 10), colors='k') plt.clabel(c, inline=1, fontsize=10) plt.show()