#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 が必要である。

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