*SJE2015 ex01 [#sf604516] *SJE2015 ex02 [#sf604516] **課題A [#neb0cc01] はじめての Python + NumPy ***課題A-1 [#a6b432ee] NumPy とは何か,ウェブで検索するなどして調べなさい. ***課題A-2 [#v39c8d44] 次のプログラムを実行して,何が起こっているか考えなさい.わかったことを高橋に説明しなさい. #pre{{ import numpy as np A = np.array( [ [ 1, 2, 3 ], [ 4, 5, 6 ] ] ) print A print A.shape, A.dtype print B = np.array( [ [ 1, 2, np.pi ], [ 4, 5, 6 ] ] ) print B print B.shape, B.dtype print A[0,1] = np.exp(1) B[0,1] = np.exp(1) print A print B print C = A + B print C, C.shape, C.dtype print vec = np.arange( 1, 21 ) print vec, vec.shape, vec.dtype print mat = np.reshape( vec, ( 4, 5 ) ) print mat, mat.shape print print mat.T, mat.T.shape print mat[1, 1] *= 111 print mat print vec print X = mat[:2,2:4] print X print Y = X - 2 print Y Z = X * Y print Z Z = np.dot( X, Y ) print Z }} ***課題A-3 [#t0ff376f] np.ones, np.zeros について調べなさい.また,ipython で In [1]: help(np.ones) としてヘルプを出し(終了は less と同じでアルファベットのq),それを読んで,「整数の」1がならんだ2行3列の行列を作る方法を考えなさい. **課題B [#x144efbc] NumPy と自分の頭を対決させてみよう. [[Vision/2015/report1]]の問2をやりなさい.1.は手計算で,2.は NumPy で. 固有値固有ベクトルの計算は,np.linalg.eig を使えばよい. 使い方などは調べてみよう. **課題C [#cfbf0c73] 行列の積の計算でC言語と対決させてみよう. ***C言語のプログラム [#o973518a] こちらから入手しましょう https://gist.github.com/takatakamanbou/2713ba9a783d95d248f7 コンパイルの仕方 $ cc matrix.c -o matrix または $ cc -O3 matrix.c -o matrix 後者の最初のオプションはアルファベット大文字のオー.これは最適化オプションというもので,つけるとよりCPUを効率よく使う機械語プログラムを生成するようになります. 実行の仕方 $ time ./matrix 1000 行列の大きさを適当にかえて実行し,結果をテキストファイルに記録しておこう. 後日グラフを描いてみるのに使います. ***Python + NumPy のプログラム [#na9662df] こちらから入手しましょう https://gist.github.com/takatakamanbou/14391b6e42632215c7da 実行の仕方 $ time python matrix.py 1000 または ipython 上で In [1]: %time %run matrix.py 1000 C言語の場合と同様に,いろいろ実験して結果をテキストファイルに残しておこう.