SJE2015 ex02

課題A

はじめての Python + NumPy

課題A-1

NumPy とは何か,ウェブで検索するなどして調べなさい.

課題A-2

次のプログラムを実行して,何が起こっているか考えなさい.わかったことを高橋に説明しなさい.

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

np.ones, np.zeros について調べなさい.また,ipython で

In [1]: help(np.ones)

としてヘルプを出し(終了は less と同じでアルファベットのq),それを読んで,「整数の」1がならんだ2行3列の行列を作る方法を考えなさい.

課題B

NumPy と自分の頭を対決させてみよう.

Vision/2015/report1の問2をやりなさい.1.は手計算で,2.は NumPy で. 固有値固有ベクトルの計算は,np.linalg.eig を使えばよい. 使い方などは調べてみよう.

課題C

行列の積の計算でC言語と対決させてみよう.

C言語のプログラム

こちらから入手しましょう https://gist.github.com/takatakamanbou/2713ba9a783d95d248f7

コンパイルの仕方

$ cc matrix.c -o matrix

または

$ cc -O3 matrix.c -o matrix

後者の最初のオプションはアルファベット大文字のオー.これは最適化オプションというもので,つけるとよりCPUを効率よく使う機械語プログラムを生成するようになります.

実行の仕方

$ time ./matrix 1000

行列の大きさを適当にかえて実行し,結果をテキストファイルに記録しておこう. 後日グラフを描いてみるのに使います.

Python + NumPy のプログラム

こちらから入手しましょう https://gist.github.com/takatakamanbou/14391b6e42632215c7da

実行の仕方

$ time python matrix.py 1000

または ipython 上で

In [1]: %time %run matrix.py 1000

C言語の場合と同様に,いろいろ実験して結果をテキストファイルに残しておこう.


トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-10-12 (月) 14:20:07