主讲人:孙云龙数学建模课件Matlab程序设计数学建模主讲人:孙云龙数学建模课件[x,y]=meshgrid(-1:0.1:1);z=x.*y;surf(z);ta=axis;fori=1:20surf(sin(0.5*i.*z))shadinginterpaxis(ta)ft(:,i)=getframe;endmovie(ft)网格点矩阵绘图取坐标绘图去网格设坐标获取影片的帧画面播放l01.m1、基础一、Matlab程序命令行变量m文件编辑主讲人:孙云龙数学建模课件简单条件语句多条件条件语句if(条件式)语句组endif(条件式1)语句组1elseif(条件式2)语句组2elseif(条件式3)语句组3else......end多选择条件语句if(条件式)语句组1else语句组2end2、条件语句if-else-end分支结构主讲人:孙云龙数学建模课件例1函数100010xyxxif(x0)y=-1elseif(x=0)y=0elsey=1end编程1l02.m编程2函数??另:x?输入一个x的值,输出符号函数y的值主讲人:孙云龙数学建模课件switch-case结构swith开关表达式case表达式1语句段1case表达式2语句段2……otherwise语句段nendmonth=input(‘month=’);switchmonthcase{3,4,5}season='spring'case{6,7,8}season='summer'case{9,10,11}season='autumn'otherwiseseason='winter'endl03.m例2主讲人:孙云龙数学建模课件array是一个矩阵:循环列一般:数组一般:循环变量=初值:步长:终值默认:步长=1第一类循环语句第二类循环语句结构for循环变量=array循环体语句组endwhile(条件式)循环体语句组end3、循环语句主讲人:孙云龙数学建模课件生成一个6阶矩阵,使其主对角线上元素皆为1,与主对角线相邻元素皆为2,其余皆为0。120000212000021200002120000212000021a例3fori=1:6forj=1:6ifi==ja(i,j)=1;elseifabs(i-j)==1a(i,j)=2;elsea(i,j)=0;endendenda结果:编程l04.m主讲人:孙云龙数学建模课件求自然数的前n项和编程结果:n=100Sum=5050n=input(‘n=‘)sum=0;k=1;whilek=nsum=sum+k;k=k+1;endsuml05.m好不好?怎么改?1234注:赋指语句——自相关应用:求和例4主讲人:孙云龙数学建模课件例5l06.msum=zeros(6,1);forn=eye(6,6)sum=sum+n;endsum结果是多少?主讲人:孙云龙数学建模课件指令4、程序流控制指令break跳出循环一般和if结构结合使用continue结束本次循环继续进行下次循环return终止当前指令返回上一级或等待键盘输入命令pause暂停按任意键继续input输入提示键盘输入主讲人:孙云龙数学建模课件编程连续奇数求和clearsum1=0;fori=1:100n=2*i-1;ifsum11000sum1=sum1+n;elsebreakendendsum1,nl07.m程序对不对?从1开始一直到和达到1000为止问:加了多少项例6主讲人:孙云龙数学建模课件1、Fibonacci数列问题:求前n项?Fibonacci数列元素为:1,1,2,3,5,8,…,满足关系F(1)=1F(2)=1F(n)=F(n-1)+F(n-2)二、程序设计实例Matlab主讲人:孙云龙数学建模课件n=?程序pf.mpf1.mifn==1f=1;elseifn==2f=[12];elsef=[12];fori=3:nf(i)=f(i-1)+f(i-2);endendfunctionf=pf(n)黄金分割主讲人:孙云龙数学建模课件工资、薪金所得适用级数全月应纳税所得额(基数3500元)年终奖税率(%)10-1500(0,18000)321500-4500(18000,54000)1034500-9000(54000,108000)2049000-35000(108000,420000)25535000-55000(420000,660000)30655000-80000(660000,960000)35780000-(960000,)452、个人所得税问题年奖金有什么问题?主讲人:孙云龙数学建模课件问题1、纳税额计算函数条件判断程序t1.mt2.mfunctionf=t1(x)t=x-3500;ift=0f=0;elseift=1500f=t*0.03;elseift=4500f=45+(t-1500)*0.1;……elsef=29625+(t-80000)*0.45;end级数月应纳税所得额(基数3500元)税率(%)10-1500321500-45001034500-90002049000-3500025535000-5500030655000-8000035780000-45主讲人:孙云龙数学建模课件问题2、分配月收入、年奖金合理避税为什么如何分程序搜索:定步长for-endwhile-end纪录最优点if-endt3.m算法function[min,k1]=tax3(x)k=0;min=t1(x);k1=0;whilek=xd1=t1(x-k)+(t2(12*k)/12);ifmind1min=d1;k1=k;endk=k+1;end另:程序有问题?[mint,k1]=t3(5000)主讲人:孙云龙数学建模课件继续:分配月收入、年奖金——非专业——报告程序t4.m算法循环计算各种收入分配方式归类fori=1:nA(1,i)=100*i;[A(2,i),A(3,i)]=t5(A(1,i));endB=A(:,1);k=1;forj=2:nifA(3,j)~=B(3,k)k=k+1;B(:,k)=A(:,j);endendB(:,k+1)=A(:,n)主讲人:孙云龙数学建模课件月收入100~50005100~65006600~1050010600~12500纳税04548~9090~605605~795作奖金0100~150015002600~450012500~20000795~24454500t4.m分配月收入、年奖金结果主讲人:孙云龙数学建模课件3、哥德巴赫猜想所有大偶数均为两素数之和算法?判断素数不能被2~整除的数?验证循环判断主讲人:孙云龙数学建模课件?判断素数不能被2~整除的数整除:mod(i,m)=0m=2mfix(sqrt(i))m=m+1yi:整数form=2:fix(sqrt(i))ifmod(i,m)==0k=1;break;elsek=0;endend编程算法纪录kk=0k=1ynn非素数素数主讲人:孙云龙数学建模课件纪录素数主程序:求和n=input('n=');fori=3:n(判断素数)(记录素数)endprimesum(prime)ifk==0;prime=[prime[i]];endgd.mprime=[2];i=3ini=i+1y素数求和nn:终点判断素数记录素数程序另:primesisprime主讲人:孙云龙数学建模课件哥德巴赫猜想算法循环:素数验证:满足p=primes(i);forj=1:length(p)fork=j:length(p)endendifp(j)+p(k)==im(2:3,i/2-1)=[p(j)p(k)]';endn=1000;m=4:2:n;fori=4:2:nendmk=1;fori=1:size(m,2)ifm(2,j)==0k=0;endendkgd1.m主讲人:孙云龙数学建模课件END