前回の質問から少し延長です。
以下のコードから、実際に手計算で行った結果と一致しません。
python
1import numpy as np 2import matplotlib as plt 3 4#初期設定 5P = np.array([[1,0],[0,0]]) 6Q = np.array([[0,0],[0,1]]) 7x_list=[] 8t_list=[] 9for x in range(0,5): 10 if x==2: 11 x=np.array([[1,0]]) 12 else: 13 x=np.array([[0,0]]) 14 x_list.append(x) 15 #print(x,end='') 16 17for t in range(0,5): 18 if t ==0: #初期設定 19 continue 20 print(x_list) 21 for x in range(0,5): 22 if x == 0: 23 x_list[0] = (np.dot(P, x_list[1].T)).T 24 if x == 4: 25 x_list[4] = (np.dot(Q, x_list[3].T)).T 26 else: 27 x_list[x] = (np.dot(P, x_list[x+1].T) + np.dot(Q, x_list[x-1].T)).T 28 print(t,x_list)
上記のコードの内の2番目のfor文内の実際のlist内の計算なのですが、
実行結果が、
1 [array([[0, 0]]), array([[0, 0]]), array([[1, 0]]), array([[0, 0]]), array([[0, 0]])] 2 [array([[0, 0]]), array([[0, 0]]), array([[1, 0]]), array([[0, 0]]), array([[0, 0]])] 3 [array([[0, 0]]), array([[0, 0]]), array([[1, 0]]), array([[0, 0]]), array([[0, 0]])] 4 [array([[0, 0]]), array([[0, 0]]), array([[1, 0]]), array([[0, 0]]), array([[0, 0]])]
とでてしまい、
私が欲している結果
0 [array([[0, 0]]), array([[0, 0]]), array([[1, 0]]), array([[0, 0]]), array([[0, 0]])] 1 [array([[0, 0]]), array([[1, 0]]), array([[0, 0]]), array([[0, 0]]), array([[0, 0]])] 2 [array([[1, 0]]), array([[0, 0]]), array([[0, 0]]), array([[0, 0]]), array([[0, 0]])] ・・・・と左に一歩ずつ、array[[1,0]]が移動していくはずなのですが。。。
と違ってきてしまいます。
考えられることは
①最初のt=0の初期条件がうまくいっておらず、そのまま計算されずに来ているのか(そしたらcontinueの意味がないのでその可能性は薄い)、
②x_listの計算が何かしらうまくいってないのかのどちらかになるとは思うのですが。。。
ご指導のほどよろしくお願いいたします。
回答2件
あなたの回答
tips
プレビュー