とらりもんHOME  Index  Search  Changes  Login

とらりもん - 基礎数学II後半戦(4): pythonで行列計算・画像 Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

PDFにして, manabaで提出すること。以下, 特に断っていない場合は, ipython3でコマンドを打っている状況を想定する。

(1) 今回学んだ, python入門の13~15に載っているレポート課題の全てに取り組むこと。

(2) 「ライブ講義 大学1年生のための数学入門」の問282 (森林の経年変化のマルコフ過程)の(4)を, pythonを使って数値的に解き, 森林面積が年と共にどう変わるか, グラフを描けヒント: 対角化とか忘れて, ただひたすら行列の行列Aの積を繰り返す。それには行列Aは以下のように定義できる:
A=np.array([[0.8, 0.1],[0.2, 0.9]])
そして, 状態を表すベクトルは, 最初は
c=np.array([80, 20])
そして1年後は,
c=np.dot(A, c)
で求まる。これをもとに2年めを計算し, それをもとに3年めを計算し, というのを
forループを使うループで繰り返せばよい途中経過を保存するのは, 適当なリストに += で追加していけばよい(前回やったよね!)。∞のかわりに適当に大きな数を自分で決めよ

(3) 「生物資源の基礎数学教材」の問511(島の草が有限の場合の羊と狼の闘い)を, pythonを用いて解け。ヒント: [[これ|レポート課題: pythonのモジュールと関数]]の(15)

(4) 「生物資源の基礎数学教材」の問517(バネの減衰つき振動)を, pythonを用いて解け。ヒント: 前問を参考に。

(5) 以下を打って実行してみよ。結果はどうなるか? このプログラムは各行で何をしているか, 1行ずつ解読・解説し, 全体として何をしているのか考察せよ。
X0, X1, dx = -1.3, -1.1, 0.0005
Y0, Y1, dy = 0.1, 0.4, 0.0005
x, y=np.meshgrid(np.arange(X0, X1, dx), np.arange(Y1, Y0, -dy))
c=x+y*1j
z=np.zeros(c.shape)
m=np.zeros(c.shape)
for i in range(0,400):
   z=z**2+c
   m+=np.isnan(np.abs(z))
plt.imshow(m%100%21)
plt.show()

(6) 前問のプログラムを自分なりに改造して, もっとイケてる美しい図を作れ。

(7) プログラミングを学ぶ上で, 自分なりに適した勉強法は何か? 考察して述べよ(適した勉強法は人それぞれで違う。君には君に適した勉強法があるはず。それを基礎数IIなどの経験を元にみつけてほしい)。

(8) 以下のチェックリストの各項目について, ○かXかで自分自身を評価せよ。
# pythonで行列をいじるとき, リストでやるのはイケてなくて, numpy.ndarrayでやるのがイケてると理解した。
# numpy.ndarrayで行列のスカラー倍, 行列どうしの足し算をやる方法を理解した。
# numpy.ndarrayで行列どうしの積をやるとき, うっかりしてると成分どうしの積になってしまい, ちゃんとした結果にならない, ということを理解した。
# numpyで, 零行列や「成分すべてが1の行列」を作るやりかたを習得した。
# numpyで, ベクトルを折り返して行列にするやりかたを理解した。
# numpyで, 行列の転置のやり方を理解した。
# 行列を図にする方法(色の図と等値線図)を習得した。
# 2変数関数の図を書く時, np.meshgridという関数の働きを理解した。
# 図を横に2枚並べて同時に表示する方法を理解した。
# 2次元のガウス関数がどういうものか理解した。
# 複素関数は, 2つの2変数実数関数の組み合わせであることを理解した。
# c^2という複素関数は, 2つの鞍型の関数(筑波山みたいなやつ)の組み合わせだと理解した。
# 2変数関数を色の図にするとき, %2などをすることの意味と効果を理解した。
# オーバーフローとは何か理解した。