*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言語の場合と同様に,いろいろ実験して結果をテキストファイルに残しておこう.

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS