matlab nrtl,Matlab在化工热力学教学中的应用.docx

Matlab在《化工热力学濂学中的应用

邱挺,黄智贤,王红星,李晓

(福州大学化学化工学院福建福州350108)

摘要:在化工热力学理论教学过程中流体热力学性质、相平衡等计算较困难,经常需要迭代试差计算, 手算费时费力.本文探讨了工程讣算软件Matlab JfJ于化工热力学的计算结果表明:Matlab易学易川,可有 效解决化工热力学计算问题,提高学生的工程计算能力.

关 键 词:化工热力学;Matlab;状态方程;相平衡;迭代

中图分类号:G642文献标志码:A

收稿日期

收稿日期:2012-05H2

基金项目:教育部高等学校特色专业建设点项目(TS11506);福州大学第六批高等教育教学改革项目 作者简介:邱挺(1974T,男福建福州人福州大学教授膊士,主耍从事传质与分离方面的研究.

化学工程与工艺专业是我校首批启动“卓越 工程师教育培养计划”的专业“卓越工程师”具 备能融会贯通地利用所学知识,针对不断变化的 新情况通过理论上的探讨并结合必要的科学验 证,提出创新性解决工程问题的能力,同时要具有很 强的自学能力从而不断提高自身的工程素养?为了 优化“卓越计划"K才培养方案,精心设计课程体 系以回归工程应用为指导思想,将"专业课 教学" 与“工程实践’有机融合,本文以化工热力 学课程 教学为例,从培养学生工程计算能力出发,通过布 置一些用手工计算根本无法完成、但对理解化工 热力学原理和计算方法很重要的作业,让学牛把 化工数值计算课程中学到的Matlab软件 应用到 工程实际屮,从而使学生具备解决工程复杂问题 计算的能力为将来成为“卓越工程师’扌丁下坚实 的基础.

化工热力学是化学工程与技术的一个重要分 支,是分离过程的基石,是化学工程与工艺专业的必 修主干课程,是在具备必要的高等数学、物理化学 和计算机技术等基础知识之后必修的专业技术基 础课?该课程将热力学原理应用于化学工程技术 领域,是化工过程研究.开发、设计.化工生产、操 作的理论基础,涉及热力学物性参数和质量、能量 传递的平衡问题,在培养学生工程观点提高学生工 程能力方面起着重要的作用?化工热力学主要涉 及到流体热力学性质和流体相平衡等计算具有 公式多、知识面广.计算量大、手算难等特 点,频繁涉及到非线性方程和方程组的求解 需要迭代试差计算传统手工计算值要求高, FL计算量很大,用普通编程语言如C.VB等编 程⑥,需要编写数值计算方法 而美国MathWorks公 司开发的数学软件Matlab可很好地解决手工计 算和普通语言编程的缺点,很方便地用于非线性 方程(组)计算、数据回归等广泛应用于工程il- 算

Matlab包含了大量的计算算法,拥有数百个 数学运算函数,用户通过调用口J方便地进行各种 计算刀函数中所使用的算法都是工程计算中的 最经常使用的,且经过各种优化处理,大大提高了 计算的准确度.一般情况下,用Matlab可替代底 层编程语言,如C和C + + .在同等计算要求的情 况下,使用Matlab计算可极大减少工作量笔者 在数年化工热力学教学过程中,探索了 Matlab软 件求解化工热力学各类计算问题,主要涉及流体 热力学及汽液相平衡等方面的计算.

1 Matlab常用求解函数

Matlab中单变量非线性方程求解使用fzero 函数,非线性方程组求解使用fsolve函数,求无约 束多元函数最小值使用fminsearch函数门

fsolve命令是求非线性方程组的解也可用于 求非线性方程的根,最简洁的调用方式是:x = fsolve( @ fug。).输入参数:fun为用户定义的目标函数名即非线性方程组f(x) = 0屮的f(x) 的表达式,该函数是一个列向量,x0是迭代初值 的向量.输出结果:X为待求解方程组的根向量.

fzero命令用于求单变量方程的根,所采用的 算法主要是二分法、割线法和逆二次插值法等的 混合方法,其最简单的调用方式为x = fzero (@ fun^O).输入参数:fun为用户定义的目标函 数的函数名,定义单变量非线性方程f( x)二0中 的f( x) x0为迭代初値?输出参数:x为方程的根.

fminsearch命令用于求解无约束多元函数最 小值所采用的算法是单纯形法,其调用方式 fval] = fminsearch( @ funxO)输入参数:fun 为用 户定义的冃标函数的函数名刃为迭代初值输出 参数:x为函数最优点fval为最优点的函数值.

