资源描述:
《matlab总结与上机指南》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、化工计算中常用的MATLAB命令总结化学工程中的计算问题一般比较复杂,其操作的数据对象通常是数组,具体计算涉及到插值、求积分、参数拟合、解常微分和偏微分微分方程、解线性和非线性方程等。MATLAB是新一代的科学计算语言,在解决上述问题上,相对于FORTRAN、C和BASIC等传统的计算语言具有明显的优越性。本文针对应用MATLAB解决化工中的典型问题进行计算常用方法和命令做以小结。1.最小二乘法拟合1.1最小二乘拟合直线函数lsline格式lsline%最小二乘拟合直线h=lsline%h为直线的句柄1.2约束线
2、性最小二乘有约束线性最小二乘的标准形式为sub.to其中:C、A、Aeq为矩阵;d、b、beq、lb、ub、x是向量。在MATLAB5.x中,约束线性最小二乘用函数conls求解。函数lsqlin格式x=lsqlin(C,d,A,b)%求在约束条件下,方程Cx=d的最小二乘解x。x=lsqlin(C,d,A,b,Aeq,beq)%Aeq、beq满足等式约束,若没有不等式约束,则设A=[],b=[]。x=lsqlin(C,d,A,b,Aeq,beq,lb,ub)%lb、ub满足,若没有等式约束,则Aeq=[],be
3、q=[]。x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0)%x0为初始解向量,若x没有界,则lb=[],ub=[]。x=lsqlin(C,d,A,b,Aeq,beq,lb,ub,x0,options)%options为指定优化参数[x,resnorm]=lsqlin(…)%resnorm=norm(C*x-d)^2,即2-范数。[x,resnorm,residual]=lsqlin(…)%residual=C*x-d,即残差。第7页共6页[x,resnorm,residual,exitflag
4、]=lsqlin(…)%exitflag为终止迭代的条件[x,resnorm,residual,exitflag,output]=lsqlin(…)%output表示输出优化信息[x,resnorm,residual,exitflag,output,lambda]=lsqlin(…)%lambda为解x的Lagrange乘子1.3非线性最小二乘非线性最小二乘(非线性数据拟合)的标准形式为其中:L为常数在MATLAB5.x中,用函数leastsq解决这类问题,在6.0版中使用函数lsqnonlin。设则目标函数可表
5、达为其中:x为向量,F(x)为函数向量。函数lsqnonlin格式x=lsqnonlin(fun,x0)%x0为初始解向量;fun为,i=1,2,…,m,fun返回向量值F,而不是平方和值,平方和隐含在算法中,fun的定义与前面相同。x=lsqnonlin(fun,x0,lb,ub)%lb、ub定义x的下界和上界:。x=lsqnonlin(fun,x0,lb,ub,options)%options为指定优化参数,若x没有界,则lb=[],ub=[]。[x,resnorm]=lsqnonlin(…)%resnorm
6、=sum(fun(x).^2),即解x处函数值。[x,resnorm,residual]=lsqnonlin(…)%residual=fun(x),即解x处fun的值。[x,resnorm,residual,exitflag]=lsqnonlin(…)%exitflag为终止迭代条件。[x,resnorm,residual,exitflag,output]=lsqnonlin(…)%output输出优化信息。[x,resnorm,residual,exitflag,output,lambda]=lsqnonlin
7、(…)%lambda为Lagrage乘子。[x,resnorm,residual,exitflag,output,lambda,jacobian]=lsqnonlin(…)%fun在解x处的Jacobian矩阵。第7页共6页2多项式2.1多项式求值函数名称:polyval调用格式:y=polyval(p,x),[y,delta]=polyval(p,x,S)返回多项式p在x点处的取值。X可以是向量也可以是矩阵。[y,delta]=polyval(p,x,S)同时还生成误差估计。2.2多项式求根函数名称:roots
8、调用格式:r=roots(c)返回一个元素为多项式c的根的列向量。行向量中包含按降幂排列的多项式的系数,如果c中包含n+1个元素,则多项式的表达式为:c1sn+…+cns+cn+1。3插值3.1一维插值函数名称:interp1调用格式:yi=interp1(x,Y,xi),yi=interp1(x,Y,xi,method)MATLAB中有两类一维数据插值方法:多项式插值法