MATLAB总结与上机指南Word格式.docx
《MATLAB总结与上机指南Word格式.docx》由会员分享,可在线阅读,更多相关《MATLAB总结与上机指南Word格式.docx(8页珍藏版)》请在冰豆网上搜索。
[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).),即解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).),即在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其中:
函数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应用》
上机指导书
黑龙江工程学院测绘工程系
20xx年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.实验目的
实验作为教学的一个重要环节,其目的在于更深入地理解和掌握课程教学中的有关基本概念,应用基本技术解决实际问题,从而进一步提高分析问题和解决问题的能力。
因此,当我们着手做一个实验的时候,必须明确实验的目的,以保证达到课程所指定的基本要求。
在写实验报告时,要进一步确认是否达到了预期的目的。
2.实验内容
实验的目的是通过解决一些具体问题来达到的。
在书中,每一部分都安排了实验题目,根据教学安排、进度、实验条件、可提供的机时、学生的基础等因素,可以选择其中的几个或全部。
因此,在实验报告中,实验内容是指本次实验中实际完成的内容。
在每一个实验题目中,一般都提出一些具体要求,其中有些具体要求是为了达到实验目的而提出的,不仅有具体的实验题目,还应包括具体要求。
3.程序设计说明
可包括算法设计思路,必要的流程图,界面设计说明、使用变量的说明等。
4.经调试正确的源程序
MATLAB的源程序包括界面设计和代码。
程序设计的产品是程序,它应与算法或流程图相一致,要与用户界面设计一致。
程序要有具有易读性,符合结构化原则。
5.程序的运行情况(包括对不同测试数据的运行结果)
程序运行结果一般是输出语句所输出的结果。
对于不同的输入,其输出的结果是不同的。
因此,在输出结果之前一般还应注明输入的数据,以便对输出结果进行分析和比较。
在程序的运行中,还必须用各种不同情况的数据进行调试,以检查程序能否正常运行。
因为,有时程序对某些情况是可以正常运行的,而对某些特殊情况的数据可能会出现运行出错或死机,通过各种数据的调试,尽量做到程序不会出问题。
6.分析和体会实验中碰到的问题及解决方法
这是实验报告中最重要的一项,也是最容易忽视的一项。
实验过程中大量的工作是程序调试,在调试过程中会遇到各种各样的问题,每解决一个问题就能积累一点经验,提高自己的编程能力。
因此,对实验的总结,最主要的是程序调试经验的总结。
调试分析也包括对结果的分析。
体会主要是指通过本次实验是否达到了实验目的,有哪些基本概念得到了澄清,碰到了哪些以前没有见到的问题,最后采用什么方法得到解决等。