2
これはこのWebで初めてのことです。Pythonのパラメータ化
私はシリンダーの熱拡散シミュレーションを行っています。熱源は円筒の外側にあるため、円筒形の対称性はないので、私はX-Yグリッドを作成し、それを近似することにしました。 このようないくつかの事:
これが私の最初のと最も単純試みです:
from numpy import empty,zeros,max
import matplotlib.pyplot as plt
# Constants
M = 10 # Grid squares on a side
V = 100.0 # Voltage at top wall
target = 1e-4 # Target accuracy
# Create arrays to hold potential values
phi = zeros([M+1,M+1],float)
phi[0,:] = V
phi[M,:]=V
phi[:,0]=V
phi[:,M]=V
phiprime = empty([M+1,M+1],float)
# Main loop
delta = 1.0
while delta>target:
# Calculate new values of the potential
for i in range(M+1):
for j in range(M+1):
if i==0 or i==M or j==0 or j==M:
phiprime[i,j] = phi[i,j]
elif i==1 or i==M-1:
if j==1 or j==2 or j==M-2 or j==M-1:
phiprime[i,j]=V-V/2
else:
phiprime[i,j] = (phi[i+1,j] + phi[i-1,j] \
+ phi[i,j+1] + phi[i,j-1])/4
elif i==2 or i==M-2:
if j==1 or j==M-1:
phiprime[i,j]=V-V/2
else:
phiprime[i,j] = (phi[i+1,j] + phi[i-1,j] \
+ phi[i,j+1] + phi[i,j-1])/4
else:
phiprime[i,j] = (phi[i+1,j] + phi[i-1,j] \
+ phi[i,j+1] + phi[i,j-1])/4
delta = max(abs(phi - phiprime))
phi, phiprime = phiprime, phi
plt.imshow(phiprime)
plt.gray()
plt.show()
これは非常に簡単だったが、これはシリンダーのために良い近似ではありません、私がする必要がありますそれをかなり大きくする。 ご覧のように、その場では「ポジション」を手作業でコーディングできますが、100x100または1000x1000にすると不可能です。
私の質問は、「字下げした四角形(黒いもの)」のパラメータ化がありますか?私はあなたが何をしたいと考えてい
おかげ