Python——求解一维热传导

1、问题

     求一维热传导方程混合问题:

     求解其的数值解,取N=10,h=0.1,计算到K=36为止.

 2、程序

#python
import numpy as np
import matplotlib.pyplot as plt
def f(a,x1,x2,x3):
    y=a*x3+(1-2*a)*x2+a*x1
    return y
h=0.1;a=1/6;p=1/600
x=np.zeros((37,6));
for i in range(6):
    x[0,i]=4*i*h*(1-i*h)
for j in range(1,37):
    for n in range(1,6):
        if n+1!=6:
            x[j,n]=f(a,x[j-1,n-1],x[j-1,n],x[j-1,n+1])
        else:
            x[j,n]=f(a,x[j-1,n-1],x[j-1,n],x[j-1,n-1])
y1=[0,1,2,3,4,5]
t=np.array([])
for o in range(37):
    t1=[p*o,p*o,p*o,p*o,p*o,p*o]
    t=np.r_[t,t1]
t=np.array(t.reshape(37,-1))
po=['position:0','position:1','position:2','position:3','position:4','position:5']
for by in range(6):
    x2=x[:,by]
    y2=t[:,by]
    plt.plot(y2,x2,label=po[by])
plt.xlabel('Time')
plt.ylabel('Heat')
plt.title('Heat changes over time')
plt.legend()
plt.show()

3、结果

运行结果如Fig1.

Fig1. Position(0~5)表示空间位置,y-axis 表示热量/焦耳,x-axis表示时间/秒

 

4、实验总结

(1)本次实验解决偏微分方程所用到的方法是差分法,核心思想就是将一阶差商和二阶差商代替一阶偏分和二阶偏分;

(2)本次实验程序的实现并不困难,掌握核心方法,利用边值条件,对不同空间位置的点进行迭代就可以较为容易的出现结果;

(3)从设计的程序运行结果来看,随着时间的增大,热量在不断的减少,这种规律是符号我们经验的,具有一定的可信性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Eyu.sir

谢谢。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值