Python日记(2)——反应速率的计算

Python日记(2)——反应速率的计算

每天做一个Python小练习,顺便记录一些小技巧。
化工数值计算实验的实验二:1,3-丁二烯气相二聚反应的速率计算
一、目的和要求
1.掌握常用的插值方法
2.掌握数值微分的计算方法
二、问题提出
1.函数插值
函数是工程实践中重要的工具,它能够描述变量之间的关系。但是实际应用
当中,我们很难使用解析表达式描述两变量之间的关系。我们能够得到的,只是
从实验测量得到的离散的数据,即函数表。当我们需要使用的数据点不在函数表
中时,我们就需要进行插值。
2.数值微分
有时候,需要从实验得到的有限的数据中推断出变量之间的相对变化率。但
是,仅从有限个数据,不可能通过解析的方法精确求解出其导数,只能利用数值
方法计算。数值微分与插值和拟合是密不可分的。在进行数值计算时,往往需要
插值或拟合来增加数据点的密度,提高精度。
3.二聚反应速率的计算

t/min p/mmHg
0 632.0
5 611.0
10 592.0
15 573.5
20 558.5
25 545.0
30 533.0
35 523.0
40 514.0
45 505.0
50 497.0
55 490.0
60 484.0
65 478.5
70 473.0
75 468.0
80 463.0
90 458.0
95 453.0

丁二烯可发生二聚反应:
2C4H6 → (C4H6)2
若初始压力为p0,在t时刻丁二烯的分压为p1,二聚体的分压为p2,则它们存
在关系p1+ 2p2= p0。该反应的速率可表示为
-1/2dp1/dt = dp2/dt
也就是“虽计+算反应速率,需要知道P或p2与时间的函数关系,但是实验只能测量总压,而且实验测量只能得到有限的离散的数据,因此需要从有限的数据中计算分压对时间的导数,从而得到反应速率。
三、实验内容
1.换算p的单位
根据 1kPa = 7.5mmHg

def p_convert(p):
    for i in p:
        index_num = p.index(i)
        i /= 7.5
        p[index_num] = round(i, 4)
    return p

2.因为二聚体的分压等于Δp,所以利用循环求Δp并返回便是p1的分压

def p_delta(p):
    p1 = list()
    for i in range(0, len(p)):
        if i+1 == len(p):
            break
        else:
            pl = round(p[0] - p[i])
            p1.append(pl)
    return p1

3.曲线插值
(1)设置x的点集
linspace(begin, end, num)
begin为左端点,end为右端点,num为元素个数

def generate_data(begin, end, num):
    """ 产生x点集 """
    x = np.linspace(begin, end, num)
    return x

(1)线性插值
interp1d(x, y, kind)
x, y为已知数据点,kind为可选类型,可以是字符串或整数

def interpolate_linear(x, y):
    """ 线性插值 """
    f_linear = interpolate.interp1d(x, y)
    return f_linear

(3)求得样条曲线或导数,默认为0阶导数。
scipy.interpolate.splrep(x, y, w=None, xb=None, xe=None, k=3, task=0, s=None, t=None, full_output=0, per=0, quiet=1)
查找一维曲线的B样条曲线表示。给定数据点集,确定区间上度k的平滑样条近似。
(各个参数的表达含义我还没学会)
x, y为已知数据点,x_new就是新的细分后的x点集,元素个数要与差值后的个数保持一直。

def interpolate_b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

June_Pyt

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值