2017-04-07 7 views
0

私はPythonにはかなり慣れていて、ラプラス方程式とjacobi方程式を使って金属箱の電位を作り直そうとしています。私は最初に動作するように見えるコードを書いたが、私はエラーが出ている:IndexError:インデックス8は、軸7の軸0の範囲外であり、理由を理解できない。どんな助けも素晴らしいだろう!jacobiメソッドを使ってlaplace方程式を解くPYTHON

from visual import* 
from visual.graph import* 
import numpy as np 

lenx = leny = 7 
delta = 2 

vtop = [-1,-.67,-.33,.00,.33,.67,1] 
vbottom = [-1,-.67,-.33,.00,.33,.67,1] 
vleft = -1 
vright = 1 

vguess= 0 

x,y = np.meshgrid(np.arange(0,lenx), np.arange(0,leny)) 

v = np.empty((lenx,leny)) 
v.fill(vguess) 

v[(leny-1):,:] = vtop 
v [:1,:] = vbottom 
v[:,(lenx-1):] = vright 
v[:,:1] = vleft 

maxit = 500 

for iteration in range (0,maxit): 
    for i in range(1,lenx): 
     for j in range(1,leny-1): 
      v[i,j] = .25*(v[i+i][j] + v[i-1][j] + v[i][j+1] + v[i][j-1]) 
      print v 
+1

ようこそStackOverflowへ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。 MCVEコードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 これには、問題を再現するために貼り付け&実行できるコードと完全なエラーメッセージが含まれています。 – Prune

答えて

0

ちょうどあなたのコードでチラッから、それはインデックスエラーがこの部分で起こっているし、それに応じて変更することができているかのように思える:あなたは、単に追加

# you had v[i+i][j] instead if v[i+1][j] 
v[i,j] = .25*(v[i+1][j] + v[i-1][j] + v[i][j+1] + v[i][j-1]) 

と余分なiあなたのインデックスにどの範囲外だったでしょうか?

+0

男...それ以上のことを読んでいるはずです。 –

+0

私の喜び。このコードで幸運を祈る!私は現在、私の大学で静電学のクラスを取っています。この種のコーディングは非常に適用可能です! –

関連する問題