使用Matlab软件求解非线性方程、非线性方 程组或无约束多元函数最小值时,不用编写数值 求解所需的复杂算法程序,只需要定义待求的函 数,而且Matlab对初值的要求较低,因此求解过 程快速方便,可快速解决工程复杂计算问题.

2常见计算实例

21纯流体热力学计算

例1,应用RK方程,计算异丙

要使用Matlab拟合NRTL方程,需要先准备好实验数据。NRTL方程的拟合需要知道每个组分的摩尔分数、温度和压力等参数,以及每个组分的相对挥发度(或者其它类似的参数)。然后可以使用Matlab的拟合函数,如fit、lsqcurvefit等,来进行拟合。 下面是一个简单的例子,假设我们有一组二元混合物的实验数据,包括组分1和组分2的摩尔分数、温度和压力等参数,以及二者的相对挥发度。我们想用NRTL方程拟合这组数据,求出NRTL方程的τij和kij参数,并用拟合后的方程预测组分的活度系数。 首先,需要定义NRTL方程。可以将其定义为一个函数,如下所示: ``` function gamma = nrtl(tau,kij,x) % tau: NRTL方程的τij参数 % kij: NRTL方程的kij参数 % x: 混合物各组分的摩尔分数 n = length(x); gamma = zeros(n,1); for i = 1:n sum1 = 0; sum2 = 0; for j = 1:n if j ~= i sum1 = sum1 + x(j)*tau(i,j)/(1+kij(i,j)*x(j)); sum2 = sum2 + x(j)*kij(i,j)*tau(i,j)/(1+kij(i,j)*x(j)); end end gamma(i) = exp(sum1 + sum2); end end ``` 接下来,可以使用Matlab的拟合函数,如lsqcurvefit,来拟合NRTL方程。假设我们已经将实验数据存储在一个名为data的结构体,包括x1、x2、T、P和alpha等变量。可以使用如下代码进行拟合: ``` % 定义拟合函数 fun = @(x,xdata) nrtl(x(1:4),x(5:8),xdata(:,1:2)); % 初始化参数 x0 = [0.1 0.1 0.1 0.1 0.1 0.1 0.1 0.1]; % 拟合数据 x = lsqcurvefit(fun,x0,data(:,1:2),log(data.alpha)); % 输出拟合结果 disp(x(1:4)); % 输出tauij参数 disp(x(5:8)); % 输出kij参数 ``` 最后,可以使用拟合后的NRTL方程来预测组分的活度系数。假设我们要预测组分1和组分2在给定条件下的活度系数,可以使用如下代码: ``` % 给定摩尔分数、温度和压力等参数 x = [0.3 0.7]; T = 298; % K P = 1e5; % Pa % 计算相应的tauij和kij参数 tau = x(1)*x(2)*[0.1 0.2; 0.2 0.1]; kij = x(1)*x(2)*[0.2 0.3; 0.3 0.2]; % 计算活度系数 gamma = nrtl(tau,kij,x); % 输出结果 disp(gamma); ``` 这样就可以使用Matlab拟合NRTL方程,并预测混合物各组分的活度系数了。需要注意的是,NRTL方程的拟合需要根据具体的实验数据,选择合适的参数个数和初始值,并进行适当的调整,以获得较好的拟合效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值