您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 数学建模比赛前准备的Matlab和lingo代码
Matlab和lingo代码Matlab........................................................................................................0基础知识..............................................................错误!未定义书签。Polyval................................................................................................2Polyfit................................................................................................3interrep1............................................................................................3回归分析..............................................................................................4牛顿迭代法求解非线性方程组..........................................................5建模课上的代码................................................................................11lingo求解部分.......................................................................................20目标规划............................................................................................24第10章数据的统计描述和分析....................................................29!7个工人,7个工作的分配问题;..................................................30案例分析............................................................................................31差分方程............................................................................................34!三阶段面试模型;............................................................................36装配线平衡模型................................................................................38露天矿生产的车辆安排(CMCM2003B)..........................................401Matlab基础知识相关系数矩阵的方式,通过Matlab软件进行相关性分析,得到主成分种类与重要指标的线性组合:4321375.0395.0398.0375.01xxxxz(10)prod连乘积fork=1:100p(k)=1-prod(365-k+1:365)/365^k;endplot(p)~=不等于数论函数gcd(a,b)两个整数的最大公约数lcm(a,b)两个整数的最小公倍数求整函数与截尾函数ceil(x)表示大于或等于实数x的最小整数floor(x)表示小于或等于实数x的最大整数round(x)最接近x的整数syms表达式中包含的变量factor(表达式)因式分解syms表达式中包含的变量expand(表达式)代数式展开2syms表达式中包含的变量collect(表达式,指定的变量)合并同类项syms表达式中包含的变量simplify(表达式)进行数学式化简syms表达式和代换式中包含的所有变量subs(表达式,要替换的变量或式子,代换式)symsxTaylor(f(x),x,n,a)fplot('f(x)',[xmin,xmax,ymin,ymax])symsxint(f(x),x,a,b)Polyval计算对多项式p(x)=1+2*x+3*x^2,计算在x=5,7,9的值。p=[321];x=[5,7,9];polyval(p,[579])%结果为ans=386162262Polyfit拟合曲线x=[1,2,4,7,9,12,13,15,17]';F=[1.5,3.9,6.6,11.7,15.6,18.8,19.6,20.6,21.1]';plot(x,F,'.')%从图像上我们发现:前5个数据应与直线拟合,后5个数据应与二次曲线拟合。于是键入:a=polyfit(x(1:5),F(1:5),1);a=polyfit(x(5:9),F(5:9),2)生日概率模型forn=1:100p(n)=1-prod(365-n+1:365)/365^n;endplot(p)c5=polyfit(n,p,5)c5=-0.00000.0000-0.00010.0023-0.0046-0.0020该多项式即为:0020.00046.00023.00001.00023456524334251xxxxxcxcxcxcxcxc在Matlab环境下继续键入下列指令:p5=polyval(c5,n);////////用多项式近似计算100个概率值plot(n,p,n,p5,'.')////////画出拟合多项式的图象与概率曲线作比较interrep1x0=[0,3,5,7,9,11,12,13,14,15]';y0=[0,1.2,1.7,2.0,2.1,2.0,1.8,1.2,1.0,1.6]'plot(x0,y0)%完成第一步工作x=0:0.1:15;y=interp1(x0,y0,’x');%用分段线性插值完成第二步工作plot(x,y)y=spline(x0,y0,’x');4plot(x,y)%用三次样条插值完成第二步工作指数模型t=1790:10:1980;x(t)=[3.95.37.29.612.917.123.231.438.650.262.976.092.0106.5123.2131.7150.7179.3204.0226.5];y=log(x(t));a=polyfit(t,y,1)r=a(1),x0=exp(a(2))x1=x0.*exp(r.*t);plot(t,x(t),'r',t,x1,'b')%%%%%%阻滞增长模型(或Logistic模型)%%%%%%%%%%建立函数文件curvefit_fun2.mfunctionf=curvefit_fun2(a,t)f=a(1)./(1+(a(1)/3.9-1)*exp(-a(2)*(t-1790)));在命令文件main.m中调用函数文件curvefit_fun2.m%定义向量(数组)x=1790:10:1990;y=[3.95.37.29.612.917.123.231.438.650.262.976...92106.5123.2131.7150.7179.3204226.5251.4];plot(x,y,'*',x,y);%画点,并且画一直线把各点连起来holdon;a0=[0.001,1];%初值%最重要的函数,第1个参数是函数名(一个同名的m文件定义),第2个参数是初值,第3、4个参数是已知数据点a=lsqcurvefit('curvefit_fun2',a0,x,y);disp(['a='num2str(a)]);%显示结果%画图检验结果xi=1790:5:2020;yi=curvefit_fun2(a,xi);plot(xi,yi,'r');%预测2010年的数据x1=2010;y1=curvefit_fun2(a,x1)holdoff回归分析设回归模型为y=β0+β1x,5在MATLAB命令窗口中键入下列命令进行回归分析(px_reg11.m)x=0.1:0.01:0.18;x=[x,0.2,0.21,0.23]';y=[42,41.5,45,45.5,45,47.5,49,55,50,55,55.5,60.5]';X=[ones(12,1),x];%一元回归[b,bint,r,rint,stats]=regress(y,X,0.05);b,bint,stats,rcoplot(r,rint)得结果和图b=27.0269140.6194bint=22.322631.7313111.7842169.4546stats=0.9219118.06700.00003.1095结果含义为β0=27.0269β1=140.6194β0的置信区间是[22.3226,31.7313]β1的置信区间是[111.7842,169.4546]R2=0.9219F=118.0670,p10-4.R是衡量y与x的相关程度的指标,称为相关系数。R越大,x与y关系越密切。通常R大于0.9才认为相关关系成立。F是一统计指标p是与F对应的概率,当p0.05时,回归模型成立。此例中p=010-40.05,所以,所得回归模型成立。牛顿迭代法求解非线性方程组1实验原理对于非线性方程611,221,21,2(,...)(,...)(,...)nnnnfxxxfxxxffxxx在()kX处按照多元函数的泰勒展开,并取线性项得到2()()()()(1)()11211()()()()(1)()12()22(1)()()()()()12(,...,)(,...,)'()0(,...,)kkkkkknkkkkkknkkkkkkknnnnfxxxxxfxxxxxfxxxfxxx其中1111...'()...nnnnffxxfxffxx2()()()()(1)()11211()()()()(1)()112()22(1)()()()()()12(,...,)(,...,)'()(,...,)kkkkkknkkkkkknkkkkkkknnnnfxxxxxfxxxxxfxxxfxxx2数据来源计算非线性方程组221122121210801080xxxxxxx给定初值00.0Tx,要求求解精度达到0.000013实验步骤步骤一:首先建立函数FX,方程编程如下,将F.m保存到工作路径中:functionf=F(x)f(1)=x(1)^2-10*x(1)+x(2)^2+8;f(2)=x(1)*x(2)^2+x(1)-10*x(2)+8;7f=[f(1),f(2)];步骤二:建立函数()DFX,用于求方程的jacobi矩阵,将DF.m保存到工作路径中:functiondf=DF(x)df=[2*x(1)-10,2*x(2);x(2)^2+1,2*x(1)*x(2)-10];%jacobi矩阵是一阶偏导数
本文标题:数学建模比赛前准备的Matlab和lingo代码
链接地址:https://www.777doc.com/doc-5747658 .html