MATLAB总结与上机指南_第1页
MATLAB总结与上机指南_第2页
MATLAB总结与上机指南_第3页
MATLAB总结与上机指南_第4页
MATLAB总结与上机指南_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MATLAB总结与上机指南MATLAB总结与上机指南

化工计算中常用的MATLAB命令总结

化学工程中的计算问题一般比拟简单,其操作的数据对象通常是数组,详细计算涉及到插值、求积分、参数拟合、解常微分和偏微分微分方程、解线性和非线性方程等。MATLAB是新一代的科学计算语言,在解决上述问题上,相对于FORTRAN、C和BASIC等传统的计算语言具有明显的优越性。本文针对应用MATLAB解决化工中的典型问题进展计算常用方法和命令做以小结。1.最小二乘法拟合1.1最小二乘拟合直线

函数lsline

格式lsline%最小二乘拟合直线h=lsline%h为直线的句柄1.2约束线性最小二乘

有约束线性最小二乘的标准形式为

minx1Cxd222

sub.toAxb

Aeqxbeq

lbxub

其中:C、A、Aeq为矩阵;d、b、beq、lb、ub、x是向量。在MATLAB5.x中,约束线性最小二乘用函数conls求解。

函数lsqlin

格式x=lsqlin(C,d,A,b)%求在约束条件Axb下,方程Cx=d的最小二

乘解x。

x=lsqlin(C,d,A,b,Aeq,beq)%Aeq、beq满意等式约束Aeqxbeq,若没有不等式约束,则设A=[],b=[]。

x=lsqlin(C,d,A,b,Aeq,beq,lb,ub)%lb、ub满意lbxub,若没有等

式约束,则Aeq=[],beq=[]。

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,即残差。

[x,resnorm,residual,exitflag]=lsqlin(…)%exitflag为终止迭代的条件[x,resnorm,residual,exitflag,output]=lsqlin(…)%output表示输出优化

第1页共6页信息

[x,resnorm,residual,exitflag,output,lambda]=lsqlin(…)%lambda为解x

的Lagrange乘子

1.3非线性最小二乘

非线性最小二乘(非线性数据拟合)的标准形式为

minxf(x)f1(x)2f2(x)2fm(x)2L

其中:L为常数

在MATLAB5.x中,用函数leastsq解决这类问题,在6.0版中使用函数lsqnonlin。

f1(x)f2(x)设F(x)fm(x)则目标函数可表达为minx12F(x)221fi(x)22i其中:x为向量,F(x)为函数向量。函数lsqnonlin

格式x=lsqnonlin(fun,x0)%x0为初始解向量;fun为fi(x),i=1,2,…,m,fun返回向量值F,而不是平方和值,平方和隐含在算法中,fun的定义与前面一样。

lbxubx=lsqnonlin(fun,x0,lb,ub)%lb、ub定义x的下界和上界:。

x=lsqnonlin(fun,x0,lb,ub,options)%options为指定优化参数,若x没有界,则lb=[],ub=[]。

[x,resnorm]=lsqnonlin(…)%resnorm=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(…)%lambda为

Lagrage乘子。

[x,resnorm,residual,exitflag,output,lambda,jacobian]=lsqnonlin(…)%fun

在解x处的Jacobian矩阵。

第2页共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

调用格式: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中有两类一维数据插值方法:多项式插值法和基于FFT的插值法。函数interp1采纳多项式插值法,它用多项式拟合所给出的数据,然后在插值点上依据多项式算出相应的值。调用格式中,xi为需要插值的位置所组成的向量,yi为依据插值算法求得的值所组成的向量。x,Y为已知的数据点向量。参数method用于确定详细的插值方法,包括:

‘linear’表示采纳线性插值方法;‘cubic’表示采纳三次插值的方法;‘nearest’表示采纳最近点插值法;‘spline’表示用三次样条插值方法。3.2二维插值

函数名称:interp2

调用格式ZI=interp2(X,Y,Z,XI,YI)

返回矩阵ZI,其元素包含对应于参量XI与YI(可以是向量、或

同型矩阵)的元素,即Zi(i,j)←[Xi(i,j),yi(i,j)]。。

ZI=interp2(Z,XI,YI)

缺省地,X=1:n、Y=1:m,其中[m,n]=size(Z)。再按第一种情形进

行计算。

ZI=interp2(Z,n)

作n次递归计算,在Z的每两个元素之间插入它们的二维插值,

这样,Z的阶数将不断增加。interp2(Z)等价于interp2(z,1)。

ZI=interp2(X,Y,Z,XI,YI,method)

用指定的算法method计算二维插值:

’linear’:双线性插值算法(缺省算法);

第3页共6页’nearest’:最接近插值;’spline’:三次样条插值;’cubic’:双三次插值。

