global宣言を用いずに値を次のループに持ち越す方法

前提

関数による計算for文で回し、計算結果をループごとに足していくプログラムを作りたいのですが、計算結果の値を次のループに持ち越す方法が分かりません。※プログラムの高速化のためにNumbaを使用しているのですが、Numbaにはグローバル変数への代入が実装されていないようなのでglobal宣言は使えません。

実現したいこと

global宣言を使用せずに値を次のループに持ち越す

発生している問題・エラーメッセージ

エラーメッセージ

該当のソースコード

for i in range(m): t, x1, x2, y1, y2, Win, Qin,Wins, Qins,x10_m,y10_m,x20_m,y20_m = initial(dt, T1, x10_i, x20_i, y10_i, y20_i, k, gamma, σ) t1,x11,x21,y11,y21=t,x1,x2,y1,y2 t, x1, x2, y1, y2, Wm, Qm, Wms, Qms,x10_f0,y10_f0,x20_f0,y20_f0 = measurement(dt, T2, x10_m, x20_m, y10_m, y20_m, k, gamma, σ) t2,x12,x22,y12,y22=t,x1,x2,y1,y2 t, x1, x2, y1, y2, Wf, Qf, Wfs, Qfs,x10_d,y10_d,x20_d,y20_d = feedback(dt, T3, x10_f0, x20_f0, y10_f0, y20_f0, k, gamma, σ) t3,x13,x23,y13,y23=t,x1,x2,y1,y2 t, x1, x2, y1, y2, Wd, Qd, Wds, Qds,x10_d2,y10_d2,x20_d2,y20_d2 = diffusion(dt, T4, x10_d, x20_d, y10_d, y20_d, k, gamma, σ) t4,x14,x24,y14,y24=t,x1,x2,y1,y2 t, x1, x2, y1, y2, Wd2, Qd2, Wd2s, Qd2s,x10_i,y10_i,x20_i,y20_i = diffusion2(dt, T5, x10_d, x20_d, y10_d, y20_d, k, gamma, σ) t5,x15,x25,y15,y25=t,x1,x2,y1,y2 t=np.concatenate([t1,T1+t2,T1+T2+t3,T1+T2+T3+t4,T1+T2+T3+T4+t5]) x1=np.concatenate([x11,x12,x13,x14,x15]) x2=np.concatenate([x21,x22,x23,x24,x25]) y1=np.concatenate([y11,y12,y13,y14,y15]) y2=np.concatenate([y21,y22,y23,y24,y25]) arg = np.arctan2(y1, x1) arg[0]=arg0 arg = np.unwrap(arg) ax6.plot(t+Tc*(i+1), x2 *1E6, lw = 0.5) ax7.plot(t+Tc*(i+1), y2 *1E6, lw = 0.5) ax8.plot(t+Tc*(i+1), arg*180/np.pi, lw = 0.5) arg0 = arg[-1] U_i = potential_i(x20_m,y20_m) U_m0 = potential_m(0,x20_m,y20_m) W_md = U_m0-U_i+Wm U_is = potential_i(x10_m,y10_m) U_m0s = potential_m(0,x10_m,y10_m) W_ms = U_m0s-U_is+Wms U_d2i = potential_i(x20_i,y20_i) U_d2 = potential_d2(T5,x20_i,y20_i) W_md2 = U_d2i-U_d2+Wd2

試したこと

ここに問題に対して試したことを記載してください。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

コメントを投稿

0 コメント