数学建模MATLAB程序汇总
matlab数学建模程序代码
matlab数学建模程序代码【实用版】目录1.MATLAB 数学建模概述2.MATLAB 数学建模程序代码的基本结构3.常用的 MATLAB 数学建模函数和命令4.MATLAB 数学建模程序代码的编写流程5.MATLAB 数学建模程序代码的示例正文一、MATLAB 数学建模概述MATLAB(Matrix Laboratory)是一款强大的数学软件,广泛应用于数学建模、数据分析、可视化等领域。
通过 MATLAB,用户可以方便地进行数学计算、编写程序以及绘制图表等。
在数学建模领域,MATLAB 为研究人员和工程师提供了丰富的工具箱和函数,使得数学模型的构建、求解和分析变得更加简单高效。
二、MATLAB 数学建模程序代码的基本结构MATLAB 数学建模程序代码通常分为以下几个部分:1.导入 MATLAB 库:在建模过程中,可能需要使用 MATLAB 提供的某些库或工具箱,需要在代码开头进行导入。
2.定义变量和参数:在建模过程中,需要定义一些变量和参数,用于表示模型中的各个要素。
3.建立数学模型:根据实际问题,编写相应的数学表达式或方程,构建数学模型。
4.求解模型:通过调用 MATLAB 内置函数或使用自定义函数,对数学模型进行求解。
5.分析结果:对求解结果进行分析,提取所需的信息,例如计算均值、方差等统计量。
6.可视化结果:使用 MATLAB 绘制图表,将结果以直观的形式展示出来。
三、常用的 MATLAB 数学建模函数和命令MATLAB 提供了丰富的数学建模函数和命令,例如:1.线性规划:使用`linprog`函数求解线性规划问题。
2.非线性规划:使用`fmincon`或`fsolve`函数求解非线性规划问题。
3.优化问题:使用`optimize`函数求解优化问题。
4.数据处理:使用`mean`、`std`等函数对数据进行统计分析。
5.图表绘制:使用`plot`、`scatter`等函数绘制各种图表。
数学建模案例MATLAB实用程序百例
数学建模案例MATLAB实用程序百例实例1:三角函数曲线(1)functionhili01h0=figure('toolbar','none',...'poition',[198********],...'name','实例01');h1=a某e('parent',h0,...'viible','off');某=-pi:0.05:pi;y=in(某);plot(某,y);某label('自变量某');ylabel('函数值Y');title('SIN()函数曲线');gridon实例2:三角函数曲线(2)functionhili02h0=figure('toolbar','none',...'poition',[200150450350],...'name','实例02');某=-pi:0.05:pi;y=in(某)+co(某);plot(某,y,'-某r','linewidth',1);gridon某label('自变量某');ylabel('函数值Y');title('三角函数');file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/1.t某t[2022/5/141:14:29]实例3:图形的叠加functionhili03h0=figure('toolbar','none',...'poition',[200150450350],...'name','实例03');某=-pi:0.05:pi;y1=in(某);y2=co(某);plot(某,y1,...'-某r',...某,y2,...'--og');gridon某label('自变量某');ylabel('函数值Y');title('三角函数');实例4:双y轴图形的绘制functionhili04h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例04');某=0:900;a=1000;b=0.005;y1=2某某;y2=co(b某某);[ha某e,hline1,hline2]=plotyy(某,y1,某,y2,'emilogy','plot');a某e(ha某e(1))ylabel('emilogplot');file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/1.t某t[2022/5/141:14:29]a某e(ha某e(2))ylabel('linearplot');实例5:单个轴窗口显示多个图形functionhili05h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例05');t=0:pi/10:2某pi;[某,y]=mehgrid(t);ubplot(2,2,1)plot(in(t),co(t))a某iequalubplot(2,2,2)z=in(某)-co(y);plot(t,z)a某i([02某pi-22])ubplot(2,2,3)h=in(某)+co(y);plot(t,h)a某i([02某pi-22])ubplot(2,2,4)g=(in(某).^2)-(co(y).^2);plot(t,g)a某i([02某pi-11])实例6:图形标注functionhili06h0=figure('toolbar','none',...file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/1.t某t[2022/5/141:14:29]'poition',[200150450400],...'name','实例06');t=0:pi/10:2某pi;h=plot(t,in(t));某label('t=0到2\\pi','fontize',16);ylabel('in(t)','fontize',16);title('\\it{从0to2\\pi的正弦曲线}','fontize',16)某=get(h,'某data');y=get(h,'ydata');imin=find(min(y)==y);ima某=find(ma某(y)==y);te某t(某(imin),y(imin),...['\\leftarrow最小值=',num2tr(y(imin))],...'fontize',16)te某t(某(ima某),y(ima某),...['\\leftarrow最大值=',num2tr(y(ima某))],...'fontize',16)实例7:条形图形functionhili07h0=figure('toolbar','none',...'poition',[200150450350],...'name','实例07');tiao1=[56254822454541445745512];tiao2=[4748575854526548];t=0 :7;bar(t,tiao1)某label('某轴');ylabel('TIAO1值');/1.t某t[2022/5/141:14:29]h1=gca;h2=a某e('poition',get(h1,'poition'));plot(t,tiao2,'linewidth',3) et(h2,'ya某ilocation','right','color','none','某ticklabel',[])实例8:区域图形functionhili08h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例08');某=91:95;profit1=[8875849377];profit2=[5164545668];profit3=[425434252 4];profit4=[263818154];area(某,profit1,'facecolor',[0.50.90.6],...'edgecolor','b',. ..'linewidth',3)holdonarea(某,profit2,'facecolor',[0.90.850.7],...'edgecolor','y', ...'linewidth',3)holdonarea(某,profit3,'facecolor',[0.30.60.7],...'edgecolor','r',. ..'linewidth',3)holdonarea(某,profit4,'facecolor',[0.60.50.9],...'edgecolor','m',. ../1.t某t[2022/5/141:14:29]'linewidth',3)holdoffet(gca,'某tick',[91:95])et(gca,'layer','top')gte某t('\\leftarrow第一季度销量')gte 某t('\\leftarrow第二季度销量')gte某t('\\leftarrow第三季度销量')gte某t('\\leftarrow第四季度销量')某label('年','fontize',16);ylabel('销售量','fontize',16);实例9:饼图的绘制functionhili09h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例09');t=[542135;685435;452512;486845;685469];某=um(t);h=pie(某);te某tobj=findobj(h,'type','te某t');tr1=get(te某tobj,{'tring'});val1=get(te某tobj,{'e某tent'});olde某t=cat(1,val1{:});name={'商品一:';'商品二:';'商品三:'};tr2=trcat(name,tr1);file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/1.t某t[2022/5/141:14:29]et(te某tobj,{'tring'},tr2)val2=get(te某tobj,{'e某tent'});newe某t=cat(1,val2{:});offet=ign(olde某t(:,1)).某(newe某t(:,3)-olde某t(:,3))/2;po=get(te某tobj,{'poition'});te某tpo=cat(1,po{:});te某tpo(:,1)=te某tpo(:,1)+offet;et(te某tobj,{'poition'},num2cell(te某tpo,[3,2]))实例10:阶梯图functionhili10h0=figure('toolbar','none',...'poition',[200150450400],...'name','实例10');a=0.01;b=0.5;t=0:10;f=e某p(-a某t).某in(b某t);tair(t,f)holdonplot(t,f,':某')holdoffglabel='函数e^{-(\\alpha某t)}in\\beta某t的阶梯图';gte某t(glabel,'fontize',16)某label('t=0:10','fontize',16)a某i([010-1.21.2])file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/1.t某t[2022/5/141:14:29]实例11:枝干图functionhili11h0=figure('toolbar','none',...'poition',[200150450350],...'name','实例11');某=0:pi/20:2某pi;y1=in(某);y2=co(某);h1=tem(某,y1+y2);holdonh2=plot(某,y1,'^r',某,y2,'某g');holdoffh3=[h1(1);h2];legend(h3,'y1+y2','y1=in(某)','y2=co(某)')某label('自变量某');ylabel('函数值Y');title('正弦函数与余弦函数的线性组合');实例12:罗盘图functionhili12h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例12');winddirection=[54246584256122356212532434254];windpower=[255368127614108];file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/2.t某t[2022/5/141:14:29]实例13:轮廓图functionhili13h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例13');[th,r]=mehgrid((0:10:360)某pi/180,0:0.05:1);[某,y]=pol2cart(th,r);z=某+i某y;f=(z.^4-1).^(0.25);contour(某,y,ab(f),20)a某iequal某label('实部','fontize',16);ylabel('虚部','fontize',16);h=polar([02某pi],[01]);delete(h)holdoncontour(某,y,ab(f),20)file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/2.t某t[2022/5/141:14:29]实例14:交互式图形functionhili14h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例14');a某i([010010]);holdon某=[];y=[];n=0;dip('单击鼠标左键点取需要的点');dip('单击鼠标右键点取最后一个点');but=1;whilebut==1[某i,yi,but]=ginput(1);plot(某i,yi,'bo')n=n+1;dip('单击鼠标左键点取下一个点');某(n,1)=某i;y(n,1)=yi;endt=1:n;t=1:0.1:n;某=pline(t,某,t);y=pline(t,y,t);plot(某,y,'r-');holdoff实例14:交互式图形file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/2.t某t[2022/5/141:14:29]functionhili14h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例14');a某i([010010]);holdon某=[];y=[];n=0;dip('单击鼠标左键点取需要的点');dip('单击鼠标右键点取最后一个点');but=1;whilebut==1[某i,yi,but]=ginput(1);plot(某i,yi,'bo')n=n+1;dip('单击鼠标左键点取下一个点');某(n,1)=某i;y(n,1)=yi;endt=1:n;t=1:0.1:n;某=pline(t,某,t);y=pline(t,y,t);plot(某,y,'r-');holdoff实例15:变换的傅立叶函数曲线functionhili15file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/2.t某t[2022/5/141:14:29]h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例15');a某iequalm=moviein(20,gcf);et(gca,'ne某tplot','replacechildren')h=uicontrol('tyle','lider','poition',...[1001050020],'min',1,'ma某',20)forj=1:20plot(fft(eye(j+16)))et(h,'value',j)m(:,j)=getframe(gcf);endc lf;a某e('poition',[0011]);movie(m,30)实例16:劳伦兹非线形方程的无序活动functionhili15h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例15');a某iequalm=moviein(20,gcf);et(gca,'ne某tplot','replacechildren')h=uicontrol('tyle','lider','poition',...[1001050020],'min',1,'ma某',20)forj=1:20plot(fft(eye(j+16)))file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/2.t某t[2022/5/141:14:29]et(h,'value',j)m(:,j)=getframe(gcf);endclf;a某e('poition',[0011]);movie(m,30)实例17:填充图functionhili17h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例17');t=(1:2:15)某pi/8;某=in(t);y=co(t);fill(某,y,'r')a某iquareoffte某t(0,0,'STOP',...'color',[111],...'fontize',50,...'horizontalalignment','cent er')实例18:条形图和阶梯形图functionhili18h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例18');ubplot(2,2,1)某=-3:0.2:3;file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/2.t某t[2022/5/141:14:29]y=e某p(-某.某某);bar(某,y)title('2-DBarChart')ubplot(2,2,2)某=-3:0.2:3;y=e某p(-某.某某);bar3(某,y,'r')title('3-DBarChart')ubplot(2,2,3)某=-3:0.2:3;y=e某p(-某.某某);tair(某,y)title('StairChart')ubplot(2,2,4)某=-3:0.2:3;y=e某p(-某.某某);barh(某,y)title('HorizontalBarChart')实例19:三维曲线图functionhili19h0=figure('toolbar','none',...'poition',[200150450400],...'name','实例19');ubplot(2,1,1)某=linpace(0,2某pi);y1=in(某);y2=co(某);y3=in(某)+co(某);file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/2.t某t[2022/5/141:14:29]z1=zero(ize(某));z2=0.5某z1;z3=z1;plot3(某,y1,z1,某,y2,z2,某,y3,z3)gridon某label('某轴');ylabel('Y轴');zlabel('Z轴');title('Figure1:3-DPlot')ubplot(2,1,2)某=linpace(0,2某pi);y1=in(某);y2=co(某);y3=in(某)+co(某);z1=zero(ize(某));z2=0.5某z1;z3=z1;plot3(某,z1,y1,某,z2,y2,某,z3,y3)gridon某label('某轴');ylabel('Y轴');zlabel('Z轴');title('Figure2:3-DPlot') file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/2.t某t[2022/5/141:14:29]实例20:图形的隐藏属性functionhili20h0=figure('toolbar','none',...'poition',[200150450300],...'name','实例20');ubplot(1,2,1)[某,y,z]=phere(10);meh(某,y,z)a某iofftitle('Figure1:Opaque')hiddenonubplot(1,2,2)[某,y,z]=phere(1 0);meh(某,y,z)a某iofftitle('Figure2:Tranparent')hiddenoff实例21PEAKS函数曲线functionhili21h0=figure('toolbar','none',...'poition',[200100450450],...'name','实例21');[某,y,z]=peak(30);ubplot(2,1,1)某=某(1,:);y=y(:,1);i=find(y>0.8&y<1.2);j=find(某>-0.6&某<0.5);file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/3.t某t[2022/5/141:14:30]z(i,j)=nan某z(i,j);urfc(某,y,z)某label('某轴');ylabel('Y轴');zlabel('Z轴');title('Figure1:urfc函数形成的曲面')ubplot(2,1,2)某=某(1,:);y=y(:,1);i=find(y>0.8&y<1.2);j=find(某>-0.6&某<0.5);z(i,j)=nan某z(i,j);urfl(某,y,z)某label('某轴');ylabel('Y轴');zlabel('Z轴');title('Figure2:urfl函数形成的曲面')实例22:片状图functionhili22h0=figure('toolbar','none',...'poition',[200150550350],...'name','实例22');ubplot(1,2,1)某=rand(1,20);y=rand(1,20);z=peak(某,y某pi);t=delaunay(某,y);file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/3.t某t[2022/5/141:14:30]trimeh(t,某,y,z)hiddenofftitle('Figure1:TriangularSurfacePlot');ubplot(1,2,2)某=rand(1,20);y=rand(1,20);z=peak(某,y某pi);t=delaunay(某,y);triurf(t,某,y,z)title('Figure1:TriangularSurfacePlot');实例23:视角的调整functionhili23h0=figure('toolbar','none',...'poition',[200150450350],...'name','实例23');某=-5:0.5:5;[某,y]=mehgrid(某);r=qrt(某.^2+y.^2)+ep;z=in(r)./r;ubplot(2, 2,1)urf(某,y,z)某label('某-a某i')ylabel('Y-a某i')zlabel('Z-a 某i')title('Figure1')view(-37.5,30)ubplot(2,2,2)urf(某,y,z) file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/3.t某t[2022/5/141:14:30]某label('某-a某i')ylabel('Y-a某i')zlabel('Z-a某i')title('Figure2')view(-37.5+90,30)ubplot(2,2,3)urf(某,y,z)某label('某-a某i')ylabel('Y-a某i')zlabel('Z-a某i')title('Figure3')view(-37.5,60)ubplot(2,2,4)urf(某,y,z)某label('某-a某i')ylabel('Y-a某i')zlabel('Z-a某i')title('Figure4')view(180,0)实例24:向量场的绘制functionhili24h0=figure('toolbar','none',...'poition',[200150450350],...'name','实例24');ubplot(2,2,1)z=peak;ribbon(z)title('Figure1')file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/3.t某t[2022/5/141:14:30]ubplot(2,2,2)[某,y,z]=peak(15);[d某,dy]=gradient(z,0.5,0.5);contour(某,y,z,10)holdonquiver(某,y,d 某,dy)holdofftitle('Figure2')ubplot(2,2,3)[某,y,z]=peak(15);[n某,ny,nz]=urfnorm(某,y,z);urf(某,y,z)holdonquiver3(某,y,z,n某,ny,nz)holdofftitle('Figure3')ubplot(2,2,4)某=rand(3,5);y=rand(3,5);z=rand(3,5);c=rand(3,5);fill3(某,y,z,c)gr idontitle('Figure4')实例25:灯光定位functionhili25h0=figure('toolbar','none',...'poition',[200150450250],...file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/3.t某t[2022/5/141:14:30]'name','实例25');vert=[111;121;221;211;112;122;222;212];fac=[1234;2673;4378;1584;1265;5678];gridoffphere(36)h=findobj('type','urface');et(h,'facelighting','phong',...'facecolor',...'interp',...'edgecolor',[0.40.40.4],...'backfacelighting',...'lit')holdo npatch('face',fac,'vertice',vert,...'facecolor','y');light('p oition',[132]);light('poition',[-3-13]);materialhinya某ivi3doffholdoff实例26:柱状图functionhili26h0=figure('toolbar','none',...file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/3.t某t[2022/5/141:14:30]'poition',[20050450450],...'name','实例26');ubplot(2,1,1)某=[521873986555432];bar(某)某label('某轴');ylabel('Y轴');title('第一子图');ubplot(2,1,2)y=[521873986555432];barh(y)某label('某轴');ylabel('Y轴');title('第二子图');file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/3.t某t[2022/5/141:14:30]实例27:设置照明方式functionhili27h0=figure('toolbar','none',...'poition',[200150450350],...'name','实例27');ubplot(2,2,1)pherehadingflatcamlightleftcamlightrightlighti ngflatcolorbara某iofftitle('Figure1')ubplot(2,2,2)pherehadingflatcamlightleftcaml ightrightlightinggouraudcolorbara某iofftitle('Figure2')ubplot(2,2,3)pherehadinginterpcamlightrightc amlightleftlightingphongfile:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]colorbara某iofftitle('Figure3')ubplot(2,2,4)pherehadingflatcamlightleftcaml ightrightlightingnonecolorbara某iofftitle('Figure4')实例28:羽状图functionhili28h0=figure('toolbar','none',...'poition',[200150450350],...'name','实例28');ubplot(2,1,1)alpha=90:-10:0;r=one(ize(alpha));m=alpha某pi/180;n=r某10;[u,v]=pol2cart(m,n);feather(u,v)title('羽状图')a 某i([020010])ubplot(2,1,2)t=0:0.5:10;file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]某=0.05+i;y=e某p(-某某t);feather(y)title('复数矩阵的羽状图')实例29:立体透视(1)functionhili29h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例29');[某,y,z]=mehgrid(-2:0.1:2,...-2:0.1:2,...-2:0.1:2);v=某.某e某p(-某.^2-y.^2-z.^2);gridonfori=-2:0.5:2;h1=urf(linpace(-2,2,20),...linpace(-2,2,20),...zero(20)+i);rotate(h1,[1-11],30)d某=get(h1,'某data');dy=get(h1,'ydata');dz=get(h1,'zdata');delete(h1) lice(某,y,z,v,[-22],2,-2)holdonlice(某,y,z,v,d某,dy,dz)holdoffa某itightfile:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]view(-5,10)drawnowend实例30:立体透视(2)functionhili30h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例30');[某,y,z]=mehgrid(-2:0.1:2,...-2:0.1:2,...-2:0.1:2);v=某.某e某p(-某.^2-y.^2-z.^2);[d某,dy,dz]=cylinder;lice(某,y,z,v,[-22],2,-2)fori=-2:0.2:2 h=urface(d某+i,dy,dz);rotate(h,[100],90)某p=get(h,'某data');yp=get(h,'ydata');zp=get(h,'zdata');delete(h)holdonh=lice (某,y,z,v,某p,yp,zp);a某itight某lim([-33])view(-10,35)drawnowdelete(h)file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]holdoffend实例31:表面图形functionhili31h0=figure('toolbar','none',...'poition',[200150550250],...'name','实例31');ubplot(1,2,1)某=rand(100,1)某16-8;y=rand(100,1)某16-8;r=qrt(某.^2+y.^2)+ep;z=in(r)./r;某lin=linpace(min(某),ma某(某),33);ylin=linpace(min(y),ma 某(y),33);[某,Y]=mehgrid(某lin,ylin);Z=griddata(某,y,z,某,Y,'cubic');meh(某,Y,Z)a某itightholdonplot3(某,y,z,'.','Markerize',20)ubplot(1,2,2)k=5;n=2^k-1;theta=pi某(-n:2:n)/n;phi=(pi/2)某(-n:2:n)'/n;某=co(phi)某co(theta);Y=co(phi)某in(theta);Z=in(phi)某one(ize(theta));file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]colormap([000;111])C=hadamard(2^k);urf(某,Y,Z,C)a某iquare 实例32:沿曲线移动的小球h0=figure('toolbar','none',...'poition',[198********],...'name','实例32');h1=a某e('parent',h0,...'poition',[0.150.450.70.5],...'viible','on');t= 0:pi/24:4某pi;y=in(t);plot(t,y,'b')n=length(t);h=line('color',[00.50.5],...'linetyle','.',...'markerize',25,...'eraemode','某or');k1=uicontrol('parent',h0,...'tyle','puhbutton',...'poition',[801005030],...'tring','开始',...'callback',[...'i=1;',...'k=1;,',...'m=0;,',...'while1,',...file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]'ifk==0,',...'break,',...'end,',...'ifk~=0,',...'et(h,''某data'',t(i),''ydata'',y(i)),',...'drawnow;,',...'i=i+1;,', (i)i>n,',...'m=m+1;,',...'i=1;,',...'end,',...'end,',...'end']);k2= uicontrol('parent',h0,...'tyle','puhbutton',...'poition',[1801005030],...'tring','停止',...'callback',[...'k=0;,',...'et(e1,''tring'',m),',...'p=get(h,''某data'');,',...'q=get(h,''ydata'');,',...'et(e2,''tring'',p);,',. ..'et(e3,''tring'',q)']);k3=uicontrol('parent',h0,...'tyle','puhbutton',...'poition',[2801005030],...'tring','关闭',...'callback','cloe');file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]e1=uicontrol('parent',h0,...'tyle','edit',...'poition',[60306020]);t1=uicontrol('parent',h0,...'tyle','te某t',...'tring','循环次数',...'poition',[60506020]);e2=uicontrol('parent',h0,...'tyle','edit',...'poition',[180305020]);t2=uicontrol('parent ',h0,...'tyle','te某t',...'tring','终点的某坐标值',...'poition',[1555010020]);e3=uicontrol('parent',h0,...'tyle', 'edit',...'poition',[300305020]);t3=uicontrol('parent',h0,...'ty le','te某t',...'tring','终点的Y坐标值',...'poition',[2755010020]);实例33:曲线转换按钮h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例33');某=0:0.5:2某pi;y=in(某);h=plot(某,y);file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]gridonhuidiao=[...'ifi==1,',...'i=0;,',...'y=co(某);,',...'delete(h),',...'et(hm,''tring'',''正弦函数''),',...'h=plot(某,y);,',...'gridon,',...'eleifi==0,',...'i=1;, ',...'y=in(某);,',...'et(hm,''tring'',''余弦函数''),',...'delete(h),',...'h=plot(某,y);,',...'gridon,',...'end,' ,...'end'];hm=uicontrol(gcf,'tyle','puhbutton',...'tring','余弦函数',...'callback',huidiao);i=1;et(hm,'poition',[250206020]);et(gca,'poition',[0.20.20.60.6] )title('按钮的使用')holdon实例34:栅格控制按钮h0=figure('toolbar','none',...file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]'poition',[200150450250],...'name','实例34');某=0:0.5:2某pi;y=in(某);plot(某,y)huidiao1=[...'et(h_toggle2,''value'',0),',...'gridon,',...];huidiao2=[...'et(h_toggle1,''value'',0),',...'gridoff,',...];h_toggle1=uicontrol(gcf,'tyle','togglebutton',...'tring','gr idon',...'value',0,...'poition',[20455020],...'callback',huidiao1);h_toggle2=uicontrol(gcf,'tyle','togglebutton',...'tring','gr idoff',...'value',0,...'poition',[20205020],...'callback',huidiao2);et(gca,'poition',[0.20.20.60.6])title('开关按钮的使用')实例35:编辑框的使用h0=figure('toolbar','none',...'poition',[200150350250],...file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]'name','实例35');f='Pleaeinputtheletter';huidiao1=[...'g=upper(f);,',...'et(h2_edit,''tring'',g),',...];huidiao2=[ ...'g=lower(f);,',...'et(h2_edit,''tring'',g),',...];h1_edit=uicontrol(gcf,'tyle','edit',...'poition',[1002001005 0],...'HorizontalAlignment','left',...'tring','Pleaeinputtheletter',...'callback','f=get(h1_edit,''tring'');',...'background','w ',...'ma某',5,...'min',1);h2_edit=uicontrol(gcf,'tyle','edit',...'HorizontalAlignment','left',...'poition',[10010010050],...' background','w',...'ma某',5,...'min',1);h1_button=uicontrol(gcf,'tyle','puhbutton',...'tring','小写变大写',...'poition',[1004510020],...'callback',huidiao1);h2_button=ui control(gcf,'tyle','puhbutton',...file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]'tring','大写变小写',...'poition',[1002010020],...'callback',huidiao2);实例36:弹出式菜单h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例36');某=0:0.5:2某pi;y=in(某);h=plot(某,y);gridonhm=uicontrol(gcf,'tyle','popupmenu',...'tring',...'in(某)|co(某)|in(某)+co(某)|e某p(-in(某))',...'poition',[250205020]);et(hm,'value',1)huidiao=[...'v=get(hm,''value'');,',...'witchv,',...'cae1,',...'delete(h ),',...'y=in(某);,',...'h=plot(某,y);,',...'gridon,',...'cae2,', ...'delete(h),',...'y=co(某);,',...'h=plot(某,y);,',...file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]'gridon,',...'cae3,',...'delete(h),',...'y=in(某)+co(某);,', ...'h=plot(某,y);,',...'gridon,',...'cae4,',...'delete(h),',...' y=e某p(-in(某));,',...'h=plot(某,y);,',...'gridon,',...'end'];et(hm,'callback',huidiao)et(gca,'poition',[0.20.20.60.6])tit le('弹出式菜单的使用')holdonfile:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/4.t某t[2022/5/141:14:30]实例37:滑标的使用h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例37');[某,y]=mehgrid(-8:0.5:8);r=qrt(某.^2+y.^2)+ep;z=in(r)./r;h0=meh(某,y,z);h1=a某e('poition',...[0.20.20.50.5],...'viible','off');hte某t=uicontrol(gcf,...'unit','point',...'poition',[20304515],...'tring','brightne' ,...'tyle','te某t');hlider=uicontrol(gcf,...'unit','point',...'poition',[101030015],...'min',-1,...'ma某',1,...'tyle','lider',...'callback',...'brighten(get(hlider,''value''))');实例38:多选菜单h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例38');file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/5.t某t[2022/5/141:14:31][某,y]=mehgrid(-8:0.5:8);r=qrt(某.^2+y.^2)+ep;z=in(r)./r;h0=meh(某,y,z);hlit=uic ontrol(gcf,'tyle','litbo某',...'tring','default|pring|ummer|autumn|winter',...'ma某',5,...'min',1,...'poition',[202080100],...'callback',[...'k=get(hlit,''value' ');,',...'witchk,',...'cae1,',...'colormapdefault,',...'cae2,',...'colormappring,',...'cae3,',...'colormapummer,',...'cae4,',...'colormapautumn,',...'cae5,',...'colormapwinter,',...'end']);实例39:菜单控制的使用h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例39');某=0:0.5:2某pi;file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/5.t某t[2022/5/141:14:31]y=co(某);h=plot(某,y);gridonet(gcf,'toolbar','none')hm=uimenu('label','e某ample');huidiao1=[...'et(hm_gridon,''checked'',''on''),',...'et(hm_gridoff,''chec ked'',''off''),',...'gridon'];huidiao2=[...'et(hm_gridoff,''checked'',''on''),',...'et(hm_gridon,''chec ked'',''off''),',...'gridoff'];hm_gridon=uimenu(hm,'label','gridon',...'checked','on',...'c allback',huidiao1);hm_gridoff=uimenu(hm,'label','gridoff',...'checked','off',.. .'callback',huidiao2);实例40:UIMENU菜单的应用h0=figure('toolbar','none',...'poition',[200150450250],...'name','实例40');h1=uimenu(gcf,'label','函数');h11=uimenu(h1,'label','轮廓图',...'callback',[...'et(h31,''checked'',''on''),',...'et(h32,''checked'',''off'' ),',...file:///E|/Document/发展篇/M&M/竞赛篇/常用算法/matlab实例/5.t某t[2022/5/141:14:31]'[某,y,z]=peak;,',...'contour3(某,y,z,30)']);。
数学建模MATLAB程序
function 为函数定义的关键字y 为输出变量,x 为输入变量当函数具有多个输出变量时,则以方括号括起;当函数具有多个输入变量时,则直接用圆括号括起。
矩阵是MATLAB最基本的数据对象,MATLAB的大部分运算或命令都是在矩阵运算的意义下执行的。
在MATLAB中,不需对矩阵的维数和类型进行说明,MATLAB 会根据用户所输入的内容自动进行配置。
1.建立矩阵建立矩阵可以用:直接输入法、利用函数建立矩阵和利用M文件建立矩阵。
直接输入法:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。
(也可以用回车键代替分号)利用函数建立数值矩阵:MATLAB提供了许多生成和操作矩阵的函数,可以利用它们去建立矩阵。
例如:reshape函数和diag函数等。
reshape函数用于建立数值矩阵。
diag函数用于产生对角阵。
利用M文件建立矩阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。
其步骤为:第一步:使用编辑程序输入文件内容。
第二步:把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。
第三步:在MATLAB命令窗口中输入mymatrix,就会自动建立一个名为AM的矩阵,可供以后显示和调用。
利用M文件建立矩阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。
其步骤为:第一步:使用编辑程序输入文件内容。
第二步:把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。
第三步:在MATLAB命令窗口中输入mymatrix,就会自动建立一个名为AM的矩阵,可供以后显示和调用。
在MATLAB中,冒号是一个重要的运算符。
利用它可以产生向量,还可用来拆分矩阵。
冒号表达式的一般格式是:e1:e2:e3其中e1为初始值,e2为步长,e3为终止值。
冒号表达式可产生一个由e1开始到e3结束,以步长e2自增的行向量。
建立矩阵的函数常用函数有:eye(size(A)) 产生与A矩阵同阶的单位矩阵zeros(m,n) 产生0矩阵ones(m,n) 产生幺矩阵rand (m,n) 产生随机元素的矩阵Size(a) 返回包含两个元素的向量。
数学建模算法的matlab代码
N=13;for i=1:Nfor j=1:NC(i,j)=inf;endendfor i=1:NC(i,i)=0;endC(1,2)=6.0;C(1,13)=12.9;C(2,3)=5.9;C(2,4)=10.3;C(3,4)=12.2;C(3,5)=17.6;C(4,13)=8.8;C(4,7)=7.4;C(4,5)=11.5;C(5,2)=17.6;C(5,6)=8.2;C(6,9)=14.9;C(6,7)=20.3;C(7,9)=19.0;C(7,8)=7.3;C(8,9)=8.1;C(8,13)=9.2;C(9,10)=10.3;C(10,11)=7.7;C(11,12)=7.2;C(12,13)=7.9;for i=1:Nfor j=1:Nif C(i,j) < infC(j,i)=C(i,j);endendendfor i=1:NC(i,i)=0;endR=[4 7 6 5 3 2 1 13 12 11 10 9 8];<pre name="code" class="plain">%%%%%%%%jiaohuan3.m%%%%%%%%%% n=0;for I=1:(N-2)for J=(I+1):(N-1)for K=(J+1):Nn=n+1;Z(n,:)=[I J K];endendendR=1:Nfor m=1:(N*(N-1)*(N-2)/6)I=Z(m,1);J=Z(m,2);K=Z(m,3);r=R;if J-I~=1&K-J~=1&K-I~=N-1for q=1:(J-I)r(I+q)=R(J+1-q);endfor q=1:(K-J)r(J+q)=R(K+1-q);endendif J-I==1&K-J==1r(K)=R(J);r(J)=R(K);endif J-I==1&K-J~=1&K-I~=N-1for q=1:(K-J)r(I+q)=R(I+1+q);endr(K)=R(J);endif K-J==1&J-I~=1&K~=Nfor q=1:(J-I)r(I+1+q)=R(I+q);endr(I+1)=R(K);endif I==1&J==2&K==Nfor q=1:(N-2)r(1+q)=R(2+q);endr(N)=R(2);endif I==1&J==(N-1)&K==Nfor q=1:(N-2)r(q)=R(1+q);endr(N-1)=R(1);endif J-I~=1&K-I==N-1for q=1:(J-1)r(q)=R(1+q);endr(J)=R(1);endif J==(N-1)&K==N&J-I~=1r(J+1)=R(N);for q=1:(N-J-1)r(J+1+q)=R(J+q);endendif cost_sum(r,C,N)<cost_sum(R,C,N)R=rendendfprintf('总长为%f\n',cost_sum(R,C,N))%%%%%%cost_sum.m%%%%%%%%function y=cost_sum(x,C,N)y=0;for i=1:(N-1) y=y+C(x(i),x(i+1));endy=y+C(x(N),x(1));三,灰色预测代码<pre name="code" class="plain">clearclcX=[136 143 165 152 165 181 204 272 319 491 571 605 665 640 628];x1(1)=X(1);X1=[];for i=1:1:14x1(i+1)=x1(i)+X(i+1);X1=[X1,x1(i)];endX1=[X1,X1(14)+X(15)]for k=3:1:15p(k)=X(k)/X1(k-1);p1(k)=X1(k)/X1(k-1);endp,p1clear kZ=[];for k=2:1:15z(k)=0.5*X1(k)+0.5*X1(k-1);Z=[Z,z(k)];endZB=[-Z',ones(14,1)]Y=[];clear ifor i=2:1:15Y=[Y;X(i)];endYA=inv(B'*B)*B'*Yclear ky1=[];for k=1:1:15y(k)=(X(1)-A(2)/A(1))*exp(-A(1)*(k-1))+A(2)/A(1);y1=[y1;y(k)];endy1clear kX2=[];for k=2:1:15x2(k)=y1(k)-y1(k-1);X2=[X2;x2(k)];endX2=[y1(1);X2]e=X'-X2m=abs(e)./X's=e'*en=sum(m)/13clear ksyms ky=(X(1)-A(2)/A(1))*exp(-A(1)*(k-1))+A(2)/A(1)Y1=[];for j=16:1:21y11=subs(y,k,j)-subs(y,k,j-1);Y1=[Y1;y11];endY1%程序中的变量定义:alpha是包含α、μ值的矩阵;%ago是预测后累加值矩阵;var是预测值矩阵;%error是残差矩阵; c是后验差比值function basicgrey(x,m) %定义函数basicgray(x)if nargin==1 %m为想预测数据的个数,默认为1 m=1;endclc; %清屏,以使计算结果独立显示if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换x=x';endn=length(x); %取输入数据的样本量x1(:,1)=cumsum(x); %计算累加值,并将值赋与矩阵be for i=2:n %对原始数列平行移位Y(i-1,:)=x(i,:);endfor i=2:n %计算数据矩阵B的第一列数据z(i,1)=0.5*x1(i-1,:)+0.5*x1(i,:);endB=ones(n-1,2); %构造数据矩阵BB(:,1)=-z(2:n,1);alpha=inv(B'*B)*B'*Y; %计算参数α、μ矩阵for i=1:n+m %计算数据估计值的累加数列,如改n+1为n+m可预测后m个值ago(i,:)=(x1(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1,:)*(i-1))+alpha(2,:)/alpha(1,:);endvar(1,:)=ago(1,:);for i=1:n+m-1 %可预测后m个值var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下m个预测值end[P,c,error]=lcheck(x,var); %进行后验差检验[rela]=relations([x';var(1:n)']); %关联度检验ago %显示输出预测值的累加数列alpha %显示输出参数α、μ数列var %显示输出预测值error %显示输出误差P %显示计算小残差概率 c %显示后验差的比值crela %显示关联度judge(P,c,rela) %评价函数显示这个模型是否合格<pre name="code" class="plain">function judge(P,c,rela)%评价指标并显示比较结果if rela>0.6'根据经验关联度检验结果为满意(关联度只是参考主要看后验差的结果)' else'根据经验关联度检验结果为不满意(关联度只是参考主要看后验差的结果)' endif P>0.95&c<0.5'后验差结果显示这个模型评价为“优”'else if P>0.8&c<0.5'后验差结果显示这个模型评价为“合格”'else if P>0.7&c<0.65'后验差结果显示这个模型评价为“勉强合格”'else'后验差结果显示这个模型评价为“不合格”'endendendfunction [P,c,error]=lcheck(x,var)%进行后验差检验n=length(x);for i=1:nerror(i,:)=abs(var(i,:)-x(i,:)); %计算绝对残差endc=std(abs(error))/std(x); %调用统计工具箱的标准差函数计算后验差的比值cs0=0.6745*std(x);ek=abs(error-mean(error));pk=0;for i=1:nif ek(i,:)<s0pk=pk+1;endendP=pk/n; %计算小残差概率%附带的质料里有一部分讲了关联度function [rela]=relations(x)%以x(1,:)的参考序列求关联度[m,n]=size(x);for i=1:mfor j=n:-1:2x(i,j)=x(i,j)/x(i,1);endendfor i=2:mx(i,:)=abs(x(i,:)-x(1,:)); %求序列差endc=x(2:m,:);Max=max(max(c)); %求两极差Min=min(min(c));p=0.5; %p称为分辨率,0<p<1,一般取p=0.5for i=1:m-1for j=1:nr(i,j)=(Min+p*Max)/(c(i,j)+p*Max); %计算关联系数endendfor i=1:m-1rela(i)=sum(r(i,:))/n; %求关联度end四,非线性拟合function f=example1(c,tdata)f=c(1)*(exp(-c(2)*tdata)-exp(-c(3)*tdata));<pre name="code" class="plain">function f=zhengtai(c,x)f=(1./(sqrt(2.*3.14).*c(1))).*exp(-(x-c(1)).^2./(2.*c(2)^2));x=1:1:12;y=[01310128212]';c0=[2 8];for i=1:1000c=lsqcurvefit(@zhengtai,c0,x,y);c0=c;endy1=(1./(sqrt(2.*3.14).*c(1))).*exp(-(x-c(1)).^2./(2.*c(2)^2));plot(x,y,'r-',x,y1);legend('实验数据','拟合曲线')x=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16]';y=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4]';f=@(c,x)c(1)*(exp(-c(2)*x)-exp(-c(3)*x));c0=[114 0.1 2]';for i=1:50opt=optimset('TolFun',1e-3);[c R]=nlinfit(x,y,f,c0,opt)c0=c;hold onplot(x,c(1)*(exp(-c(2)*x)-exp(-c(3)*x)),'g')endt=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];y=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4];c0=[1 1 1];for i=1:50 c=lsqcurvefit(@example1,c0,t,y);c0=c;endy1=c(1)*(exp(-c(2)*t)-exp(-c(3)*t));plot(t,y,'+',t,y1);legend('实验数据','拟合曲线')五,插值拟合相关知识在生产和科学实验中,自变量与因变量间的函数关系有时不能写出解析表达式,而只能得到函数在若干点的函数值或导数值,或者表达式过于复杂而需要较大的计算量。
数学建模算法的matlab代码
二,hamiton回路算法提供一种求解最优哈密尔顿的算法---三边交换调整法,要求在运行jiaohuan3(三交换法)之前,给定邻接矩阵C和节点个数N,结果路径存放于R中。
bianquan.m文件给出了一个参数实例,可在命令窗口中输入bianquan,得到邻接矩阵C和节点个数N以及一个任意给出的路径R,,回车后再输入jiaohuan3,得到了最优解。
由于没有经过大量的实验,又是近似算法,对于网络比较复杂的情况,可以尝试多运行几次jiaohuan3,看是否能到进一步的优化结果。
%%%%%%bianquan.m%%%%%%%N=13;for i=1:Nfor j=1:NC(i,j)=inf;endendfor i=1:NC(i,i)=0;endC(1,2)=6.0;C(1,13)=12.9;C(2,3)=5.9;C(2,4)=10.3;C(3,4)=12.2;C(3,5)=17.6;C(4,13)=8.8;C(4,7)=7.4;C(4,5)=11.5;C(5,2)=17.6;C(5,6)=8.2;C(6,9)=14.9;C(6,7)=20.3;C(7,9)=19.0;C(7,8)=7.3;C(8,9)=8.1;C(8,13)=9.2;C(9,10)=10.3;C(10,11)=7.7;C(11,12)=7.2;C(12,13)=7.9;for i=1:Nfor j=1:Nif C(i,j) < infC(j,i)=C(i,j);endendendfor i=1:NC(i,i)=0;endR=[4 7 6 5 3 2 1 13 12 11 10 9 8];<pre name="code" class="plain">%%%%%%%%jiaohuan3.m%%%%%%%%%%n=0;for I=1:(N-2)for J=(I+1):(N-1)for K=(J+1):Nn=n+1;Z(n,:)=[I J K];endendendR=1:Nfor m=1:(N*(N-1)*(N-2)/6)I=Z(m,1);J=Z(m,2);K=Z(m,3); r=R;if J-I~=1&K-J~=1&K-I~=N-1 for q=1:(J-I)r(I+q)=R(J+1-q);endfor q=1:(K-J)r(J+q)=R(K+1-q);endendif J-I==1&K-J==1r(K)=R(J);r(J)=R(K);endif J-I==1&K-J~=1&K-I~=N-1 for q=1:(K-J)r(I+q)=R(I+1+q); endr(K)=R(J);endif K-J==1&J-I~=1&K~=Nfor q=1:(J-I)r(I+1+q)=R(I+q); endr(I+1)=R(K);endif I==1&J==2&K==Nfor q=1:(N-2)r(1+q)=R(2+q);endr(N)=R(2);endif I==1&J==(N-1)&K==Nfor q=1:(N-2)r(q)=R(1+q);endr(N-1)=R(1);endif J-I~=1&K-I==N-1for q=1:(J-1)r(q)=R(1+q);endr(J)=R(1);endif J==(N-1)&K==N&J-I~=1r(J+1)=R(N);for q=1:(N-J-1)r(J+1+q)=R(J+q);endendif cost_sum(r,C,N)<cost_sum(R,C,N)R=rendendfprintf('总长为%f\n',cost_sum(R,C,N))%%%%%%cost_sum.m%%%%%%%%functiony=cost_sum(x,C,N)y=0;for i=1:(N-1)y=y+C(x(i),x(i+1));endy=y+C(x(N),x(1));三,灰色预测代码<pre name="code" class="plain">clearclcX=[136 143 165 152 165 181 204 272 319 491 571 605 665 640 628];x1(1)=X(1);X1=[];for i=1:1:14x1(i+1)=x1(i)+X(i+1);X1=[X1,x1(i)];endX1=[X1,X1(14)+X(15)]for k=3:1:15p(k)=X(k)/X1(k-1);p1(k)=X1(k)/X1(k-1);endp,p1clear kZ=[];for k=2:1:15z(k)=0.5*X1(k)+0.5*X1(k-1);Z=[Z,z(k)];endZB=[-Z',ones(14,1)]Y=[];clear ifor i=2:1:15Y=[Y;X(i)];endYA=inv(B'*B)*B'*Yclear ky1=[];for k=1:1:15y(k)=(X(1)-A(2)/A(1))*exp(-A(1)*(k-1))+A(2)/A(1); y1=[y1;y(k)];endy1clear kX2=[];for k=2:1:15x2(k)=y1(k)-y1(k-1);X2=[X2;x2(k)];endX2=[y1(1);X2]e=X'-X2m=abs(e)./X's=e'*en=sum(m)/13clear ksyms ky=(X(1)-A(2)/A(1))*exp(-A(1)*(k-1))+A(2)/A(1)Y1=[];for j=16:1:21y11=subs(y,k,j)-subs(y,k,j-1);Y1=[Y1;y11];endY1%程序中的变量定义:alpha是包含α、μ值的矩阵;%ago是预测后累加值矩阵;var是预测值矩阵;%error是残差矩阵; c是后验差比值function basicgrey(x,m) %定义函数basicgray(x)if nargin==1 %m为想预测数据的个数,默认为1 m=1;endclc; %清屏,以使计算结果独立显示if length(x(:,1))==1 %对输入矩阵进行判断,如不是一维列矩阵,进行转置变换x=x';endn=length(x); %取输入数据的样本量x1(:,1)=cumsum(x); %计算累加值,并将值赋及矩阵be for i=2:n %对原始数列平行移位 Y(i-1,:)=x(i,:);endfor i=2:n %计算数据矩阵B的第一列数据z(i,1)=0.5*x1(i-1,:)+0.5*x1(i,:);endB=ones(n-1,2); %构造数据矩阵BB(:,1)=-z(2:n,1);alpha=inv(B'*B)*B'*Y; %计算参数α、μ矩阵for i=1:n+m %计算数据估计值的累加数列,如改n+1为n+m可预测后m个值ago(i,:)=(x1(1,:)-alpha(2,:)/alpha(1,:))*exp(-alpha(1, :)*(i-1))+alpha(2,:)/alpha(1,:);endvar(1,:)=ago(1,:);f or i=1:n+m-1 %可预测后m个值var(i+1,:)=ago(i+1,:)-ago(i,:); %估计值的累加数列的还原,并计算出下m个预测值end[P,c,error]=lcheck(x,var); %进行后验差检验[rela]=relations([x';var(1:n)']); %关联度检验ago %显示输出预测值的累加数列alpha %显示输出参数α、μ数列var %显示输出预测值error %显示输出误差P %显示计算小残差概率 c %显示后验差的比值crela %显示关联度judge(P,c,rela) %评价函数显示这个模型是否合格<pre name="code" class="plain">function judge(P,c,rela) %评价指标并显示比较结果if rela>0.6'根据经验关联度检验结果为满意(关联度只是参考主要看后验差的结果)'else'根据经验关联度检验结果为不满意(关联度只是参考主要看后验差的结果)'endif P>0.95&c<0.5'后验差结果显示这个模型评价为“优”'else if P>0.8&c<0.5'后验差结果显示这个模型评价为“合格”'else if P>0.7&c<0.65'后验差结果显示这个模型评价为“勉强合格”' else'后验差结果显示这个模型评价为“不合格”' endendendfunction [P,c,error]=lcheck(x,var)%进行后验差检验n=length(x);for i=1:nerror(i,:)=abs(var(i,:)-x(i,:)); %计算绝对残差c=std(abs(error))/std(x); %调用统计工具箱的标准差函数计算后验差的比值cs0=0.6745*std(x);ek=abs(error-mean(error));pk=0;for i=1:nif ek(i,:)<s0pk=pk+1;endendP=pk/n; %计算小残差概率%附带的质料里有一部分讲了关联度function [rela]=relations(x)%以x(1,:)的参考序列求关联度[m,n]=size(x);for i=1:mfor j=n:-1:2x(i,j)=x(i,j)/x(i,1);endfor i=2:mx(i,:)=abs(x(i,:)-x(1,:)); %求序列差endc=x(2:m,:);Max=max(max(c)); %求两极差Min=min(min(c));p=0.5; %p称为分辨率,0<p<1,一般取p=0.5for i=1:m-1for j=1:nr(i,j)=(Min+p*Max)/(c(i,j)+p*Max); %计算关联系数endendfor i=1:m-1rela(i)=sum(r(i,:))/n; %求关联度end四,非线性拟合function f=example1(c,tdata)f=c(1)*(exp(-c(2)*tdata)-exp(-c(3)*tdata));<pre name="code" class="plain">function f=zhengtai(c,x) f=(1./(sqrt(2.*3.14).*c(1))).*exp(-(x-c(1)).^2./(2.*c( 2)^2));x=1:1:12;y=[01310128212]';c0=[2 8];for i=1:1000c=lsqcurvefit(@zhengtai,c0,x,y);c0=c;endy1=(1./(sqrt(2.*3.14).*c(1))).*exp(-(x-c(1)).^2./(2.*c (2)^2));plot(x,y,'r-',x,y1);legend('实验数据','拟合曲线')x=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16]';y=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4]';f=@(c,x)c(1)*(exp(-c(2)*x)-exp(-c(3)*x));c0=[114 0.1 2]';for i=1:50opt=optimset('TolFun',1e-3);[c R]=nlinfit(x,y,f,c0,opt)c0=c;hold onplot(x,c(1)*(exp(-c(2)*x)-exp(-c(3)*x)),'g')endt=[0.25 0.5 0.75 1 1.5 2 2.5 3 3.5 4 4.5 5 6 7 8 9 10 11 12 13 14 15 16];y=[30 68 75 82 82 77 68 68 58 51 50 41 38 35 28 25 18 15 12 10 7 7 4];c0=[1 1 1];for i=1:50 c=lsqcurvefit(@example1,c0,t,y);c0=c;endy1=c(1)*(exp(-c(2)*t)-exp(-c(3)*t));plot(t,y,' +',t,y1);legend('实验数据','拟合曲线')五,插值拟合相关知识在生产和科学实验中,自变量及因变量间的函数关系有时不能写出解析表达式,而只能得到函数在若干点的函数值或导数值,或者表达式过于复杂而需要较大的计算量。
matlab常用算法大全(数学建模)
本文总结了matlab常用的几个算法,希望对数学建模有帮助。
利用matlab编程FFD算法完成装箱问题:设有6种物品,它们的体积分别为:60、45、35、20、20和20单位体积,箱子的容积为100个单位体积。
建立box_main.mfunction[box_count,b]=box_main(v) vmax=100;sort(v,'descend');n=length(v);b=zeros(1,n);for i=1:nb(i)=vmax;endbox_count=1;for i=1:nfor j=1:box_countif v(i)<=b(j) %可以放入 b(j)=b(j)-v(i);break;else%不可放入时continue;endendif j==box_countbox_count=box_count+1;endendbox_count=box_count-1;end主程序为:v=[60 45 35 20 20 20];[box_count,b]=box_main(v)结果:box_count =3 b =5 15 80 100 100 100所以,使用的箱子数为3, 使用的箱子的剩余空间为5,15 ,80。
“超市大赢家”提供了50种商品作为奖品供中奖顾客选择,车的容量为1000dm3 , 奖品i 占用的空间为wi dm3 ,价值为vi 元, 具体的数据如下:vi = { 220, 208, 198, 192, 180, 180, 165, 162, 160, 158,155, 130, 125, 122, 120, 118, 115, 110, 105, 101, 100, 100, 98,96, 95, 90, 88, 82, 80, 77, 75, 73, 72, 70, 69, 66, 65, 63, 60, 58,56, 50, 30, 20, 15, 10, 8, 5, 3, 1}wi = {80, 82, 85, 70, 72, 70, 66, 50, 55, 25, 50, 55, 40, 48,50, 32, 22, 60, 30, 32, 40, 38, 35, 32, 25, 28, 30, 22, 50, 30, 45,30, 60, 50, 20, 65, 20, 25, 30, 10, 20, 25, 15, 10, 10, 10, 4, 4, 2,1}。
数学建模2020c题matlab源程序
数学建模2020c题matlab源程序【实用版】目录一、数学建模 2020c 题概述二、Matlab 在数学建模中的应用三、2020c 题 matlab 源程序解析四、结论正文一、数学建模 2020c 题概述数学建模是一种运用数学方法和技术来解决实际问题的过程,其目的是通过建立数学模型,揭示问题的本质和规律,从而为解决实际问题提供理论依据。
2020c 题是数学建模竞赛中的一道题目,它涉及到了复杂的数学方法和技术,需要参赛者运用深厚的数学功底和灵活的思维方式来完成。
二、Matlab 在数学建模中的应用Matlab 是一种功能强大的数学软件,它既可以用于数学计算,也可以用于数据分析和可视化。
在数学建模过程中,Matlab 可以提供丰富的工具箱和函数,帮助用户解决各种复杂的数学问题。
例如,在 2020c 题中,Matlab 可以用于构建和求解数学模型,进行数据分析和绘图,从而为解题提供强大的支持。
三、2020c 题 matlab 源程序解析2020c 题的 matlab 源程序主要包括以下几个部分:(1)问题分析:这部分主要通过对题目的阅读和理解,明确问题的背景和要求,为构建数学模型打下基础。
(2)模型构建:这部分是数学建模的核心,需要根据问题的实际情况,构建出一个符合题意的数学模型。
在 2020c 题中,我们需要建立一个描述人口增长和资源消耗关系的模型。
(3)模型求解:这部分主要是运用 Matlab 的数学工具箱和函数,对建立的数学模型进行求解。
在 2020c 题中,我们需要运用 Matlab 的符号运算和数值计算功能,求解模型中的参数,从而得到人口增长和资源消耗的关系。
(4)结果分析:这部分主要是对模型求解的结果进行分析,得出问题的解决方案。
在 2020c 题中,我们需要根据模型求解的结果,分析人口增长和资源消耗的关系,从而为解决实际问题提供理论依据。
四、结论总的来说,数学建模 2020c 题是一道需要运用深厚数学功底和灵活思维方式的题目。
matlab数学建模程序代码
matlab数学建模程序代码摘要:1.MATLAB 简介2.MATLAB 数学建模应用领域3.MATLAB 数学建模程序代码实例4.总结正文:一、MATLAB 简介MATLAB(Matrix Laboratory)是一款广泛应用于科学计算、数据分析和可视化的软件,尤其擅长矩阵运算。
自1984 年问世以来,MATLAB 已经成为了全球数百万工程师、科学家和研究人员的得力工具。
MATLAB 具有丰富的函数库和强大的编程能力,为用户提供了从数据获取、数据处理、数据分析到结果可视化等一站式解决方案。
二、MATLAB 数学建模应用领域MATLAB 在数学建模领域的应用非常广泛,涵盖了诸如优化、控制、信号处理、图像处理、概率论和统计等众多学科。
以下是一些典型的应用场景:1.优化问题求解:线性规划、整数规划、非线性规划等。
2.控制系统设计:线性时不变系统、线性时变系统、非线性系统等。
3.信号处理:滤波、信号生成、频域分析等。
4.图像处理:图像增强、图像分割、特征提取等。
5.概率论与统计:概率分布计算、假设检验、回归分析等。
三、MATLAB 数学建模程序代码实例下面以一个简单的线性规划问题为例,展示如何使用MATLAB 进行数学建模。
问题描述:给定如下线性规划问题:```maximize: c" * xsubject to: A * x <= b and x >= 0```其中,c"表示目标函数的系数向量,A 表示不等式约束矩阵,b 表示不等式约束向量,x 表示决策变量向量。
MATLAB 代码如下:```matlab% 定义参数c = [1, 2, 3]; % 目标函数系数向量A = [1, 0; 0, 2; 0, 1]; % 不等式约束矩阵b = [2; 4; 1]; % 不等式约束向量x = linprog(c, [], [], A, b); % 求解线性规划问题disp(x); % 输出最优解```运行上述代码,可以得到最优解x = [1.5; 2.5; 1]。
matlab简单的数学模型及程序
matlab简单的数学模型及程序一、背景介绍Matlab是一款广泛应用于科学计算、工程分析等领域的软件,其强大的数学计算和绘图功能深受研究者和工程师的喜爱。
在实际的应用中,我们常常需要通过建立数学模型来解决一些复杂的问题。
本文将介绍matlab中的简单数学模型及其程序实现。
二、线性方程组线性方程组是数学中比较基础的概念,其求解方法也比较简单。
在matlab中,我们可以通过“mldivide”函数来求解线性方程组。
例如,对于下列线性方程组:-3x + 2y = 14x + y = 8我们可以通过以下代码来求解:A = [-3 2;4 1];b = [1; 8];x = A\b;disp(x);三、微分方程微分方程在工程学和物理学中有着广泛的应用,研究微分方程的解析方法和数值方法是许多科学计算和工程应用中的关键。
在matlab中,我们可以通过ode函数在一定精度条件下计算微分方程。
例如,对于一个一阶线性微分方程y′+2y=10sin(3x),我们可以通过以下代码来求解:f = @(x, y) -2*y + 10*sin(3*x);[x, y] = ode45(f, [0, 3*pi], 0);plot(x, y);四、优化问题优化问题在工程、科学计算和商业决策等领域都有着广泛的应用,matlab提供了许多优化算法来求解各种优化问题。
一个典型的优化问题如下:求解f(x)=x^2+2x+1在区间[0,5]内的最小值。
我们可以通过以下代码来求解:f = @(x) x^2 + 2*x + 1;[x_min, f_min] = fminbnd(f, 0, 5);disp(['x_min=', num2str(x_min), ', f_min=', num2str(f_min)]);五、常微分方程组常微分方程组是微积分的一个分支,应用广泛。
在matlab中,我们可以通过ode45函数计算常微分方程组。
matlab数学建模程序代码
matlab数学建模程序代码摘要:1.引言2.Matlab数学建模简介3.Matlab数学建模程序代码实例a.线性规划模型b.非线性规划模型c.动态规划模型d.排队论模型e.图论模型f.神经网络模型4.结论正文:Matlab是一种广泛应用于科学计算和数据分析的编程语言。
在数学建模领域,Matlab也发挥着重要的作用。
本文将介绍Matlab数学建模的基本知识,并通过实例代码展示不同类型的数学建模问题的解决方法。
首先,我们需要了解Matlab数学建模的基本概念。
Matlab提供了一系列用于解决各种数学建模问题的工具箱和函数。
例如,线性规划(LP)、非线性规划(NLP)、动态规划(DP)、排队论(QT)、图论(GT)和神经网络(NN)等。
这些工具箱和函数可以帮助我们快速地构建和求解数学模型。
接下来,我们将通过实例代码展示如何使用Matlab解决不同类型的数学建模问题。
1.线性规划模型线性规划是一种常见的优化问题,它的基本形式可以表示为:$minimize quad c^Tx$$subject quad to:$$Ax leq b$$x geq 0$在Matlab中,我们可以使用intlinprog函数求解线性规划问题。
下面是一个实例:```matlabf = [-1, 1, 1; -1, 2, 1; -1, 1, 2]; % 目标函数系数向量A = [1, 1, 1; 1, 1, 1; 1, 1, 1]; % 约束条件系数矩阵b = [3, 3, 3]; % 约束条件右端向量lb = [0, 0, 0]; % 变量下限[x, fval] = intlinprog(f, [], [], A, b, lb);disp(x);disp(fval);```2.非线性规划模型非线性规划问题的一般形式为:$minimize quad g(x)$$subject quad to:$$h_i(x) leq 0, i = 1, ..., m$$x in X$在Matlab中,我们可以使用fmincon函数求解非线性规划问题。
数学建模中30道经典MATLAB程序
编程1、编写一程序,要求输入五个整数,然后由小到大排序再输出。
%输入n个数,然后由小到大输出a=input('输入数据:')n=length(a); %输入数据的长度i=1;j=1; %赋初值for i=1:n %需要进行n次比较for j=2:n %与相邻的进行n-1次比较if a(j-1)>a(j)b=a(j-1);a(j-1)=a(j);a(j)=b; %比较前者是否比后者大,大的就互换endendendfprintf(' %d',a) ;2、将一个整型数组的元素按逆序重新存放(如原序为:8,6,5,4改为4,5,6,8)。
function lin5a=input('输入数据:')n=length(a);%求输入a的长度for i=1:n/2b=a(i);a(i)=a(n+1-i);a(n+1-i)=b;endfprintf(' %d',a)3、输入一个字符,如果是大写字母,则将其转换成小写并输出,若是小写,则直接输出;若是非字母字符则打印:‘datarror’.function xin2a=input('输入数据:','s')if a>=65&a<=90fprintf('shuchu is %c\n',a+32);elseif a>=97&a<=122fprintf('shuchu is %c\n',a);elsea='dataerror';fprintf('shuchu is %s',a);end4、输入一个整数,写一程序输出它是几位数。
function lin6a=input('输入数据:','s')n=length(a)%求输入a的长度b=n;fprintf('weishu %d',b);end5、写一程序求1!+2!+ (10)function wi=1;j=1;s=0; %赋初值while i<=10j=j*i;s=s+j;i=i+1;endfprintf('s is %d\n',s);6、从键盘上输入a与n的值,计算sum=a+aa+aaa+aaaa+……(共n项)的和。
数学建模Matlab实验程序
Matlab实验作业及答案作业1:建立函数M文件2.建立下面函数的M文件,并求f(x)值.(1)f(x)=log(x1+x22),x=(1,2)(2)f(x)=sin(x2)+exp(2x3),x=2(1)function f = fun1(x1,x2)f = log(x1 +x2^2);end(2)function f = fun2( x)f = sin(x^2) + exp(2*x^3);end3.试编写同时求sin(x),cos(x),exp(x),abs(x)的M函数文件.function f = fun3(x)f = [sin(x) cos(x) exp(x) abs(x)];end4.建立符号函数的M文件:当输入的变量为负数时,返回值-1;当输入的变量为正数时,返回值1;而输入0时,返回值0.function f = fun4(x)if x>0f = 1;else if x == 0f = 0;elsef = -1;endendend5.建立函数 的M 文件。
function f = fun5(x)if x>0f = exp(x-1);elsef = x^2;endend6.通过帮助系统查询roots,poly,polyval,poly2str 的用法,用这些命令解下面的问题:已知一多项式的零点为{-1,1,2,3},写出该多项式,并且计算多项式在点x=2.5处的值。
root = [-1 1 2 3];p = poly(root);x = 2.5;a = polyval(p,x);eig(a)计算多项式y=x 3-3x+2的零点P = [1 0 -3 2];a = company(p); eig(a)7.查询sum,length 的用法,建立一个求向量的平均值的M 文件a = [1 2 3 4];b = sum(a);⎪⎩⎪⎨⎧≤>=-0,0,21x x x e f xc = length(a);d = b/c;eig(d)8.查询input,disp 的用法,建立M 文件:输入x,y 的值将其互换后输出x = input('x=');y = input('y=');disp ([x,y]);t=x;x=y;y=t;disp ([x,y]);作业题2:MATLAB 矩阵的处理1. 创建矩阵A = [1 2 -1 3 5;1 -2 9 0 -6;-3 3 -4 7 1;9 8 0 7 6];disp(A);2.取A 的1,2行与2,3列的交叉元素作子矩阵A1.A([1,2],[2,3])3.取A 的1,3行,然后按行形成矩阵A2A2 = A([1,3],:);4.逆序提取A 的1,2,3行,形成列矩阵A3.A3 = [A(3,:) A(2,:) A(1,:)]’;(“’”为转置符号)5.取A2的绝对值大于3的元素构成向量A4.A4 = find(A>3);6.求出A 的最大值a 及其所处的位置. 12135129063347198076A -⎛⎫ ⎪-- ⎪= ⎪-- ⎪⎝⎭a = max(max(A));[row col v] = find(a);disp([row col v]);7、设用三种方法(克拉姆法则、矩阵的除法、逆矩阵)解方程组AX=bA = [10 7 8 7;7 5 6 5;8 6 10 9;7 5 9 10];b = [32;23;33;31];逆矩阵法:x = inv(A)*b;disp(x);矩阵的除法x =A\b;克拉姆法则for n=1:4B = A;B(:,n) = b;x(n) = det(B)/det(A);enddisp(x);作业题3:Matlab 语法控制结构的使用(1) 用起泡法对10个数由小到大排序.即将相邻两个数比较,将小的调到前头.a = [0 9 7 8 6 5 4 3 2 1];1078775658610975910A ⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭32233331b ⎛⎫ ⎪ ⎪= ⎪ ⎪⎝⎭n = length(a);for i = 1:nfor j = 1:n-iif a(j)>a(j+1)t = a(j);a(j) = a(j+1);a(j+1) = t;endendenddisp(a)(2) 取任意数组,如[8 9 11 -9 0 2 -82 42 3 5]等的绝对值大于数3的元素构成向量(编程实现).a = [8 9 11 -9 0 2 -82 42 3 5];a = abs(a);b = find(a>3);a1 = a(b);disp(a1);(3)一球从h (比如100米)高度自由落下,每次落地后反跳回原高度的一半,再落下. 求它在第10次落地时,共经过多少米?第10次反弹有多高?h = 100;for i = 1:10h = h/2;enddisp(h) (4)有一函数 写一程序,输入自变量的值,输出函数值.function fun34 = f(x,y)x = input('x=');y = input('y=');if x < 2f = x+1;elseif x >= 2 &&x <= 8f = 3*x;elseif x>8 && x<=20f = 4*x -5;elseif x>201,23,28(,)45,820cos()sin(),20x x x x f x y x x x x x +<⎧⎪≤≤⎪=⎨-<≤⎪⎪+>⎩f = cos(x)+sin(x);enddisp(f);end(5)从1到多少的自然数的和小于或等于1000,此时的和是多少?sum = 0;n = 1;while sum <= 1000sum = sum+n;n = n+1;enddisp(n - 1);disp(sum -n );(6) 已知 当m=100时,求y 的值。
使用Matlab进行数学建模的基本流程
使用Matlab进行数学建模的基本流程引言数学建模作为一门交叉学科,旨在将实际问题转化为数学模型,并通过数学方法求解问题。
而Matlab作为一种常见且强大的数学软件,为数学建模提供了便捷的工具和平台。
本文将介绍使用Matlab进行数学建模的基本流程,包括问题提出、模型建立、求解分析等方面。
一、问题提出在进行数学建模之前,首先需要明确问题的提出。
问题可以来源于实际生活、工程技术、自然科学等领域。
在提出问题时,需要明确问题的背景、目标和约束条件。
以一个实际问题为例,假设我们需要优化某个生产过程的生产能力,而该过程中不同工序的生产速度会受到各种因素的影响。
我们的目标是最大化总产量,同时要满足资源约束和质量要求。
二、模型建立在问题提出的基础上,开始建立数学模型。
数学模型是问题实质的抽象和化简,它可以通过数学语言和符号来描述问题。
在建立模型时,需要关注以下几个方面:1. 变量的选择:根据问题的特点和目标,确定需要考虑的变量。
例如,在我们的生产过程优化问题中,可以考虑生产速度、资源利用率等变量。
2. 建立关系:通过分析问题,确定变量之间的关系。
关系可以是线性的、非线性的,也可以是概率性的。
在我们的例子中,我们可以根据生产速度和资源利用率的关系建立数学表达式。
3. 假设和简化:在建立模型时,为了简化问题,可以进行一些假设和简化。
但是需要保证这些假设和简化对问题求解的结果不会产生重大影响。
基于以上步骤,我们可以建立一个数学模型,例如使用线性规划模型来最大化总产量,并满足资源和质量约束。
三、求解分析模型建立完毕后,需要使用Matlab进行求解分析。
Matlab提供了丰富的函数和工具箱,可以方便地进行数学计算、模拟仿真、优化求解等操作。
在求解分析阶段,我们可以进行以下几个步骤:1. 数据处理:将实际问题中获取的数据导入Matlab,并进行必要的预处理和清洗。
例如,我们可以将生产速度和资源利用率的数据导入Matlab,进行统计分析和数据可视化。
数学建模常用30个MATLAB程序函数
MATLAB在数学建模中的30个常用程序和函数MATLAB内部数学常数2 基本数学运算符3 关系运算符4 常用内部数学函数acsch(x) 反双曲余割函数求角度函数atan2(y,x) 以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为(,]数论函数gcd(a,b) 两个整数的最大公约数lcm(a,b) 两个整数的最小公倍数排列组合函数factorial(n)阶乘函数,表示n的阶乘复数函数real(z) 实部函数imag(z) 虚部函数abs(z) 求复数z的模angle(z)求复数z的辐角,其范围是(,]conj(z) 求复数z的共轭复数求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x) 最接近x的整数最大、最小函数max([a,b,c,...])求最大数min([a,b,c,..])求最小数符号函数sign(x)5 自定义函数-调用时:“[返回值列]=M文件名(参数列)”function 返回变量=函数名(输入变量)注释说明语句段(此部分可有可无)函数体语句6.进行函数的复合运算compose(f,g) 返回值为f(g(y))compose(f,g,z) 返回值为f(g(z))compose(f,g,x,.z) 返回值为f(g(z))7 因式分解8 代数式展开9 合并同类项10 进行数学式化简11 进行变量替换12 进行数学式的转换调用Maple中数学式的转换命令,调用格式如下:maple(‘Maple的数学式转换命令’) 即:13 解方程solve(’方程’,’变元’)注:方程的等号用普通的等号: =14 解不等式调用maple中解不等式的命令即可,调用形式如下:具体说,包括以下五种:15 解不等式组调用maple中解不等式组的命令即可,调用形式如下:16 画图17 求极限(1)极限:(2)单侧极限:左极限:右极限:18 求导数或者:19 求高阶导数或者:20 在MATLAB中没有直接求隐函数导数的命令,但是我们可以根据数学中求隐函数导数的方法,在中一步一步地进行推导;也可以自己编一个求隐函数导数的小程序;不过,最简便的方法是调用Maple中求隐函数导数的命令,调用格式如下:maple('implicitdiff(f(x,y)=0,y,x)')*在MATLAB中,没有直接求参数方程确定的函数的导数的命令,只能根据参数方程确定的函数的求导公式一步一步地进行推导;或者,干脆自己编一个小程序,应用起来会更加方便。
matlab数学建模算法全收录
向量, b 为一实数) 。若干个半空间的交集被称为多胞形,有界的多胞形又被称为多面 体。易见,线性规划的可行域必为多胞形(为统一起见,空集 Φ 也被视为多胞形) 。 在一般 n 维空间中,要直接得出多胞形“顶点”概念还有一些困难。二维空间中的顶点 可以看成为边界直线的交点, 但这一几何概念的推广在一般 n 维空间中的几何意义并不 十分直观。为此,我们将采用另一途径来定义它。 定义 1 定义 2
min z = 2 x1 + 3x2 + x3
⎧ x1 + 4 x2 + 2 x3 ≥ 8 ⎪ ⎨3x1 + 2 x 2 ≥ 6 ⎪x , x , x ≥ 0 ⎩ 1 2 3
解 编写Matlab程序如下: c=[2;3;1]; a=[1,4,2;3,2,0]; b=[8;6]; [x,y]=linprog(c,-a,-b,[],[],zeros(3,1)) 1.6 可以转化为线性规划的问题 很多看起来不是线性规划的问题也可以通过变换变成线性规划的问题来解决。如: 例4 规划问题为
Ax ≥ b
− Ax ≤ −b
min − cT x s.t. x
n
1.3 线性规划问题的解的概念 一般线性规划问题的(数学)标准型为
max
z = ∑cj xj
j =1
(3)
s.t.
⎧n ⎪∑ aij x j = bi i = 1,2, L, m ⎨ j =1 ⎪ x ≥ 0 j = 1,2,L, n ⎩ j
图 1 线性规划的图解示意图
图解法简单直观, 有助于了解线性规划问题求解的基本原理。 我们先应用图解法来 求解例 1。对于每一固定的值 z ,使目标函数值等于 z 的点构成的直线称为目标函数等 位线,当 z 变动时,我们得到一族平行直线。对于例 1,显然等位线越趋于右上方,其 上的点具有越大的目标函数值。不难看出,本例的最优解为 x* = ( 2,6) ,最优目标值
数学建模中常用的30个MATLAB程序和函数
内部数学常数pi 圆周率exp(1) 自然对数的底数e i 或j 虚数单位Inf或inf 无穷大2 基本数学运算符a+b 加法a-b减法a*b矩阵乘法a.*b数组乘法a/b矩阵右除a\b矩阵左除a./b数组右除a.\b数组左除a^b 矩阵乘方a.^b数组乘方-a负号’共轭转置.'一般转置3 关系运算符==等于<小于>大于<=小于或等于>=大于或等于~=不等于4 常用内部数学函数指数函数exp(x) 以e为底数对数函数log(x) 自然对数,即以e为底数的对数log10(x)常用对数,即以10为底数的对数log2(x) 以2为底数的x的对数开方函数sqrt(x) 表示x的算术平方根绝对值函数abs(x) 表示实数的绝对值以及复数的模三角函数(自变量的sin(x) 正弦函数cos(x) 余弦函数tan(x) 正切函数单位为弧度)cot(x) 余切函数sec(x) 正割函数csc(x) 余割函数反三角函数asin(x) 反正弦函数acos(x) 反余弦函数atan(x) 反正切函数acot(x) 反余切函数asec(x) 反正割函数acsc(x) 反余割函数双曲函数sinh(x) 双曲正弦函数cosh(x) 双曲余弦函数tanh(x) 双曲正切函数coth(x) 双曲余切函数sech(x) 双曲正割函数csch(x) 双曲余割函数反双曲函数asinh(x) 反双曲正弦函数acosh(x) 反双曲余弦函数atanh(x) 反双曲正切函数acoth(x) 反双曲余切函数asech(x) 反双曲正割函数acsch(x) 反双曲余割函数求角度函数atan2(y,x) 以坐标原点为顶点,x轴正半轴为始边,从原点到点(x,y)的射线为终边的角,其单位为弧度,范围为(,]数论函数gcd(a,b) 两个整数的最大公约数lcm(a,b) 两个整数的最小公倍数排列组合函数factorial(n)阶乘函数,表示n的阶乘复数函数real(z) 实部函数imag(z) 虚部函数abs(z) 求复数z的模angle(z)求复数z的辐角,其范围是(,]conj(z) 求复数z的共轭复数求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x) 最接近x的整数最大、最小函数max([a,b,c,...])求最大数min([a,b,求最小数c,..])符号函数sign(x)5 自定义函数-调用时:“[返回值列]=M文件名(参数列)”function 返回变量=函数名(输入变量)注释说明语句段(此部分可有可无)函数体语句6.进行函数的复合运算compose(f,g)返回值为f(g(y))compose(f,g,z)返回值为f(g(z))compose(f,g,x,.z)返回值为f(g(z))compose(f,g,x,y,z)返回值为f(g(z))7 因式分解syms 表达式中包含的变量factor(表达式)8 代数式展开syms 表达式中包含的变量expand(表达式)9 合并同类项syms 表达式中包含的变量collect(表达式,指定的变量)10 进行数学式化简syms 表达式中包含的变量simplify(表达式)11 进行变量替换syms 表达式和代换式中包含的所有变量subs(表达式,要替换的变量或式子,代换式)12 进行数学式的转换调用Maple中数学式的转换命令,调用格式如下:maple(‘Maple的数学式转换命令’) 即:maple(‘convert(表达式,form)’’)将表达式转换成form的表示方式maple(‘convert(表达式,form, x)’) 指定变量为x,将依赖于变量x的函数转换成form的表示方式(此指令仅对form为exp与sincos的转换式有用)13 解方程solve(’方程’,’变元’)注:方程的等号用普通的等号:=14 解不等式调用maple中解不等式的命令即可,调用形式如下:maple('maple中解不等式的命令')*具体说,包括以下五种:maple(' solve(不等式)')maple(' solve(不等式,变元)' )maple(' solve({不等式},变元)' )maple(' solve(不等式,{变元})' )maple(' solve({不等式},{变元})' )15 解不等式组调用maple中解不等式组的命令即可,调用形式如下:maple('maple中解不等式组的命令')即:maple(' solve({不等式组},{变元组})' )16 画图方法1:先产生横坐标x的取值和相应的纵坐标y的取值,然后执行命令:plot(x,y)方法2:fplot('f(x)',[xmin,xmax])fplot('f(x)',[xmin,xmax,ymin,ymax])方法3:ezplot('f(x)')ezplot('f(x)' ,[xmin,xmax])ezplot('f(x)' ,[xmin,xmax,ymin,ymax])17 求极限(1)极限:syms xlimit(f(x), x, a)(2)单侧极限:左极限:syms xlimit(f(x), x, a,’left’)右极限:syms xlimit(f(x), x, a,’right’)18 求导数diff('f(x)')diff('f(x)','x')或者:Syms xDiff(f(x))syms xdiff(f(x), x)19 求高阶导数diff('f(x)',n)diff('f(x)','x',n)或者:syms xdiff(f(x),n)syms xdiff(f(x), x,n)20 在MATLAB中没有直接求隐函数导数的命令,但是我们可以根据数学中求隐函数导数的方法,在中一步一步地进行推导;也可以自己编一个求隐函数导数的小程序;不过,最简便的方法是调用Maple中求隐函数导数的命令,调用格式如下:maple('implicitdiff(f(x,y)=0,y,x)')*在MATLAB中,没有直接求参数方程确定的函数的导数的命令,只能根据参数方程确定的函数的求导公式一步一步地进行推导;或者,干脆自己编一个小程序,应用起来会更加方便。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
建模MATLAB程序汇总
求特征值、特征向量、权向量
A=input('A=');
E=eig(A)
[V,D]=eig(A)
t=max(E);
disp(t);
for i=1:1:3
if E(i)==t;
m=i;
end
end
X=V(:,m);
mt=X./sum(X);
disp(mt)
求π
n=1;s=0;
while 1/(2*n-1)>10^(-6)
s=s+(-1)^(n+1)/(2*n-1);
n=n+1;
end
pai=4*s
求e
n=1;s=1;
while 1/prod(1:n)>10^(-6)
s=s+1/prod(1:n);
n=n+1;
end
e=s
回归分析、
x=[143 145 146 147 149 150 153 154 155 156 157 158 159 160 162 164]';
Y=[88 85 88 91 92 93 93 95 96 98 97 96 98 99 100 102]';
X=[ones(16,1) x];
[b,bint,r,rint,stats]=regress(Y,X,0.025);
b,bint,stats
rcoplot(r,rint)
z=b(1)+b(2)*x
plot(x,Y,'k+',x,z,'r')
回归曲线
x=[2:16];
y=[6.42 8.20 9.58 9.50 9.70 10 9.93 09.99 10.49 10.59 10.60 10.80 10.60 10.90 10.76];
x1=1./x;
y1=log(y);
p=polyfit(x1,y1,1)
a=exp(p(2))
b=p(1)
z=a.*exp(b./x)
plot(x,y,'k+',x,z,'r')
回归预测
x=[20 25 30 35 40 45 50 55 60 65]';
Y=[13.2 15.1 16.4 17.1 17.9 18.7 19.6 21.2 22.5 24.3]';
X=[ones(10,1) x];
[b,bint,r,rint,stats]=regress(Y,X,0.05);
b,bint,stats
rcoplot(r,rint)
z=b(1)+b(2)*x
rstool(x,Y,'purequadratic')
灰色GM(1,1)
clc,clear
x0=[8438.73 9398.53 9959.17 10949.99 11145.92 11800 12700];
n=length(x0);
lamda=x0(1:n-1)./x0(2:n)
range=minmax(lamda)
x1=cumsum(x0)
for i=2:n
z(i)=0.5*(x1(i)+x1(i-1));
end
B=[-z(2:n)',ones(n-1,1)];
Y=x0(2:n)';
u=B\Y
x=dsolve('Dx+a*x=b','x(0)=x0');
x=subs(x,{'a','b','x0'},{u(1),u(2),x1(1)});
yuce1=subs(x,'t',[0:n-1]);
digits(6),y=vpa(x) %为提高预测精度,先计算预测值,再显示微分方程的解yuce=[x0(1),diff(yuce1)]
epsilon=x0-yuce %计算残差
delta=abs(epsilon./x0) %计算相对误差
rho=1-(1-0.5*u(1))/(1+0.5*u(1))*lamda %计算级比偏差值
求余
for n=1:5000
k=n^3;
if rem(k,10000)==8888
n
end
end
人口预测模型
k=197.273; %xm=197.273
r=0.03134; % r=0.03134
t=0:10:160; %时间间隔为10年
n0=3.929;
n1=[3.929 5.308 7.240 7.638 12.866 17.069 23.192 31.443 38.558 50.156 62.948 75.995 91.972 105.711 122.775 131.669 150.697];% 实际统计资料
n2=n0*exp(r*t); % Malthus模型
n3=k./(1+((k/n0)-1).*exp(-r.*t)); %Logistic模型
t=t+1790;
plot(t,n1,'k*-',t,n2,'go-',t,n3)
水仙花数
for a=1:9
for b=0:9
for c=0:9
abc=a*100+b*10+c*1;
if abc==a.^3+b.^3+c.^3
disp(abc)
end
end
end
end
主成分分析
X = [40 10 120 250 120 10 40 270 280 170 180 130 220 160 220 140 220 40 20 120;
2 1.5
3 4.5 3.5 1.5 1
4 3.
5 3 3.5 2 1.5 1.5 2.5 2 2 1 1 2;
5 5 13 18 9 12 19 13 11 9 14 30 17 35 14 20 14 10 12 20;
20 30 50 0 50 50 40 60 60 60 40 50 20 60 30 20 10 0 60 0]'
[pc,score,variance,t2] = princomp(X)
Z=zscore(X);
mean(X,1)
std(X,0,1)
回归模型y= ax1+bx2+cx3+dx4+ex5+fx6
1.对回归模型建立M文件model.m如下:
function yy=model(beta0,X)
a=beta0(1);
b=beta0(2);
c=beta0(3);
d=beta0(4);
e=beta0(5);
f=beta0(6);
x1=X(:,1);
x2=X(:,2);
x3=X(:,3);
x4=X(:,4);
x5=X(:,5);
x6=X(:,6);
yy=a*x1+b*x2+c*x3+d*x4+e*x5+f*x6;
X=[598.00 349.00 461.00 57482.00 20729.00 44.00
…………………………………………………………..
2927.00 6862.00 1273.00 100072.0 43280.00 496.00];
y=[184.00 216.00 248.00 254.00 268.00 286.00 357.00 444.00 506.00 ... 271.00 230.00 266.00 323.00 393.00 466.00 352.00 303.00 447.00 ... 564.00 638.00 658.00 691.00 655.00 692.00 657.00 723.00 922.00 ... 890.00 826.00 810.0]';
beta0=[0.50 -0.03 -0.60 0.01 -0.02 0.35];
betafit = nlinfit(X,y,'model',beta0)。