数模培训1(MATLAB基础)
- 格式:doc
- 大小:196.00 KB
- 文档页数:15
数学建模MATLAB教案第一章:MATLAB简介1.1 MATLAB概述介绍MATLAB的发展历程和特点解释MATLAB的缩写和全称1.2 MATLAB界面介绍MATLAB的工作空间熟悉MATLAB的菜单栏和工具栏1.3 MATLAB基本操作学习MATLAB的变量类型和赋值方式掌握MATLAB的运算符和矩阵运算1.4 MATLAB的帮助系统学习如何使用MATLAB的帮助系统熟悉MATLAB的文档和教程第二章:MATLAB编程2.1 MATLAB脚本编程学习编写MATLAB脚本文件掌握MATLAB脚本的基本结构2.2 MATLAB函数编程学习编写MATLAB函数文件掌握MATLAB函数的输入输出参数2.3 MATLAB编程技巧学习MATLAB的条件语句和循环语句掌握MATLAB的文件操作和数据读取2.4 MATLAB编程实例举例讲解MATLAB编程的实际应用分析并解决实际问题第三章:数学建模基础3.1 数学建模概述介绍数学建模的定义和发展历程解释数学建模的重要性和应用领域3.2 数学建模方法学习数学建模的基本方法和步骤掌握数学建模的常见技巧和策略3.3 数学建模实例举例讲解数学建模的实际应用分析并解决实际问题3.4 MATLAB在数学建模中的应用介绍MATLAB在数学建模中的优势熟悉MATLAB的数学建模工具和函数第四章:MATLAB在微积分中的应用4.1 微积分基本概念复习微积分的极限、导数和积分等基本概念4.2 MATLAB求解微积分问题学习使用MATLAB求解微分和积分问题掌握MATLAB的微积分函数和工具4.3 MATLAB在微积分建模中的应用举例讲解MATLAB在微积分建模中的实际应用分析并解决实际问题4.4 微积分建模实例举例讲解微积分建模的实际应用分析并解决实际问题教案继续:第六章:MATLAB在线性代数中的应用6.1 线性代数基本概念复习线性代数的相关概念,如矩阵、向量、线性方程组等6.2 MATLAB求解线性代数问题学习使用MATLAB求解矩阵运算、线性方程组、特征值等问题掌握MATLAB线性代数相关的函数和工具6.3 MATLAB在线性代数建模中的应用举例讲解MATLAB在线性代数建模中的实际应用分析并解决实际问题6.4 线性代数建模实例举例讲解线性代数建模的实际应用分析并解决实际问题第七章:MATLAB在概率论与数理统计中的应用7.1 概率论与数理统计基本概念复习概率论与数理统计的基本概念,如随机变量、概率分布、统计量等7.2 MATLAB求解概率论与数理统计问题学习使用MATLAB进行概率计算、统计量计算、假设检验等掌握MATLAB概率论与数理统计相关的函数和工具7.3 MATLAB在概率论与数理统计建模中的应用举例讲解MATLAB在概率论与数理统计建模中的实际应用分析并解决实际问题7.4 概率论与数理统计建模实例举例讲解概率论与数理统计建模的实际应用分析并解决实际问题第八章:MATLAB在differential equations中的应用8.1 常微分方程基本概念复习常微分方程的定义、分类和解法8.2 MATLAB求解常微分方程学习使用MATLAB求解常微分方程,包括初值问题和边界值问题掌握MATLAB常微分方程相关的函数和工具8.3 MATLAB在常微分方程建模中的应用举例讲解MATLAB在常微分方程建模中的实际应用分析并解决实际问题8.4 常微分方程建模实例举例讲解常微分方程建模的实际应用分析并解决实际问题第九章:MATLAB在优化问题中的应用9.1 优化问题基本概念复习优化问题的定义、目标和常见方法9.2 MATLAB求解优化问题学习使用MATLAB求解无约束和有约束的优化问题掌握MATLAB优化相关的函数和工具9.3 MATLAB在优化建模中的应用举例讲解MATLAB在优化建模中的实际应用分析并解决实际问题9.4 优化建模实例举例讲解优化建模的实际应用分析并解决实际问题第十章:MATLAB在数据分析和可视化中的应用10.1 数据分析基本概念复习数据分析的定义、目的和常用方法10.2 MATLAB进行数据分析学习使用MATLAB进行数据预处理、统计分析和数据可视化掌握MATLAB数据分析相关的函数和工具10.3 MATLAB在数据分析建模中的应用举例讲解MATLAB在数据分析建模中的实际应用分析并解决实际问题10.4 数据分析建模实例举例讲解数据分析建模的实际应用分析并解决实际问题教案继续:第十一章:MATLAB在信号处理中的应用11.1 信号处理基本概念复习信号处理的基本概念,如信号、系统、傅里叶变换等11.2 MATLAB进行信号处理学习使用MATLAB进行信号的、分析和处理掌握MATLAB信号处理相关的函数和工具11.3 MATLAB在信号处理建模中的应用举例讲解MATLAB在信号处理建模中的实际应用分析并解决实际问题11.4 信号处理建模实例举例讲解信号处理建模的实际应用分析并解决实际问题第十二章:MATLAB在图像处理中的应用12.1 图像处理基本概念复习图像处理的基本概念,如图像、像素、滤波等12.2 MATLAB进行图像处理学习使用MATLAB进行图像的读取、处理和显示掌握MATLAB图像处理相关的函数和工具12.3 MATLAB在图像处理建模中的应用举例讲解MATLAB在图像处理建模中的实际应用分析并解决实际问题12.4 图像处理建模实例举例讲解图像处理建模的实际应用分析并解决实际问题第十三章:MATLAB在控制系统中的应用13.1 控制系统基本概念复习控制系统的基本概念,如系统、稳定性、传递函数等13.2 MATLAB进行控制系统分析学习使用MATLAB进行控制系统的建模、分析和仿真掌握MATLAB控制系统相关的函数和工具13.3 MATLAB在控制系统建模中的应用举例讲解MATLAB在控制系统建模中的实际应用分析并解决实际问题13.4 控制系统建模实例举例讲解控制系统建模的实际应用分析并解决实际问题第十四章:MATLAB在机器学习中的应用14.1 机器学习基本概念复习机器学习的基本概念,如监督学习、非监督学习、神经网络等14.2 MATLAB进行机器学习学习使用MATLAB进行机器学习模型的构建、训练和预测掌握MATLAB机器学习相关的函数和工具14.3 MATLAB在机器学习建模中的应用举例讲解MATLAB在机器学习建模中的实际应用分析并解决实际问题14.4 机器学习建模实例举例讲解机器学习建模的实际应用分析并解决实际问题第十五章:MATLAB在数学建模竞赛中的应用15.1 数学建模竞赛基本概念介绍数学建模竞赛的背景、规则和重要性15.2 MATLAB在数学建模竞赛中的策略学习如何利用MATLAB解决数学建模竞赛中的实际问题掌握MATLAB在数学建模竞赛中的优势和技巧15.3 数学建模竞赛实例分析分析数学建模竞赛中的实际案例讲解如何利用MATLAB提高竞赛成绩15.4 数学建模竞赛训练和指导提供数学建模竞赛的训练方法和指导建议帮助学生提高数学建模竞赛的能力和水平重点和难点解析1. MATLAB的基本操作和编程:理解MATLAB的工作空间,熟悉菜单栏和工具栏,掌握变量类型和赋值方式,以及矩阵运算。
烟台大学数学建模暑期培训陈传军2010.7.12第一部分MATLAB 入门1.MATLAB作为线性系统的一种分析和仿真工具,是理工科大学生应该掌握的技术工具,它作为一种编程语言和可视化工具,可解决工程、科学计算和数学学科中许多问题. 2.MATLAB建立在向量、数组和矩阵的基础上,使用方便,人机界面直观,输出结果可视化。
3.矩阵是MA TLAB的核心4.MATLAB的进入与运行方式(两种)一、变量与函数1、变量————不需要定义MATLAB中变量的命名规则是:(1)变量名必须是不含空格的单个词;(2)变量名区分大小写;(3)变量名最多不超过19个字符;(4)变量名必须以字母打头,之后可以是任意字母、数字或下划线,变量名中不允许使用标点符号.特殊变量表2、数学运算符号及标点符号(1)MATLAB的每条命令后,若为逗号或无标点符号,则显示命令的结果;若命令后为分号,则禁止显示结果. (2)“%” 后面所有文字为注释.(3)“...”表示续行.点乘:矩阵与矩阵,向量与向量。
3、数学函数二、数组与矩阵1. 数组1、创建简单的数组x=[a b c d e f ]创建包含指定元素的行向量x=first:last创建从first开始,加1计数,到last结束的行向量x=first:increment:last创建从first开始,加increment计数,last结束的行向量x=linspace(first,last,n)创建从first开始,到last结束,有n个元素的行向量x=logspace(first,last,n)创建从first开始,到last结束,有n个元素的对数分隔行向量.2、数组元素的访问(1)访问一个元素:x(i)表示访问数组x的第i个元素.(2)访问一块元素:x(a :b :c)表示访问数组x的从第a个元素开始,以步长为b到第c个元素(但不超过c),b可以为负数,b缺损时为1.(3)直接使用元素编址序号. x([a b c d]) 表示提取数组x的第a、b、c、d个元素构成一个新的数组[x(a) x(b) x(c) x(d)].3、数组的方向前面例子中的数组都是一行数列,是行方向分布的. 称之为行向量. 数组也可以是列向量,它的数组操作和运算与行向量是一样的,唯一的区别是结果以列形式显示.产生列向量有两种方法:直接产生例c=[1;2;3;4]转置产生例b=[1 2 3 4]; c=b‟说明:以空格或逗号分隔的元素指定的是不同列的元素,而以分号分隔的元素指定了不同行的元素.4、数组的运算(1)标量-数组运算数组对标量的加、减、乘、除、乘方是数组的每个元素对该标量施加相应的加、减、乘、除、乘方运算.设:a=[a1,a2,…,an], c=标量则:a+c=[a1+c,a2+c,…,an+c]a.*c=[a1*c,a2*c,…,an*c]a./c= [a1/c,a2/c,…,an/c](右除)a.\c= [c/a1,c/a2,…,c/an] (左除)a.^c= [a1^c,a2^c,…,an^c]c.^a= [c^a1,c^a2,…,c^an]当两个数组有相同维数时,加、减、乘、除、幂运算可按元素对元素方式进行的,不同大小或维数的数组是不能进行运算的.设:a=[a1,a2,…,an], b=[b1,b2,…,bn]则:a+b= [a1+b1,a2+b2,…,an+bn]a.*b= [a1*b1,a2*b2,…,an*bn]a./b= [a1/b1,a2/b2,…,an/bn]a.\b=[b1/a1,b2/a2,…,bn/an]a.^b=[a1^b1,a2^b2,…,an^bn]2. 矩阵1、矩阵的建立逗号或空格用于分隔某一行的元素,分号用于区分不同的行. 除了分号,在输入矩阵时,按Enter键也表示开始一新行. 输入矩阵时,严格要求所有行有相同的列.例m=[1 2 3 4 ;5 6 7 8;9 10 11 12]p=[1 1 1 12 2 2 23 3 3 3]特殊矩阵的建立:a=[ ] 产生一个空矩阵,当对一项操作无结果时,返回空矩阵,空矩阵的大小为零.b=zeros(m,n) 产生一个m行、n列的零矩阵c=ones(m,n) 产生一个m行、n列的元素全为1的矩阵d=eye(m,n) 产生一个m行、n列的单位矩阵2、矩阵中元素的操作(1)矩阵A的第r行:A(r,:)(2)矩阵A的第r列:A(:,r)(3)依次提取矩阵A的每一列,将A拉伸为一个列向量:A(:)(4)取矩阵A的第i1~i2行、第j1~j2列构成新矩阵:A(i1:i2, j1:j2)(5)以逆序提取矩阵A的第i1~i2行,构成新矩阵:A(i2:-1:i1,:)(6)以逆序提取矩阵A的第j1~j2列,构成新矩阵:A(:, j2:-1:j1)(7)删除A的第i1~i2行,构成新矩阵:A(i1:i2,:)=[ ](8)删除A的第j1~j2列,构成新矩阵:A(:,j1:j2)=[ ](9)将矩阵A和B拼接成新矩阵:[A B];[A;B]3、矩阵的运算同标量-数组运算。
数模培训一、曲线插值与拟合二、数值微分与积分三、微分方程数值解四、优化问题五、回归分析1.一维插值对表格给出的函数,求出没有给出的函数值。
在实际工作中,经常会遇到插值问题。
例1:表1是待加工零件下轮廓线的一组数据,现需要得到x坐标每改变0.1时所对应的y的坐标.下面是关于插值的两条命令(专门用来解决这类问题):y=interp1(x0,y0,x) 分段线性插值y=spline(x0,y0,x) 三次样条插值其中x0,y0是已知的节点坐标,是同维向量。
y对应于x处的插值。
y与x是同维向量。
解决上述问题,我们可分两步:一用原始数据绘图作为选用插值方法的参考.二确定插值方法进行插值计算对于上述问题,可键入以下的命令:x0=[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');plot(x,y) %用三次样条插值完成第二步工作练习:对y=1/(1+x2),-5≤x≤5,用n(=11)个节点(等分)作上述两种插值,用m(=21)个插值点(等分)作图,比较结果。
解:键入并运行如下命令n=11;m=21;x=-5:10/(m-1):5;y=1./(1+x.^2);xo=-5:10/(n-1):5;yo=1./(1+xo.^2);y1=interp1(xo,yo,x);y2=spline(xo,yo,x);plot(x,y,'r',x,y1,'b',x,y2,'k')练习:在某处测得海洋不同深度处水温如下:解:输入程序:D=[446,714,950,1422,1634];T=[7.04,4.28,3.40,2.54,2.13];Di=[500,1000,1500];Ti=interp1(D,T,Di)MATLAB的命令interp1(X,Y,Xi,’method’)用于一元插值.其中Method可选’nearest’(最近邻插值),’linear’(线性插值),’spline’(三次样条插值),’cubic’(三次多项式插值)2.二维插值MATLAB中二维插值的命令是:z=interp2(x0,y0,z0,x,y,'meth')例2:在一个长为5个单位,宽为3个单位的金属薄片上测得15个点的温度值,试求出此薄片的温度分布,并绘出等温线图。
(数据如下表)程序:temps=[82,81,80,82,84;79,63,61,65,87;84,84,82,85,86];mesh(temps) %根据原始数据绘出温度分布图,可看到此图的粗造度。
%下面开始进行二维函数的三阶插值。
width=1:5; depth=1:3; di=1:0.2:3; wi=1:0.2:5;[WI,DI]=meshgrid(wi,di);%增加了节点数目ZI=interp2(width,depth,temps,WI,DI,'cubic');% 对数据(width,depth,temps)进 % 行三阶插值拟合。
surfc(WI,DI,ZI)contour(WI,DI,ZI)3.曲线拟合假设一函数g(x)是以表格形式给出的,现要求一函数f(x),使f(x)在某一准则下与表格函数(数据)最为接近。
由于与插值的提法不同,所以在数学上理论根据不同,解决问题的方法也不同。
此处,我们总假设f(x)是多项式。
例3:弹簧在力F的作用下伸长x厘米。
F和x在一定的范围内服从虎克定律。
试根据下在MATLAB中,用以下命令拟合多项式。
polyfit(x0,y0,n)一般,也需先观察原始数据的图像,然后再确定拟和成什么曲线。
对于上述问题,可键入以下的命令: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)得注意:有时,面对一个实际问题,究竟是用插值还是用拟合不好确定,还需大家在实际中仔细区分。
同时,大家(包括学过计算方法的同学)注意去掌握相应的理论知识。
4.数值积分先看一个例子:例4.现要根据瑞士地图计算其国土面积。
于是对地图作如下的测量:以西东方向为横轴,以南北方向为纵轴。
(选适当的点为原点)将国土最西到最东边界在x轴上的区间划取足够多的分点x i,在每个分点处可测出南北边界点的对应坐标y1,y2。
用这样的方根据地图比例知18mm相当于40km,试由上表计算瑞士国土的近似面积。
(精确值为41288km2)。
解题思路:数据实际上表示了两条曲线,实际上我们要求由两曲线所围成的图形的面积。
解此问题的方法是数值积分的方法。
具体解时我们遇到两个问题:1。
数据如何输入;2。
没有现成的命令可用。
解:对于第一个问题,我们可把数据考备成M文件(或纯文本文件)。
然后,利用数据绘制平面图形。
键入load mianji.txtA=mianji';plot(A(:,1),A(:,2),'r',A(:,1),A(:,3),'g')接下来可以计算面积。
键入:a1=trapz(A(:,1)*40/18,A(:,2)*40/18);a2=trapz(A(:,1)*40/18,A(:,3)*40/18);d=a2-a1d = 4.2414e+004至此,问题可以说得到了解决。
之所以说还有问题,是我们觉得误差较大。
但计算方法的理论给了我们更精确计算方法。
只是MATLAB没有相应的命令。
想得到更理想的结果,我们可以自己设计解决问题的方法。
(可以编写辛普森数值计算公式的程序,或用拟合的方法求出被积函数,再利用MA TLAB的命令quad,quad8)5.数值微分实际的例:已知20世纪美国人口统计数据如下,根据数据计算人口增长率。
(其解题思路:设人口是时间的函数x(t).于是人口的增长率就是x(t)对t 的导数.如果计算出人口的相关变化率xxt r =)(。
那么人口增长满足)()(t x t r x= ,它在初始条件x(0)=x0下的解为⎰=tduu r e x t x 0)(0)(.(用以检查计算结果的正确性)解:此问题的特点是以离散变量给出函数x(t),所以就要用差分来表示函数x(t)的导数.2)()()(' , )()()(' , )()()('hh a f h a f a f h h a f a f a f h a f h a f a f --+≈--≈-+≈常用后一个公式。
(因为,它实际上是用二次插值函数来代替曲线x(t))即常用三点公式来代替函数在各分点的导数值:h y y y x f hy y y x f hy y x f nn n n kk k 234)('243)('1-n 1,2,k 2)('1221001+-≈-+-≈=-≈--+ MATLAB 用命令diff 按两点公式计算差分;此题自编程序用三点公式计算相关变化率.编程如下: for i=1:length(x) if i==1r(1)=(-3*x(1)+4*x(1+1)-x(1+2))/(20*x(1)); elseif i~=length(x)r(i)=(x(i+1)-x(i-1))/(20*x(i)); elser(length(x))=(x(length(x)-2)-4*x(length(x)-1)+3*x(length(x)))/(20*x(length(x))); end end r=r;保存为diff3.m 文件听候调用.再在命令窗内键入X=[1900,1910,1920,1930,1940,1950,1960,1970,1980,1990];x=[76.0, 92.0, 106.5, 123.2, 131.7, 150.7, 179.3, 204.0, 226.5, 251.4]; diff3;由于r 以离散数据给出,所以要用数值积分计算.键入 x(1,1)*exp(trapz(X(1,1:9),r(1:9)))数值积分命令:trapz(x),trapz(x,y),quad(‘fun ’,a,b)等.6:微分方程数值解(单摆问题)单摆问题的数学模型是θθsin g l -= 在初始角度不大时,问题可以得到很好地解决,但如果初始角较大,此方程无法求出解析解.现问题是当初始角为100和300时,求出其解,画出解的图形进行比较。
解:若θ0较小,则原方程可用0=+θθg l 来近似.其解析解为θ(t)= θ0cos ωt,gl=ω. 若不用线性方程来近似,那么有两个模型:30)0(sin 10)0(sin 00⎪⎩⎪⎨⎧=-=⎪⎩⎪⎨⎧=-=θθθθθθl g l g 取g=9.8,l=25, 100=0.1745, 300=0.5236.用MA TLAB 求这两个模型的数值解,先要作如下的处理:令x1=θ,x2=θ’,则模型变为0)0(,5236.0)0(sin l g - x x x 0)0(,1745.0)0(sin l g - x x x 211221211221⎪⎪⎩⎪⎪⎨⎧====⎪⎪⎩⎪⎪⎨⎧====x x x x x x 再编函数文件function xdot=danbai(t,x) xdot=zeros(2,1);xdot(1)=x(2);xdot(2)=-9.8/25*sin(x(1)); 在命令窗口键入[t,x]=ode45(‘danbai ’,[0:0.1:20],[0.1745,0]); [t,y]=ode45(‘danbai ’,[0:0.1:20],[0.5236,0]); plot(t,x(:,1),’r ’,t,y(:,1),’k ’);参考书:数学实验,高等教育出版社7.解优化问题线性规划有约束极小问题 模型UBx LB , , . .,min 11≤≤=≤=b x A b Ax t s cx z用命令[x, fval]= linprog(f,A,b,A1,b1,lb,ub) 例1:Find x that minimizes f(x )=-5x 1-4x 2-6x 3 subject to x 1-x 2+x 3≦20 3x 1+2x 2+4x 3≦42 3x 1+2x 2≦300≦x 1, 0≦x 2,0≦x 3First, enter the coefficients: f = [-5; -4; -6] A = [1 -1 1 3 2 4 3 2 0]; b = [20; 42; 30]; lb = zeros(3,1);Next, call a linear programming routine:[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb); Entering x, fval,lambda.ineqlin, and lambda.lower gets x =0.0000 15.0000 3.0000 fval =-78.0000 和其它信息。