摘要:我解决了金属棒的热方程,一端保持在100°C,另一端保持在0°Cimportnumpyasnpimportmatplotlib.pyplotaspltdt=0.0005dy=0.0005k=10**(-4)y_max=0.04t_max=1T0=100defFTCS(dt,dy,t_max,y_max,k,T0):s=
摘要:我解决了金属棒的热方程,一端保持在100°C,另一端保持在0°Cimportnumpyasnpimportmatplotlib.pyplotaspltdt=0.0005dy=0.0005k=10**(-4)y_max=0.04t_max=1T0=100defFTCS(dt,dy,t_max,y_max,k,T0):s=。
我解决了金属棒的热方程,一端保持在100°C,另一端保持在0°C
import numpy as np import matplotlib.pyplot as plt dt = 0.0005 dy = 0.0005 k = 10**(-4) y_max = 0.04 t_max = 1 T0 = 100 def FTCS(dt,dy,t_max,y_max,k,T0): s = k*dt/dy**2 y = np.arange(0,y_max dy,dy) t = np.arange(0,t_max dt,dt) r = len(t) c = len(y) T = np.zeros([r,c]) T[:,0] = T0 for n in range(0,r-1): for j in range(1,c-1): T[n 1,j] = T[n,j] s*(T[n,j-1] - 2*T[n,j] T[n,j 1]) return y,T,r,s y,s = FTCS(dt,T0) plot_times = np.arange(0.01,1.0,0.01) for t in plot_times: plt.plot(y,T[t/dt,:])
如果改变Neumann边界条件,一端是绝缘的(不是焊剂),
那么,计算期限如何
T[n 1,j 1])
应该修改?
解决方法
Neumann边界条件的典型方法是想象一个超出域一步的“鬼点”,并使用边界条件计算它的值然后正常(使用PDE)进行网格内的点,包括Neumann边界.
鬼点允许我们对边界处的导数使用对称有限差分近似,即如果y是空间,则为(T [n,j 1] – T [n,j-1])/(2 * dy)变量.非对称近似(T [n,j] – T [n,j-1])/ dy,不涉及鬼点,准确度要低得多:它引入的误差比误差差一个数量级参与PDE本身的离散化.
因此,当j是T的最大可能索引时,边界条件表示“T [n,j 1]”应理解为T [n,j-1],这就是下面所做的.
for j in range(1,c-1): T[n 1,j 1]) # as before j = c-1 T[n 1,j-1]) # note the last term here
总结
以上是为你收集整理的用python(NumPy)求解热方程全部内容,希望文章能够帮你解决用python(NumPy)求解热方程所遇到的程序开发问题。
所有的伟大,都源于一个勇敢的开始!