MATALAB三维曲面拟合及其数学建模模型案例参考

上传人:沈*** 文档编号:128569524 上传时间:2022-08-01 格式:DOC 页数:9 大小:102.50KB
返回 下载 相关 举报
MATALAB三维曲面拟合及其数学建模模型案例参考_第1页
第1页 / 共9页
MATALAB三维曲面拟合及其数学建模模型案例参考_第2页
第2页 / 共9页
MATALAB三维曲面拟合及其数学建模模型案例参考_第3页
第3页 / 共9页
点击查看更多>>
资源描述
三维曲线(非线性)拟合步骤1设定目标函数.(M函数书写)可以是任意的例如:fiinctionf=mydata(a,data)%丫的值目标函数值或者是第三维的,a=a(l),a(2)列向量x=data(l,:);%data是一2维数组,x=xly=data(2/);%data是一2维数组,x=x2H(l)*x+a(2)*x.*y;%这里的a(l),a(2)为目标函数的系数值。f的值相当于ydata的值2然后给出数据xdata和ydata的数据和拟合函数lsqcurvefit例如:xl=1.05001.05201.05301.09001.09901.10201.12401.1420.1.14901.05001.05201.05301.09001.09901.10201.12401.14201.1490;x2=385001.65002.75005.50007.70003.30004.95008.250011.5500.1.65002.75003.85007.70003.30005.50008.250011.55004.9500;ydata=56.200062.800062.200040.800061.400057.500044.500054.8000.53.900064.200062.900064.100063.000062.200064.200063.6000.52.500062.0000;data=xl;x2;%类似于将xlx2整合成一个2维数组。a0=-0.0014,0.07;option=optimset(,MaxFuiiEvals5000);foiniatlong;a,resnoim=lsqcurv-efit(mydata.aOJata,ydata5.,option);yy=niydata(ajata);Tesult=ydaUfyyf(yyydata)%a的值为拟合的目标函数的参数值利用lsqcuivefit进行拟合的它完整的语法形式是:%x,resnormjesiduaLexitflag,outputJambdajacobian=lsqcuivefit(fiin,xO.xdata,ydataJb.ub.options)二维曲线(非线性)拟合步骤l.fiinctionF=mvfun(x,xdata)F=x(l)*xdata.A2+x(2)*sin(xdata)+x(3)*xdata.A3;%可以是任意的2然后给出数据xdata和ydataxdata=3.67.79.34.18.62.81.37.910.05.4;ydata=16.5150.6263.124.7208.59.92.7163.9325.054.3;x0=10,10,10;%初始估计值x4esnorm=lsqcuivefit(inyfiin.xO.xdata,ydata)搜狐博客豆豆快乐吧口志2009-09-01|Matlab画三维图的方法Matlab画三维图的方法Tags:Matlab.三维曲线的画法三维空间曲线要用到plot3函数,这个和plot类似。plot3函数有三个参数,x,y和z轴,比如下面的例子:T=-2:0.01:2;plot3(cos(2*pi*T),sin(2*pi*T),T)如呆安装了SymbolicMathToolbox的话也可以用下面ezlpot3函数的方法:ezplot3Ccos(2*pi*T)Vsm(2*pi*T)VT-22)三维曲面的画法有mesh何surf两种命令来画三维曲面,它们使用的场合不同。前者是当z轴是x和y的显式函数时,后者是x,y,z中某个为其他2个的函数。mesh函数XY=meshgnd(-2:.1:2,-2:.1:2);Z=X.A2-Y.A2;mesh(X,Y.Z)同理用SymbolicMathToolbox可以直接执行ezmesh(X.A2-Y.A2,-22.-22)surf函数在函数不能表示成z=f(x,y)时,需要用surf函数。比如x2+y2+z2=l.先需要用柱面坐标或者球坐标来表示。这里用柱面坐标表示为r2+z2=lx=sqrt(l-z2)cos0,x=sqit(l-z2)sin0;执行matlab指令:theta,Z=meshgiid(0:0.1:2)*pi,(-1:0.1:1);X=sqrt(l-Z.A2).*cos(theta);Y=sqrt(l-乙A2).*siii(theta);surfpCYZ);axissquaie同理用SymbolicMathToolbox可以直接执行ezsurf(,sqrt(l-sA2)*cos(t)7sqrt(1-sA2)*sin(t),s,-1,1,0,2*pi);axisequa常用的一些插值命令命令1iiiterpl功能一维数据插值(表格查找)。该命令对数据点之间计算内插值。它找出一元函数f(x)在中间点的数值。其中函数f(x)由所给数据决定。x:原始数据点Y:原始数据点XI:插值点Y1:插值点格式yi=mteipl(x,Y,xi)%返回插值向量yi,每一元素对应于参量xi,同时由向量x与Y的内插值决定。参量x指定数据Y的点。若Y为一矩阵,则按Y的每列计算。yi是阶数为length(xi)*size(Y,2)的输出矩阵。yi=inteipl(Y,xi)%假定x=l:N,其中N为向量Y的长度,或者为矩阵Y的行数。yi=inteipl(x,Y,xi,method)%用指定的算法计算插值:nearest最近邻点插值,直接完成计算;line如:线性插值(缺省方式),直接完成计算;spline:三次样条函数插值。对于该方法,命令mteipl调用函数spline、ppvakmkpp、unikppo这些命令生成一系列用于分段多项式操作的函数。命令splme用它们执行三次样条函数插值;pchip:分段三次Hemute插值。对于该方法,命令mterp1调用函数pchip,用于对向量x与y执行分段三次内插值。该方法保留单调性与数据的外形;cubic:与pcliip*操作相同;v5cubic,:在MATLAB5.0中的三次插值。对于超出x范围的xi的分量,使用方法nearest、linear、v5cubic的插值算法,相应地将返回NaN。对其他的方法,mterp1将对超出的分量执行外插值算法。yi=mterp1(x,Y,xi,metliod/extrap*)%对于超出x范圉的xi中的分量将执行特殊的外插值法extrapoyi=inteipl(x,Y,xi,method,extrapval)%确定超出x范禺的xi中的分量的外插值extrapvah其值通常取NaN或0。例1>>x=0:10;y=x.*sm(x);>>xx=0:.25:10;yy=mterpl(x,y.xx);>>plot(x,y,kd,xx,yy)o例2>>year=1900:10:2010;>>product=75.99591.972105.711123.203131.669150.697179.323203.212226.505249.633256.344267.893;>>pl995=mterp1(yeaiproduct,1995)>>x=1900:1:2010;>>y=mterp1(yeaLproduct.x/pchip*);>>plot(yeai;product/ox,y)插值结果为:p!995=252.9885命令2iiiterp2功能二维数据内插值(表格查找)格式ZI=inteip2(X,Y乙XI,YI)%返回矩阵ZI,其元素包含对应于参量XI与YI(可以是向量、或同型矩阵)的元素,即-Xi(i,j),yi(i,j)o用户可以输入行向量和列向量Xi与Yi,此时,输出向量Zi与矩阵meshgiid(xi,yi)是同型的。同时取决于由输入矩阵X、Y与Z确定的二维函数Z=f(X,Y)。参量X与Y必须是单调的,且相同的划分格式,就像由命令meshgiid生成的一样。若Xi与Yi中有在X与Y范围之外的点,则相应地返回nan(NotaNumber)。ZI=uiteip2(乙XI,YI)%缺省地,X=l:n、Y=l:m,其中m,n=size(Z)o再按第一种情形进行计算。ZI=mteip2(Z4i)%作n次递归计算,在Z的每两个元素之间插入它们的二维插值,这样,Z的阶数将不断增加。uiteip2(Z)等价于iiiteip2(z,l)oZI=mteip2(X,Y.乙XLYLmethod)%用指定的算法method计算二维插值:linear:双线性插值算法(缺省算法);nearest最临近插值;spluie:三次样条插值;cubic:双三次插值。例3:>>X,Y=meshgnd(-3:.25:3);>>Z=peaks(X,Y);>>XI.YI=meshgnd(-3:.125:3);>>ZZ=inteip2(X,Y;乙XLYI);>>surfl(X,yZ);holdon;>>surfl(XI,YI,ZZ+l5)>>axis(-33-33-520);shadmgflat>>holdoff例4>>yeais=1950:10:1990:>>service=10:10:30;>>wage=150.697199.592187.625179.323195.072250.287203.212179.092322.767226.505153.706426.730249.633120.281598.243;>>w=inteip2(senTice,yeaiSAvage,15J975)插值结果为:190.6288命令3iiiterp3功能三维数据插值(查表)格式VI=mteip3(X.Y,Z,V.XI.YI.ZI)%找出由参量X,Y,Z决定的三元函数V=V(X,Y.Z)在点(XI,YI,ZI)的值。参量XLYLZI是同型阵列或向量。若向量参量XI,YI,ZI是不同长度,不同方向(行或列)的向量,这时输出参量VI与Y1,Y2,Y3为同型矩阵。其中Y1,Y2,Y3为用命令meshgnd(XI.YI,ZI)4成的同型阵列。若插值点(XLYLZI)中有位于点(X,Y,Z)之外的点,则相应地返回特殊变量值NaNoVI=mteip3(V,XI,YLZI)%缺省地,X=1:N,Y=1MZ=1:P,其中,M,N.P=size(V),再按上面的情形计算。VI=inteip3(V,n)%作n次递归计算,在V的每两个元素之间插入它们的三维插值。这样,V的阶数将不断增加。mteip3(V)等价于mteip3(V;l)oVI=inteip3(?,metliod)%用指定的算法method作插值计算:linear:线性插值(缺省算法);cubic:三次插值;splme:三次样条插值;*nearestJ:最邻近插值。说明在所有的算法中,都要求X,Y,Z是单调且有相同的格点形式。当X,Y,Z是等距且单调时,用算法*linear,*cubic,*nearest,,可得到快速插值。例5>>x,y,z,v=flow(20);>>xx,vy,zz=meshgrid(.l:.25:10,-3:.25:3,-3:.25:3);>>w=interp3(x,y,z,v,xx,yv,zz);>>slice(xx,yy,z乙w,69.5.12,-2.2);shadingmterp;coloiniapcool命令4iiiterpft功能用快速Founer算法作一维插值格式y=mterpft(x,n)%返回包含周期函数x在重采样的n个等距的点的插值y。若length(x)=m,且x有采样间隔dx,则新的y的采样间隔dy=dx*m/n。注意的是必须若x为一矩阵,则按x的列进行计算。返回的矩阵y有与x相同的列数,但有n行。y=mteipft(x.n,dim)%沿着指定的方向dim进行计算命令5giiddata功能数据格点格式ZI=griddata(x,y,z,XLYI)%用一.元函数z=f(x,y)的曲面拟合有不规则的数据向量x,y,z。gnddata将返回曲面z在点(XLYI)处的插值。曲面总是经过这些数据点(x,y,z)的。输入参量(XI,YI)通常是规则的格点(像用命令meshgrid生成的一样)。XI可以是一行向量,这时XI指定一有常数列向量的矩阵。类似地,YI可以是一列向量,它指定一有常数行向量的矩阵。XI.YI.ZI=gnddata(x,y,z,xi,yi)%返回的矩阵ZI含义同上,同时,返回的矩阵XI,YI是由行向量xi与列向量yi用命令meshgrid生成的。?=giiddata(?,method)%用指定的算法metliod计算:line如:基于三角形的线性插值(缺省算法);cubic:基于三角形的三次插值;4nearest:最邻近插值法;P4:MATLAB4中的gnddata算法。命令6splme功能三次样条数据插值格式yy=splme(x,y,xx)%对于给定的离散的测量数据x,y(称为断点),要寻找一个三项多项式y=p(x),以逼近每对数据(x,y)点间的曲线。过两点(xi,yi)和(xi+1,yi+1)只能确定一条直线,而通过一点的三次多项式曲线有无穷多条。为使通过中间断点的三次多项式曲线具有唯一性,要增加两个条件(因为三次多项式有4个系数):1. 三次多项式在点(xi,yi)处有:pCi(xi)=pCi(xi):2. 三次多项式在点(xi+1,yi+1)处有:pCi(xi+l)=piC(xi+l):3. p(x)在点(xiy)处的斜率是连续的(为了使三次多项式具有良好的解析性,加上的条件);4. p(x)在点(xi,yi)处的曲率是连续的;对于第一个和最后一个多项式,人为地规定如下条件: .peie(x)=pC2e(x) .pCne(x)=pCne.l(x)上述两个条件称为非结点(not-a-kiiot)条件。综合上述内容,可知对数据拟合的三次样条函数p(x)是一个分段的三次多项式:nnn+1223112p(X)XXXp(X)XXXp(X)XXXp(x)LLLL,其中每段pi(x)都是三次多项式。该命令用三次样条插值计算出由向量x与y确定的一元函数尸f(x)在点xx处的值。若参量y是一矩阵,则以y的每一列和x配对,再分别计算由它们确定的函数在点xx处的值。则yy是一阶数为length(xx)*size(v,2)的矩阵。pp=spline(x,y)%返回由向量x与y确定的分段样条多项式的系数矩阵pp,它可用于命令ppvaRuiuiikpp的计算。例6对离散地分布在v=exp(x)sin(x)函数曲线上的数据点进行样条插值计算:>>x=024581212.817.219.920;y=exp(x).*sin(x);>>xx=0:.25:20;>>yy=spline(xyxx);>>plot(x,y;oxx,yy)命令7iiiterpn功能n维数据插值(查表)格式VI=inteipn(Xl,X2?JiLV,Yl,Y2,?,Yn)%返回由参量Xl,X2,-,Xii,V确定的n元函数V=V(Xl,X2,-,Xn)在点(Y1,Y2,Yn)处的插值。参量Y1,Y2,Yn是同型的矩阵或向量。若Y1,Y2,Yn是向量,则可以是不同长度,不同方向(行或列)的向量。它们将通过命令ildg门d生成同型的矩阵,再作计算。若点(Y1、Y2,:Yn)中有位于点(XIA2Xn)之外的点,则相应地返回特殊变量NaNoVI=inteipn(VYl,Y2,?,Yn)%缺省地,Xl=l:size(VJ),X2=l:size(V2),,Xii=l:size(V,n),再按上面的情形计算。VI=inteipn(V,ntunes)%作ntunes次递归计算,在V的每两个元素之间插入它们的n维插值。这样,V的阶数将不断增加。iiiteipn(V)等价于Hiteipn(V;l)oVI=inteipn(?,metliod)%用指定的算法method计算:linear:线性插值(缺省算法);cubic:三次插值;spline:三次样条插值法;nearest:最邻近插值算法。命令8meshgrid功能生成用于画三维图形的矩阵数据。格式X.Y=meshgiid(x,y)将由向量x,y(可以是不同方向的)指定的区域niin(x),niax(x),min(v),inax(v)用直线x=x(i),v=y(j)(Jength(x),尸l,2,length(y)进行划分。这样,得到了length(x)*length(y)个点,这些点的横坐标用矩阵X表示,X的每个行向量与向量x相同;这些点的纵坐标用矩阵Y表示,Y的每个列向量与向量y相同。其中X,Y可用于计算二元函数z=f(x,y)与三维图形中xy平面矩形定义域的划分或曲面作图。X,Y=meshgrid(x)%等价于X,Y=meshgnd(x.x)oX,Y.Z=meshgrid(x,y,z)%生成三维阵列X,YZ,用于计算三元函数v=f(x,y,z)或三维容积图。例7X.Y=meshgnd(l:340:14)计算结果为:x=123123123123123Y=10101011111112 121213 131314 1414命令9ndgnd功能生成用于多维函数计算或多维插值用的阵列格式Xl,X2,-,Xii=ndgnd(xl,x2,-,xii)%把通过向量xl,x2,x3-,xii指定的区域转换为数组xl,x2,x3,xn。这样,得到了lengtli(xl)*length(x2)*length(xn)个点,这些点的第一维坐标用矩阵XI表示,XI的每个第一维向量与向量xl相同;这些点的第二维坐标用矩阵X2表示,X2的每个第二维向量与向量X2相同;如此等等。其中Xl,X2,-,Xii可用于计算多元函数y=f(xl,x2,-.xii)以及多维插值命令用到的阵列。X1.X2/-Xn=ndgiid(x)%等价于X1.X2/=ndgnd(x,x/-,x)命令10table1功能一维查表格式Y=tablel(TAB,X0)%返回用表格矩阵TAB中的行线性插值元素,对X0(TAB的第一列查找X0)进行线性插值得到的结果Y。矩阵TAB是第一列包含关键值,而其他列包含数据的矩阵。X0中的每一元素将相应地返回一线性插值行向量。矩阵TAB的第一列必须是单调的。例8>>tab=(1:4),liilb(4)>>y=table1(tab,12.33.64)查表结果为:tab=1.00001.00000.50000.33330.25002.00000.50000.33330.25000.20003.00000.33330.25000.20000.16674.00000.25000.20000.16670.1429WhniingiTABLEIisobsoleteandwillberemovedinfutureversions.UseINTERP1orINTERPIQ
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!