numpy 配列で値の加重合計を取得する最も簡単で最速の方法は何ですか?
例: オイラー法で熱方程式を解く
length_l=10
time_l=10
u=zeros((length_l,length_l))# (x,y)
u[:, 0]=1
u[:,-1]=1
print(u)
def dStep(ALPHA=0.1):
for position,value in ndenumerate(u):
D2u= (u[position+(1,0)]-2*value+u[position+(-1, 0)])/(1**2) \
+(u[position+(0,1)]-2*value+u[position+( 0,-1)])/(1**2)
value+=ALPHA*D2u()
while True:
dStep()
print(u)
D2u
は、2 次元での 2 番目の中央の違いである必要があります。のようなインデックスを追加できれば、これは機能します(1,4)+(1,3)=(2,7)
。残念ながら、python はそれらを として追加します(1,4)+(1,3)=(1,4,1,3)
。
計算D2u
は、現在の位置を中心とするこのカーネルでドット積を取得することと同等であることに注意してください。
0, 1, 0
1,-4, 1
0, 1, 0
これを内積としてベクトル化できますか?