4非线性数据(曲线)拟合

非线性曲线拟合是已知输入向量xdata和输出向量ydata,并且知道输入与输出的函数关系为ydata=F(x,xdata),但不知道系数向量x。今进展曲线拟合,求x使得下式成立:

minx1F(x,xdata)ydata2221(F(x,xdatai)ydatai)22i在MATLAB5.x中,使用函数curvefit解决这类问题。函数lsqcurvefit

格式x=lsqcurvefit(fun,x0,xdata,ydata)

x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub)

x=lsqcurvefit(fun,x0,xdata,ydata,lb,ub,options)[x,resnorm]=lsqcurvefit(…)

[x,resnorm,residual]=lsqcurvefit(…)

[x,resnorm,residual,exitflag]=lsqcurvefit(…)

[x,resnorm,residual,exitflag,output]=lsqcurvefit(…)[x,resnorm,residual,exitflag,output,lambda]=lsqcurvefit(…)

[x,resnorm,residual,exitflag,output,lambda,jacobian]=lsqcurvefit(…)

参数说明:

x0为初始解向量;xdata,ydata为满意关系ydata=F(x,xdata)的数据;lb、ub为解向量的下界和上界lbxub,若没有指定界,则lb=[],

ub=[];

options为指定的优化参数;

fun为拟合函数,其定义方式为:x=lsqcurvefit(@myfun,x0,xdata,ydata),

其中myfun已定义为functionF=myfun(x,xdata)F=…%计算x处拟合函数值fun的用法与前面一样;resnorm=sum((fun(x,xdata)-ydata).^2),即在x处残差的平方和;residual=fun(x,xdata)-ydata,即在x处的残差;exitflag为终止迭代的条件;output为输出的优化信息;lambda为解x处的Lagrange乘子;

jacobian为解x处拟合函数fun的jacobian矩阵。

第4页共6页5数值积分

5.1一元函数的数值积分

函数名称:quad、quadl、quad8

调用格式q=quad(fun,a,b)%近似地从a到b计算函数fun的数值积分,误

差为10。给fun输入向量x,应返回向量y,即fun是一单值函数。q=quad(fun,a,b,tol)%用指定的肯定误差tol代替缺省误差。tol越大,函数计算的次数越少,速度越快,但结果精度变小。

q=quad(fun,a,b,tol,trace,p1,p2,…)%将可选参数p1,p2,…等传递给函数fun(x,p1,p2,…),再作数值积分。若tol=[]或trace=[],则用缺省值进展计算。

[q,n]=quad(fun,a,b,…)%同时返回函数计算的次数n

…=quadl(fun,a,b,…)%用高精度进展计算,效率可能比quad更好。…=quad8(fun,a,b,…)%该命令是将废弃的命令,用quadl代替。

5.2一元函数的数值积分

函数名称:dblquad

功能矩形区域上的二重积分的数值计算

调用格式q=dblquad(fun,xmin,xmax,ymin,ymax)调用函数quad在区域

[xmin,xmax,ymin,ymax]上计算二元函数z=f(x,y)的二重积分。输入向量x,标量y,则f(x,y)必需返回一用于积分的向量。

q=dblquad(fun,xmin,xmax,ymin,ymax,tol)用指定的精度tol代替缺省精度10-6,再进展计算。

q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method)用指定的算法

method代替缺省算法quad。method的取值有@quadl或用户指定的、与命令quad与quadl有一样调用次序的函数句柄。

q=dblquad(fun,xmin,xmax,ymin,ymax,tol,method,p1,p2,…)将可选参数

p1,p2,..等传递给函数fun(x,y,p1,p2,…)。若tol=[],method=[],则使用缺省精度和算法quad。

6非线性方程组的解

非线性方程组的标准形式为:F(x)=0其中:x为向量,F(x)为函数向量。函数fsolve

格式x=fsolve(fun,x0)

用fun定义向量函数,其定义方式为:先定义方程函数

functionF=myfun(x)。

F=[表达式1;表达式2;…表达式m]

保存为myfun.m,并用下面方式调用:x=

第5页共6页

-fsolve(@myfun,x0),x0为初始估量值。

x=fsolve(fun,x0,options)[x,fval]=fsolve(…)

fval=F(x),即函数值向量[x,fval,exitflag]=fsolve(…)

[x,fval,exitflag,output]=fsolve(…)

[x,fval,exitflag,output,jacobian]=fsolve(…)

jacobian为解x处的Jacobian阵。

其余参数与前面参数相像。7常微分方程数值解

函数名称:ode45、ode23、ode113、ode15s、ode23s、ode23t、ode23tb功能常微分方程(ODE)组初值问题的数值解参数说明:

solver为命令ode45、ode23,ode113,ode15s,ode23s,ode23t,ode23tb之一。

