资源描述
2.2 非线性代数方程(组)的解法,非线性方程(组)在化学工程中的作用,多组分混合溶液的沸点、饱和蒸气压计算 流体在管道中阻力计算 多组分多平衡级分离操作模拟计算 平衡常数法求解化学平衡问题 定态操作的全混流反应器的操作分析,知识要点,单变量非线性方程-fzero 多项式求根函数-roots 非线性方程(组)-fsolve,单变量非线性方程fzero,x,fval,exitflag,output = fzero(fun,x0,options, p1, p2, .) 此函数的作用求函数fun在x0附件的零值点x,x0是标量。 fval 函数在解x处的值 exitflag 程序结束情况,0,程序收敛于解; 0,程序没有收敛;0,计算达到了最大次数 output 一个结构体,提供程序运行的信息; output.iterations,迭代次数; output.functions,函数fun的计算次数; output.algorithm,使用的算法 options 选项,可用optimset函数设定选项的新值 fun可以是函数句柄或匿名函数。,1) sinx在3附近的零点,2) cosx在1,2范围内的零点,3),fzero(sin,3),fzero(cos,1,2),x=fzero(fun,1) function y=fun(x) y=x3-2*sin(x);,初值不同对fzero求解结果的影响(例3-18),function xFzero_Roots clear all clc x0 = 0; x1 = fzero(func,x0) x0 = 2; x2 = fzero(func,x0) % By using roots() c = 1 -2 -3; x3 = roots(c) % - function f = func(x) f = x2-2*x-3;,多项式求根函数roots,x=root(c) c:多项式的系数向量 x:方程的根,p=2 -5 6 -1 9; sol=roots(p),roots(1 0 -2 -5),非线性方程(组)fsolve,fzero函数只能求解单个方程的根 fsolve函数可求解非线性方程组的解 其算法采用最小二乘法。,x,fval,exitflag,output,jacobian = fsolve(fun,x0,options.) 输入输入变量的意义同fzero函数。 输出变量中的jacobian为函数fun在x处的Jacobian矩阵。,fsolve应用实例(例3-19),function xFsolve clear all clc x0 = 1 1; x1 = fsolve(NonlinEqs,x0) x0 = -0.1 2; x2 = fsolve(NonlinEqs,x0) % - function f = NonlinEqs(x) f(1) = x(1)-4*x(1)*x(1)-x(1)*x(2); f(2) = 2*x(2)-x(2)*x(2)+3*x(1)*x(2);,化工应用实例(例3-20),function PVT clear all clc P = 9.33; % atm T = 300.2; % K n = 2; % mol a = 4.17; b = 0.0371; R = 0.08206; V0 = n*R*T/P; V,fval = fzero(PVTeq,V0,P,T,n,a,b,R) % - function f = PVTeq(V,P,T,n,a,b,R) f = (P + a*n2/V2) * (V-n*b) - n*R*T;,化工应用实例(例3-21),function BatchDist clear all clc alpha = 2.5; % 相对挥发度 x0 = 0.60; % 开始时的苯含量 var = 2; % var = F0/F x,fval = fzero(DistEq,x0,alpha,x0,var) % - function f = DistEq(x,alpha,x0,var) f = log(var) - 1/(alpha-1)*(log(x0/x)+alpha*log(1-x)/(1-x0);,化工应用实例(例3-22),function BoilingPoint clear all clc x = 0.5 0.3 0.2 ; % 液相组成 a = 7.84135 8.08840 8.11404; b = 1750 1985 2129 ; P = 760; % 大气压,mmHg T0 = 353; % K T = fzero(Equation,T0,x,a,b,P); y = x.*P0(T,a,b)./P; fprintf(nn Results:) fprintf(nt混合物沸点为:%.2f %sn,T,K) fprintf(t平衡蒸汽组成为:) disp(y) % - function f = Equation(T,x,a,b,P) y = x.*P0(T,a,b)./P; f = sum(y) - 1; % - function f = P0(T,a,b) f = exp(log(10)*(a-b./T);,读书报告要求,先讲PPT,后运行Matlab程序(m文件) 讲解时间:10分钟左右 讲稿规范: 题目、姓名学号、前言、问题叙述、问题求解、结果分析、结论、附录(主要是matlab程序,可省略数据信息等) 应用对象:化学化工对象,
展开阅读全文