#author("2023-06-23T09:47:02+09:00","external:moriat","moriat") #author("2023-06-23T09:47:33+09:00","external:moriat","moriat") #topicpath ** シミュレーション-4 Python の注意点 [#d563f52c] *** 学生が作ったプログラム [#p560f965] - はじめに~ Python のリストは、リストにすることができる。別の表現では、「リストのリスト」が作れる、と言える。~ ~ - 実例~ これを利用して、単振動の数値計算プログラムを次のように学生が書いた。~ これは、変数をうまく活用していると思われた。 #code(python){{ def LeapFrog(x) : xn = x[0] vn = x[1] dt = 0.01 k = 3 xnn = xn + vn * dt vnn = vn - k * dt * xnn return [xnn, vnn] x0 = [2,3] x = [x0] for i in range( 79 ): x0 = LeapFrog( x0 ) x += [x0] print(x) }} - リストのリストについて~ &ref(IMG_3151.jpg,,30%); *** リストのリストの値の参照[#lcd73b29] - 失敗例~ グラフを描く際、x(変位) だけ、あるいは、v(速度) だけ取り出したい。ところが、次の方法はことごとく駄目である。 #code(python){{ x[:][0] x[][0] x[,0] }} - 正しい表記~ #code(python){{ [xin[0] for xin in x ] }} - 正しい表記によるグラフの作成~ [[Google Colaboratory>https://colab.research.google.com/drive/19HvQ-IDK4Gsg-jo_wurjTdVp5Q2jHRq1#scrollTo=SyOkqykajp1P]] *** Python の注意点 [#if6b051c] - これまで現れた衝撃的な言語仕様 -- リストの足し算~ リストの足し算は、連結になる。~ ~ -- リストの変数の代入~ リストの変数を他の変数に代入すると、実体は一つで、名前が複数になる。~ ~ -- リストのリストの参照~ コンパクトな表現が無い。~ ~ - 総括~ 数値計算向きとは言えない使用である。 数値計算向きとは言えない仕様である。 numpy が必要である。