Odefun为显式常微分方程y’=f(t,y),或为包含一混合矩阵的方程

M(t,y)*y’=f(t,y)。命令ode23只能求解常数混合矩阵的问题;命令ode23t与ode15s可以求解奇异矩阵的问题。

Tspan积分区间(即求解区间)的向量tspan=[t0,tf]。要获得问题在其他指定时

间点t0,t1,t2,…上的解,则令tspan=[t0,t1,t2,…,tf](要求是单调的)。

Y0包含初始条件的向量。

Options用命令odeset设置的可选积分参数。P1,p2,…传递给函数odefun的可选参数。调用格式[T,Y]=solver(odefun,tspan,y0)

在区间tspan=[t0,tf]上,从t0到tf,用初始条件y0求解显式微分方程y’=f(t,y)。对于标量t与列向量y,函数f=odefun(t,y)必需返回一f(t,y)的列向量f。解矩阵Y中的每一行对应于返回的时间列向量T中的一个时间点。要获得问题在其他指定时间点t0,t1,t2,…上的解,则令tspan=[t0,t1,t2,…,tf](要求是单调的)。

[T,Y]=solver(odefun,tspan,y0,options)

%用参数options(用命令odeset生成)设置的属性(代替了缺省的积分参数),再进展操作。常用的属性包括相对误差值RelTol(缺省值为1e-3)与肯定误差向量AbsTol(缺省值为每一元素为1e-6)。

[T,Y]=solver(odefun,tspan,y0,options,p1,p2…)

将参数p1,p2,p3,..等传递给函数odefun,再进展计算。若没有参数设置,则令options=[]。

第6页共6页

扩展阅读:MATLAB应用上机指导书

《MATLAB应用》

上机指导书

黑龙江工程学院测绘工程系

201*年7月哈尔滨

名目

MATLAB应用上机试验说明----------------------------------------------------------------------2试验一MATLAB操作根底、矩阵及其运算-----------------------------------------------4试验二MATLAB试验三MATLAB试验四

程序设计-------------------------------------------------------------------15文件操作及绘图、数据分析-------------------------------------------18图形句柄及图形用户界面设计--------------------------------------------------22

MATLAB应用上机试验说明

MATLAB是一种应用于科学计算领域的高级语言,MATLAB应用是一门实践性特别强的课程。要学好MATLAB应用,上机实践是非常重要的环节,只有通过大量的上机试验,才能真正把握MATLAB程序设计。

一、上机试验的目的

上机试验主要是为了验证自己所编写的程序的正确性,帮忙理解MATLAB的语法规章,训练对问题的分析及解决、设计的力量。总的来看,上机试验的目的有以下几个方面:

1.熟识MATLAB的程序集成环境。2.把握程序调试技术。

3.加深课堂讲授和书本内容的理解。

4.通过上机编写和调试程序,可使学生真正了解程序在计算机中的执行过程以及解决实际问题的过程,提高学习MATLAB应用的兴趣。

二、上机试验的根本要求

1.上机前的预备工作

要使试验到达应有的效果,在上机试验之前,必需知道本次试验的任务,依据试验任务,做好充分预备工作,只有这样才能做到目的明确,使试验到达应有的效果。上机前的预备工作包括以下几个方面:

1)复习和把握与本次试验有关的教学内容。

2)依据试验的内容,对问题进展仔细的分析,搞清晰要解决的问题是什么?给定的条件是什么?要求的结果是什么?

3)依据应用程序的主要功能,考虑通过什么方法来实现,关键问题是使用什么算法,在纸上编写好相关功能的大事代码。

4)预习试验步骤,对试验步骤中提出的一些问题进展思索,并给出初步的解决方案。2.上机试验的过程

1)启动MATLAB集成环境。

2)依据程序功能和事先的预备,在调试运行之前,首先应将工程保存,以防调试过程消失死机,而需从头开头,铺张时间。

3)调试程序,假如消失编译错误,依据程序提示,分析错误缘由进展修改。假如无语法错误,使用多组数据进展测试,分析其输出结果是否与预期的结果相符,假如不符,应检查程序有无写错,算法是否合理,将发觉的错误并逐个修正,并作记录。

4)在程序调试和测试完毕后,再次保存程序。假如条件允许将程序和运行结果打印在纸上,以备检查。

5)根据试验步骤中的要求,对程序作必要的改动,或者增加一些功能等。从而进一步理解MATLAB的操作。

三、试验报告的整理与编写

上机试验完毕后,编写试验报告是软件工程的要求,也是培育科学作风的重要途径,试验报告的主要内容包括:

1.试验目的

试验作为教学的一个重要环节,其目的在于更深入地理解和把握课程教学中的有关根本概念,应用根本技术解决实际问题,从而进一步提高分析问题和解决问题的力量。因此

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论