首页 数学建模代码汇总

数学建模代码汇总

举报
开通vip

数学建模代码汇总插值%产生原始数据x=0:0。1:1;y=(x,2-3*x+7)。*exp(-4*x)。*sin(2*x);%线性插值xx=0:0。01:1;y1=interp1(x,y,xx,'linear');subplot(2,2,1)plot(x,y,'o',xx,y1);title('线性插值');%最邻近点插值y2=interp1(x,y,xx,'nearest');subplot(2,2,2)plot(x,y,'o',xx,y2);title('最邻近点插值');%三次插值y3=interp1(x,y,xx,'cub...

数学建模代码汇总
插值%产生原始数据x=0:0。1:1;y=(x,2-3*x+7)。*exp(-4*x)。*sin(2*x);%线性插值xx=0:0。01:1;y1=interp1(x,y,xx,'linear');subplot(2,2,1)plot(x,y,'o',xx,y1);title('线性插值');%最邻近点插值y2=interp1(x,y,xx,'nearest');subplot(2,2,2)plot(x,y,'o',xx,y2);title('最邻近点插值');%三次插值y3=interp1(x,y,xx,'cubic');subplot(2,2,3)plot(x,y,'o',xx,y3);title('三次插值');%三次样条插值y4=interp1(x,y,xx,'spline');subplot(2,2,4)plot(x,y,'o',xx,y4);title('三次样条插值');%插值基点为网格节点clearally=20:-1:0;x=0:20;z=[0。20。20。20。2;0。30。20。20。2;0。20。30。30。2;0。20。20。40。4;0。20。20。90。4;0。20。310。5;0。20。410。20。20。20。20。20。40。20。310。211。10。711111。211。11。10。20。40。40。30。30。30。40。50。30。90。40。310。70。511。10。81。11。10。60。30。20。30。30。40。20。30。30。30。30。50。30。30。20。20。30。20。20。30。40。40。20。10。20。20。20。20。20。20。20。20。20。20。20。60。20。20。50。30。20。70。50。20。40。30。40。40。40。60。50。40。70。30。60。80。70。90。60。60。80。90。70。40。20。20。30。20。40。20。60。30。50。50。70。60。90。8精选文库PAGE\*MERGEFORMAT#0。20。20。91。10。4;0。20。30。40。90。3;0。30。30。51。20。5;0。30。50。91。10。8;0。30。50。61。10。9;0。40。50。410。7;0。30。50。81。10。6;0。30。50。91。10。4;0。20。30。60。90。3;0。20。30。30。70。4;0。20。30。30。60。4;0。20。30。40。40。3;0。20。20。30。20。2;0。20。20。20。20。5];%未插值直接画图figure〔1〕surf〔x,y,z〕;shadingflat光滑1。21。21。11。11。111。11。11。21。111。21。111。211。2111。11。11。210。91。110。80。710。70。70。40。80。80。60。30。60。60。40。20。30。40。30。20。20。20。20。30。20。30。20。20。20。20。20。20。60。30。50。30。70。40。40。40。90。50。60。40。80。70。50。60。90。40。40。50。70。50。60。30。70。40。50。40。60。40。40。30。40。50。40。50。30。50。80。80。20。30。60。40。20。20。20。20。20。20。20。10。20。20。20。20。20。40。30。70。30。50。50。80。60。60。30。60。40。50。410。50。80。60。90。60。40。610。40。50。41。10。50。50。30。90。40。20。50。50。30。20。20。80。30。20。40。30。20。20。20。50。20。40。30。60。20。20。40。7%创立图形窗口10。71。20。80。81。10。90。810。80。90。9110。50。80。810。60。911。30。710。71。20。810。81。30。610。91。30。90。80。80。80。60。70。40。70。40。40。30。50。30。30。30。40。20。40。51,并激活%用shadingflat命令,使曲面变的title〔'未插值地形图'〕xlabel〔'横坐标'〕ylabel〔'纵坐标'〕zlabel〔'高度'〕%三次插值后画图%画地形图xi=0:0。05:20;yi=20:-0。05:0;%'cubic'三次插值%底面带等高线zi=interp2(x,y,z,xi',yi,'cubic');surfc(xi,yi,zi);shadingflattitle('插值后地形图’)xlabel('横坐标')ylabel('纵坐标')zlabel('高度')%画立体等高线图contour3(xi,yi,zi);title('立体等高线图’)xlabel('横坐标')ylabel('纵坐标')zlabel('高度')%画等高线图[c,h]=contour(xi,yi,zi);clabel(c,h);%用于为2维等高线添加标签colormapcool%冷色调title('平面等高线图’)xlabel('横坐标')ylabel('纵坐标')ge回归拟合functionyhat=Logisfun(beta,x)yhat=beta(1)。/(1+(beta(1)/beta(2)-1)。*exp(-beta(3)。*x));clearally=[3。95。37。29。612。917。123。231。438。650。262。9。。。76。092。0106。5123。2131。7150。7179。3204。0226。5251。4281。4]';x=(1:22)';beta0=[400,3。0,0。20]';%非线性回归’Logisfun'为回归模型[beta,r,j]=nlinfit(x,y,'Logisfun',beta0);%beta0为回归系数初始迭代点%beta为回归系数%r为残差%输出拟合表达式:fprintf('回归方程为y=%5。4f/(1+%5。4f*exp(-%5。4f*x))\n',beta(1),beta(1)/beta(2)-1,beta(3))%求均方误差根rmse=sqrt(sum(12)/22);rmse%预测和误差估计:[Y,DELTA]=nlpredci('Logisfun',x,beta,r,j);%DELTA为误差限%丫为预测值(拟合后的表达式求值)plot(x,Y,x,y,'o',x,Y+DELTA,':',x,Y-DELTA,':')%lny=lna+bxclearally=[3。95。37。29。612。917。123。231。438。650。262。976。0];%Y为列向量Y=log(y');x=1:12;%X为两列X=[ones(12,1),x'];[b,bint,r,rint,stats]=regress(Y,X);%b为参数的点估计disp('b为参数的点估计')b%bint为参数的区间估计disp('bint为参数的区间估计')bint%stats(1)为相关系数越接近1回归方程越显著disp('stats(1)')stats(1)%stats(2)为F值越大回归越显著disp('stats(2)')stats(2)%stats(3)为与F对应的概率PP0表示函数已收敛到x处%output中Iterations表示迭代次数%Algorithm表示采用算法%FuncCount表示函数 评价 LEC评价法下载LEC评价法下载评价量规免费下载学院评价表文档下载学院评价表文档下载 次数%遗传算法%调整最大允许的代数1万代,种群规模为200options=gaoptimset('Generations',10000,'PopulationSize',200);%设置两个变量,限制0<=x1,x2<=2[x2,fval2,exitflag2,output2]=ga(@rosenbrock,2,[1,0;0,1;-1,0;0,-1],[2;2;0;0],口,口,[],[],[],options);%exiflag>0表示求解成功functiony=rosenbrock(x)y=100*(x(2)-x(1)A2)A2+(1-x(1))人2;通用function[s,c]=circle(r)%注意此文件名一定要为circle。m%CIRCLE计算半径为r的圆面积与周长%[s,c]=circle(r)%r圆半径,s圆面积,c圆周长%2021年9月19日编写s=pi*r*r;c=2*pi*r;function[s,c]=circle(r)%注意此文件名一定要为circle。m%CIRCLE计算半径为r的圆面积与周长%[s,c]=circle(r)%r圆半径,s圆面积,c圆周长%2021年9月19日编写s=pi*r*r;c=2*pi*r;追击仿真functiony=f(x)ifx==1y=2;endifx==2y=3;endifx==3y=4;endifx==4y=1;end%四人追逐问题实验%f。m文件用于调节追击次序即第一人追第二人,第二人追第三人,第三人追第四人,第四人追第五人%最小距离%速度%时间间隔%四个人的横坐标%四个人的纵坐标%第一个人的初始%第二个人的初始%第三个人的初始%第四个人的初始D=2;v=10;dt=0。1;x=zeros(4,103);y=zeros(4,103);x(1,1)=100;y(1,1)=0;坐标(100,0)x(2,1)=0;y(2,1)=0;坐标(0,0)x(3,1)=0;y(3,1)=100;坐标(0,100)x(4,1)=100;y(4,1)=100;坐标(100,100)k=1;t=0;%追击模拟while(sqrt((x(1,k)-x(2,k)『2+(y(1,k)-y(2,k)『2)>D)k=k+1;t=t+dt;fori=1:4d=sqrt((x(f(i),k-1)-x(i,k-1))A2+(y(f(i),k-1)-y(i,k-1))A2);%两人距离cosx=(x(f(i),k-1)-x(i,k-1))/d;sinx=(y(f(i),k-1)-y(i,k-1))/d;x(i,k)=x(i,k-1)+v*cosx*dt;%求新的x坐标y(i,k)=y(i,k-1)+v*sinx*dt;%求新的y坐标endend%描绘追击图像fori=1:kplot(x(1,i),y(1,i),'o',x(2,i),y(2,i),'*',x(3,i),y(3,i),'o',x(4,i),y(4,i),'*')pause(0。01);holdonend动态规划clearallcic%maxz=g1(x1)+g2(x2)+g3(x3)%x1+x2+x3=n;0<=xi<=n%算法:突出阶段的动态规划%fl(x)=g1(x)0<=x<=n%fi(x)=max{gi(y)+fi-1(x-y)}0<=x<=n,0<=y<=n%数据结构n=7;%总金额m=3;%阶段数income=[0,0。11,0。13,0。15,0。21,0。24,0。30,0。35;0,0。12,0。16,0。21,0。23,0。25,0。24,0。34;0,0。08,0。12,0。2,0。24,0。26,0。30,0。35];%三个工程的收益income(k,i)k阶段投资i-1的收益f=zeros(3,8);%f(k,i)当前投资i-1最大收益a=zeros(3,8);%a(i,j)前i个工程投资j-1所获得最大利润时,给i工程的投资f(1,:)=income(1,:);a(1,:)=[0,1,2,3,4,5,6,7];%动态规划fork=2:m%阶段forj=0:n%到本阶段为止总投资量fori=0:j%前一阶段投资量iff(k-1,i+1)+income(k,j-i+1)>=f(k,j+1)f(k,j+1)=f(k-1,i+1)+income(k,j-i+1);a(k,j+1)=j-i;%本阶段投资量end%ifend%forend%forend%for%出结果f(m,n+1)out=n+1;fori=m:-1:1a(i,out)out=out-a(i,out);end%for残缺棋盘function[board,amount]=cover(i,j,k,l,board,size,amount)%(i,j)为左上角(k,l)残缺size为规模amount为片数ifsize==1returnendamount=amount+1;size=size/2;if(k=size+i)&(l=size+j)%残缺位于右上棋盘board(size+i,size+j-1)=amount;board(size+i,size+j尸amount;board(size+i-1,size+j-1)=amount;%放置[board,amount]=cover(i,j+size,k,l,board,size,amount);[board,amount]=cover(i,j,i+size-1,j+size-1,board,size,amount);[board,amount]=cover(size+i,size+j,size+i,size+j,board,size,amount);[board,amount]=cover(i+size,j,i+size,j+size-1,board,size,amount);elseif(k>=size+i)&(l>=size+j)%残缺位于右下棋盘board(size+i,size+j-1)=amount;board(size+i-1,size+j尸amount;board(size+i-1,size+j-1)=amount;%放置[board,amount]=cover(size+i,size+j,k,l,board,size,amount);[board,amount]=cover(i,j+size,size+i-1,j+size,board,size,amount);[board,amount]=cover(i,j,i+size-1,j+size-1,board,size,amount);[board,amount]=cover(i+size,j,i+size,j+size-1,board,size,amount);endend%残缺棋盘board=zeros(100,100);n=4;size=2An;amount=0;[board,amount]=cover(1,1,2,5,board,size,amount);board(1:size,1:size)广度优先搜索functiony=check(i,j,maze)if(i<=8)&0<=8)&(i>=1)&(j>=1)y=i;elsey=0;returnendifmaze(i,j)==1|maze(i,j)==-1y=0;returnendclearallcicmaze=[0,0,0,0,0,0,0,0;0,1,1,1,1,0,1,0;0,0,0,0,1,0,1,0;0,1,0,0,0,0,1,0;0,1,0,1,1,0,1,0;0,1,0,0,0,0,1,1;0,1,0,0,1,0,0,0;0,1,1,1,1,1,1,0];%迷宫:0为路,1为墙,-1为遍历过fx(1:4)=[1,-1,0,0];fy(1:4)=[0,0,-1,1];sq。pre=zeros(1,100);sq。x=zeros(1,100);sq。y=zeros(1,100);qh=0;%队头指针qe=1;%队尾指针maze(1,1)=-1;%第一个元素入队sq。pre(1)=0;sq。x(1)=1;sq。y(1)=1;whileqh-qe~=0qh=qh+1;bb=0;fork=1:4i=sq。x(qh)+fx(k);j=sq。y(qh)+fy(k);ifcheck(i,j,maze)==1qe=qe+1;%入队sq。x(qe)=i;sq。y(qe)=j;sq。pre(qe)=qh;maze(i,j)=-1;ifi==8&j==8%如果为图最后一个点whileqe~=0sq。x(qe)sq。y(qe)qe=sq。pre(qe);endbb=1;break;end%ifend%ifendifbb==1breakendend%while回溯n皇后function[chess,row,main,deputy,number]=justtry(i,n,chess,row,main,deputy,number);fork=1:8ifrow(k)==0&main(i-k+n)==0&deputy(i+k-1)==0%此棋盘可继续放子chess(i,k)=1;row(k)=1;main(i-k+n)=1;deputy(i+k-1)=1;ifi==8%如果棋盘搜索结束number=number+1chesselse%没有结束继续深搜[chess,row,main,deputy,number]=justtry(i+1,n,chess,row,main,deputy,number);%递归endchess(i,k)=0;%回溯row(k)=0;main(i-k+n)=0;deputy(i+k-1)=0;endendclearallclc%n皇后问题n=8;chess=zeros(n,n);row=zeros(1,n);%记录n列被占用的情况main=zeros(1,2*n-1);%记录主对角线的使用情况deputy=zeros(1,2*n-1);%记录从对角线的使用情况number=0;[chess,row,main,deputy,number]=justtry(1,n,chess,row,main,deputy,number);密宫所有路clearallclcmaze=[0,0,0,0,0,0,0,0;0,1,1,1,1,0,1,0;0,0,0,0,101,0;0,1,0,0,001,0;0,1,0,1,1,0,1,0;0,1,0,0,0,0,1,1;0,1,0,0,1,0,0,0;0,1,1,1,1,1,1,0];%迷宫:0为路,1为墙,2为遍历过total=0;maze(1,1)=2;[total,maze]=search(1,1,maze,total);function[total,maze]=search(i,j,maze,total);fx(1:4)=[1,0,-1,0];fy(1:4)=[0,1,0,-1];fork=1:4newi=i+fx(k);newj=j+fy(k);if(newi<=8)&(newj<=8)&(newi>=1)&(newj>=1)&maze(newi,newj)==0maze(newi,newj)=2;%lit点已走ifnewi==8&newj==8total=total+1mazeelse[total,maze]=search(newi,newj,maze,total);end%ifi+fx(k)==8&j+fy(y)==8maze(newi,newj)=0;%回溯end%if(newi<=8)&(newj<=8)&(newi>=1)&(newj>=1)&maze(newi,newj)==0end%fork=1:4end排列树的回溯搜索function[chess,main,deputy,number]=justtry(i,n,chess,main,deputy,number);ifi==9number=number+1chesselsefork=i:8ifmain(i-chess(k)+n)==0&deputy(i+chess(k)-1)==0%此棋盘可继续放子(主,副对角线可放子)t=chess(k);%交换chess(k尸chess(i);chess(i)=t;main(i-chess(k)+n)=1;deputy(i+chess(k)-1)=1;[chess,main,deputy,number]=justtry(i+1,n,chess,main,deputy,number);%递归t=chess(k);%回溯chess(k尸chess(i);chess(i)=t;main(i-chess(k)+n)=0;deputy(i+chess(k)-1)=0;endendendend%functionclearallclc%n皇后问题n=8;chess=zeros(1,n);fori=1:n%排列树chess(i)=i;endmain=zeros(1,2*n-1);%记录主对角线的使用情况deputy=zeros(1,2*n-1);%记录从对角线的使用情况number=0;[chess,main,deputy,number]=justtry(1,n,chess,main,deputy,number);
本文档为【数学建模代码汇总】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_769254
暂无简介~
格式:doc
大小:50KB
软件:Word
页数:16
分类:
上传时间:2019-11-18
浏览量:51