SJS/2016/ex03
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
*SJS2016 ex03 [#f69bd8f1]
課題いっぱいありますが,1回で全部終わらせようという意図で...
自分で進められるひとはどんどん先へ進めたらよいですが.
#contents
**前回分と今回分 [#kbc5dcd1]
- できたひとは,課題ごとに高橋に報告してください.それぞ...
- 前回分を全て報告してokをもらってから,今回分にすすみま...
**課題A [#w83b99ab]
Python で関数
***課題A-1 [#w2aaa57d]
- 以下のプログラムを実行し,何が起こっているのか理解しな...
#pre{{
def func1(x):
x = 3
print(x)
def func2(x):
return x + 1
def func3(x):
x[0] = 'hoge'
x.append('fuga')
print(x)
if __name__ == '__main__':
y = [ 1, 'a', [ 10, 20, 30 ], -1 ]
z = 999
func1(y)
print('y = ', y)
func1(z)
print('z = ', z)
#yy = func2(y) # ERROR!
#print('yy = ', yy)
zz = func2(z)
print('zz = ', zz)
func3(y)
print('y = ', y)
#func3(z) # ERROR!
#print('z = ', z)
}}
***課題A-2 [#cab595df]
上記に次の関数定義を追加しよう.
#pre{{
def func4(x, a = 999, msg = 'hogege'):
print(msg, x + a)
}}
そして,次のように呼び出してみよう.
#pre{{
func4(1)
func4(1, a = 0)
func4(2, msg = 'nyanya')
func4(3, msg = 'nyanya', a = -2)
#func4(a = 999, 4) #ERROR!
}}
ここで登場しているのは,「キーワード引数」というものであ...
**課題B [#q4781790]
モジュールと import
***課題B-1 [#kdcf8ccd]
課題Aのプログラムを hoge.py という名前で保存していたとす...
#pre{{
import hoge
def func1():
print('Hoge?')
if __name__ == '__main__':
func1()
hoge.func1(999)
hoge.func3( [ 1, 'a', [ 10, 20, 30 ], -1 ] )
}}
***課題B-2 [#t153f07d]
hoge.py の最初の方に1行追加して
#pre{{
hogefuga = { 1:'Hoge', 2:'Fuga', 3:'Hena' }
def func1(x):
:
}}
のようにすると,「モジュール名.変数名」という形でこの変数...
#pre{{
for i in range(1, 4):
print(i, hoge.hogefuga[i])
}}
ただし,ipython 上で %run fuga.py のように実行している場...
#pre{{
In [20]: reload(hoge)
Out[20]: <module 'hoge' from 'hoge.py'>
In [21]: %run fuga.py
}}
***課題B-3 [#fa0e0753]
fuga.py 中の import 文を
import hoge as nya
と書き換えたら,main の方はどう修正したらよいだろう?
**課題C [#r2dad673]
NumPy 入門
#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()
print(B**2)
print(np.log(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)
}}
**課題D [#vcf9bde7]
[[PIP/2016]] 第12回講義資料の Q1 を NumPy を利用して解い...
***課題D-1 [#v3f2880f]
まずは手計算を併用して解いてみよう.式(11)を
&mathjax{ A\mathbf{x} = \mathbf{b} }; という形で表すこと...
+ 2 x 2 行列 &mathjax{ A }; と 2 x 1 行列(2次元ベクトル...
+ NumPy で,&mathjax{ A }; と &mathjax{ \mathbf{b} }; を...
+ 実際に解 &mathjax{ \mathbf{x} }; すなわちパラメータ a, ...
***課題D-2 [#m971fc4d]
以下が何をやっているか理解し,これに連立方程式を解く部分...
#pre{{
import numpy as np
xorg = np.array( [ 4.0, 5.0, 6.0, 9.0 ] )
yorg = np.array( [ 30.0, 31.0, 29.0, 28.0 ] )
xvec = xorg - xorg[0]
yvec = yprg - yorg[0]
X = np.vstack( ( xvec, np.ones_like(xvec) ) )
print(X, X.shape)
Y = yvec
print(Y, Y.shape)
A = np.dot( X, X.T )
print(A)
b = np.dot( X, Y )
print(b)
}}
終了行:
*SJS2016 ex03 [#f69bd8f1]
課題いっぱいありますが,1回で全部終わらせようという意図で...
自分で進められるひとはどんどん先へ進めたらよいですが.
#contents
**前回分と今回分 [#kbc5dcd1]
- できたひとは,課題ごとに高橋に報告してください.それぞ...
- 前回分を全て報告してokをもらってから,今回分にすすみま...
**課題A [#w83b99ab]
Python で関数
***課題A-1 [#w2aaa57d]
- 以下のプログラムを実行し,何が起こっているのか理解しな...
#pre{{
def func1(x):
x = 3
print(x)
def func2(x):
return x + 1
def func3(x):
x[0] = 'hoge'
x.append('fuga')
print(x)
if __name__ == '__main__':
y = [ 1, 'a', [ 10, 20, 30 ], -1 ]
z = 999
func1(y)
print('y = ', y)
func1(z)
print('z = ', z)
#yy = func2(y) # ERROR!
#print('yy = ', yy)
zz = func2(z)
print('zz = ', zz)
func3(y)
print('y = ', y)
#func3(z) # ERROR!
#print('z = ', z)
}}
***課題A-2 [#cab595df]
上記に次の関数定義を追加しよう.
#pre{{
def func4(x, a = 999, msg = 'hogege'):
print(msg, x + a)
}}
そして,次のように呼び出してみよう.
#pre{{
func4(1)
func4(1, a = 0)
func4(2, msg = 'nyanya')
func4(3, msg = 'nyanya', a = -2)
#func4(a = 999, 4) #ERROR!
}}
ここで登場しているのは,「キーワード引数」というものであ...
**課題B [#q4781790]
モジュールと import
***課題B-1 [#kdcf8ccd]
課題Aのプログラムを hoge.py という名前で保存していたとす...
#pre{{
import hoge
def func1():
print('Hoge?')
if __name__ == '__main__':
func1()
hoge.func1(999)
hoge.func3( [ 1, 'a', [ 10, 20, 30 ], -1 ] )
}}
***課題B-2 [#t153f07d]
hoge.py の最初の方に1行追加して
#pre{{
hogefuga = { 1:'Hoge', 2:'Fuga', 3:'Hena' }
def func1(x):
:
}}
のようにすると,「モジュール名.変数名」という形でこの変数...
#pre{{
for i in range(1, 4):
print(i, hoge.hogefuga[i])
}}
ただし,ipython 上で %run fuga.py のように実行している場...
#pre{{
In [20]: reload(hoge)
Out[20]: <module 'hoge' from 'hoge.py'>
In [21]: %run fuga.py
}}
***課題B-3 [#fa0e0753]
fuga.py 中の import 文を
import hoge as nya
と書き換えたら,main の方はどう修正したらよいだろう?
**課題C [#r2dad673]
NumPy 入門
#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()
print(B**2)
print(np.log(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)
}}
**課題D [#vcf9bde7]
[[PIP/2016]] 第12回講義資料の Q1 を NumPy を利用して解い...
***課題D-1 [#v3f2880f]
まずは手計算を併用して解いてみよう.式(11)を
&mathjax{ A\mathbf{x} = \mathbf{b} }; という形で表すこと...
+ 2 x 2 行列 &mathjax{ A }; と 2 x 1 行列(2次元ベクトル...
+ NumPy で,&mathjax{ A }; と &mathjax{ \mathbf{b} }; を...
+ 実際に解 &mathjax{ \mathbf{x} }; すなわちパラメータ a, ...
***課題D-2 [#m971fc4d]
以下が何をやっているか理解し,これに連立方程式を解く部分...
#pre{{
import numpy as np
xorg = np.array( [ 4.0, 5.0, 6.0, 9.0 ] )
yorg = np.array( [ 30.0, 31.0, 29.0, 28.0 ] )
xvec = xorg - xorg[0]
yvec = yprg - yorg[0]
X = np.vstack( ( xvec, np.ones_like(xvec) ) )
print(X, X.shape)
Y = yvec
print(Y, Y.shape)
A = np.dot( X, X.T )
print(A)
b = np.dot( X, Y )
print(b)
}}
ページ名: