加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

用python(NumPy)求解热方程

发布时间:2020-12-20 11:03:17 所属栏目:Python 来源:网络整理
导读:我解决了金属棒的热方程,一端保持在100°C,另一端保持在0°C import numpy as npimport matplotlib.pyplot as pltdt = 0.0005dy = 0.0005k = 10**(-4)y_max = 0.04t_max = 1T0 = 100def FTCS(dt,dy,t_max,y_max,k,T0): s = k*dt/dy**2 y = np.arange(0,y_max
我解决了金属棒的热方程,一端保持在100°C,另一端保持在0°C

enter image description here

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边界条件,一端是绝缘的(不是焊剂),

enter image description here

那么,计算期限如何

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读