《数学软件报告》由会员分享,可在线阅读,更多相关《数学软件报告(47页珍藏版)》请在金锄头文库上搜索。
1、数学建模中常用的数学软件数学建模中常用的数学软件许许 淳淳延安大学计算机学院数学建模常用数学软件:1、Matlab2、Lindo/Lingo2024/7/203一、Matlab概述及主要应用领域二、Matlab运行方式三、Matlab矩阵存储与生成四、MatlabM文件与函数五、Matlab数值计算功能六、Matlab符号计算功能MATLABMATLAB软件软件软件软件目录目录2024/7/204一、Matlab概述及主要应用领域MATLAB (MATrixLABorotory,矩阵实验室)语言是一种广泛应用于工程计算及数值分析领域的新型高级语言,于1984年由美国MathWorks推出,现已
2、成为国际公认的最优秀的工程应用开发环境。MATLAB功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。2024/7/205在欧美各高等院校,MATLAB已经成为线性代数、自动控制理论、数字信号处理、时间序列分析、动态系统仿真、图像处理等课程的基本教学工具,成为大学生、硕士生大学生、硕士生以及博士生以及博士生必须掌握的基本技能。1、MATLAB能干什么?数学计算、算法开发、数据采集建模、仿真、原型数据分析、开发和可视化科学和工程图形应用程序的开发,包括图形用户界面的创建。2、MATLAB广泛应用于:数值计算、图形处理、符号运算、数学建模、系统辨识、小波分析、实时控制、动态仿真等领域。20
3、24/7/2062024/7/207工作区窗口命令历史窗口命令窗口工具栏菜单栏MATLABMATLAB的主界面的主界面Matlab的运行方式包括交互式的命令行方式和M文件的程序方式。例:在命令窗口输入命令:a=1,1.5,2,9,7;0,3.6,0.5,-4,4;7,10,-3,22,33;3,7,8.5,21,6;3,8,0,90,-20将显示一个5*5矩阵。M文件方式,可分为命令M文件和函数M文件。2024/7/208二、Matlab运行方式矩阵是MATLAB最基本的数据对象,大部分运算或命令都是在矩阵运算的意义下执行的。在MATLAB中,不需对矩阵的维数和类型进行说明,MATLAB会根据
4、用户所输入的内容自动进行配置。2024/7/209三、Matlab矩阵存储与生成2024/7/2010建立矩阵建立矩阵可以用:直接输入法、利用函数建立矩阵和利用M文件建立矩阵。1)直接输入法:将矩阵的元素用方括号括起来,按矩阵行的顺序输入各元素,同一行的各元素之间用空格或逗号分隔,不同行的元素之间用分号分隔。(也可以用回车键代替分号)例如,键入命令:A=123;456;789输出结果是:A=1234567892024/7/2011 2 2)利利用用函函数数建建立立数数值值矩矩阵阵:MATLAB提供了许多生成和操作矩阵的函数,可以利用它们去建立矩阵。例如:reshape函数和diag函数等。re
5、shape函数用于建立数值矩阵。diag函数用于产生对角阵。 3 3)利利用用MM文文件件建建立立矩矩阵阵:对于比较大且比较复杂的矩阵,可以为它专门建立一个M文件。其步骤为:第一步:使用编辑程序输入文件内容。第二步:把输入的内容以纯文本方式存盘(设文件名为mymatrix.m)。第三步:在MATLAB命令窗口中输入mymatrix,就会自动建立一个名为AM的矩阵,可供以后显示和调用。2024/7/2012冒号表达式在MATLAB中,冒号是一个重要的运算符。利用它可以产生向量,还可用来拆分矩阵。冒号表达式的一般格式是:e1:e2:e3其中e1为初始值,e2为步长,e3为终止值。冒号表达式可产生一
6、个由e1开始到e3结束,以步长e2自增的行向量。2024/7/20133建立矩阵的函数常用函数有:eye(size(A)产生与A矩阵同阶的单位矩阵zeros(m,n)产生0矩阵ones(m,n)产生幺矩阵rand(m,n)产生随机元素的矩阵size(a)返回包含两个元素的向量。length(a)返回向量的最大者。1、M文件用MATLAB语言编写的程序,称为M文件。M文件有两类:命令文件和函数文件。命令文件:没有输入参数,也不返回输出参数。函数文件:可以输入参数,也可返回输出参数。建立新的建立新的M文件:文件: 从MATLAB命令窗口的File菜单中选择New菜单项,再选择M-file命令。编辑
7、已有的编辑已有的M文件:文件:从MATLAB命令窗口的Flie菜单中选择OpenM-file命令。2024/7/2014四、MatlabM文件与函数2024/7/2015将需要运行的命令编辑到一个命令文件中,然后在MATLAB命令窗口输入该命令文件的名字,就会顺序执行命令文件中的命令。【例1】建立一个命令文件将变量a,b的值互换。e31m文件:a=1:9;b=11,12,13;14,15,16;17,18,19;c=a;a=b;b=c;ab在MATLAB的命令窗口中输入e31,将会执行该命令文件。命令文件命令文件命令文件命令文件2024/7/2016 2 2、 函数文件函数文件函数文件函数文件
8、每一个函数文件都定义一个函数。事实上,MATLAB提供的标准函数大部分都是由函数文件定义的。1 1函数文件格式函数文件格式函数文件由function语句引导,其格式为:function输出形参表=函数名(输入形参表)注释说明部分函数体注:其中函数名的命名规则与变量名相同。输入形参为函数的输入参数,输出形参为函数的输出参数。当输出形参多于1个时,则应该用方括号括起来。2024/7/20172 2函数调用函数调用函数文件编制好后,就可调用函数进行计算。函数调用的一般格式是:输出实参表=函数名(输入实参表)2024/7/2018【例例例例2 2 2 2】 利用函数文件,实现直角坐标利用函数文件,实现
9、直角坐标利用函数文件,实现直角坐标利用函数文件,实现直角坐标( (x,yx,y) )与极坐标与极坐标与极坐标与极坐标( (,) )之间的转换。之间的转换。之间的转换。之间的转换。函数文件tran.m:functiongama,theta=tran(x,y)gama=sqrt(x*x+y*y);theta=atan(y/x);调用tran.m的命令文件main1.m:x=input(Pleaseinputx=:);y=input(Pleaseinputy=:);gam,the=tran(x,y);gamthe方程(组)求解导数和微分数值积分线性优化和非线性优化曲线拟合与插值2024/7/2019
10、五、Matlab数值计算功能 1 1、方程求解、方程求解例1:求解以x3-4x+5=0.命令如下:f=(x)x.3-4*x+5;%匿名函数z=fzero(f,1)运行结果:运行结果:z=-2.4567z=-2.4567例2:求多项式方程x3-8x2+6x-30=0的解.p=1,-8,6,-30;r=roots(p)运行结果:r=7.72600.1370+1.9658i0.1370-1.9658i2024/7/2020说明:说明:11点乘是数组的运算,不加点点乘是数组的运算,不加点是矩阵的运算;是矩阵的运算;22点乘要求参与运算的两个量点乘要求参与运算的两个量两必须是维数相同,是对应元两必须是维
11、数相同,是对应元素的相乘;素的相乘; 2024/7/2021例3:求下列三阶线性代数方程组的近似解。MATLAB程序为:A=2 -5 4;1 5 -2;-1 2 4;b=5;6;5;x=Ab2024/7/2022在MATLAB命令窗口,先输入下列命令构造系数矩阵A和右端向量b:A=2 -5 4;1 5 -2;-1 2 4A=2 -5 4;1 5 -2;-1 2 4A = 2 -5 4 1 5 -2 -1 2 4b=5;6;5b=5;6;5b = 5 6 5然后只需输入命令x=Ab即可求得解x:x=Abx=Abx = 2.7674 1.1860 1.34882 2、导数和微分、导数和微分例4:求
12、向量sin(X)的13阶差分。设X由0,2间均匀分布的10个点组成。命令如下:X=linspace(0,2*pi,10);Y=sin(X);DY=diff(Y);%计算Y的一阶差分D2Y=diff(Y,2);%计算Y的二阶差分,也可用命令diff(DY)计算D3Y=diff(Y,3);%计算Y的三阶差分,也可用diff(D2Y)或diff(DY,2)2024/7/20232024/7/20243 3、数值积分、数值积分例5:求无穷定积分 y,kk=quad(f,-8,8)y = 1.00000197533430kk = 81 y1,kk1=quad8(f,-8,8)y1 = 1.0000000
13、0000023kk1 = 161 y,kk=quad(f,-15,15)y = 0.99999920879563kk = 89 y1,kk1=quad8(f,-15,15)y1 = 0.99999999999999kk1 = 769该无穷定积分的理论值为该无穷定积分的理论值为 1 f=inline(1/sqrt(2*pi)*exp(-x.2/2),x);4 4、线性优化和非线性优化、线性优化和非线性优化例6:求下面的优化问题min-5*x1-4*x2-6*x3sub.tox1-x2+x3=203*x1+2*x2+4*x3=423*x1+2*x2=300=x1;0=x2;0=x3;2024/7/
14、2025f=-5; -4; -6;A=1 -1 1;3 2 4;3 2 0;b=20;42;30;lb=zeros(3,1);x,fval,exitflag,output,lambda=linprog(f,A,b,lb)2024/7/20262024/7/2027例7:2024/7/20283 3主程序主程序youh3.myouh3.m为为: :x0=-1;1;x0=-1;1;A=;b=;A=;b=;AeqAeq=11;beq=0;=11;beq=0;vlbvlb=;=;vubvub=;=; x,fvalx,fval=fmincon(fun4,x0,A,b,Aeq,beq,vlb,vub,my
15、con=fmincon(fun4,x0,A,b,Aeq,beq,vlb,vub,mycon) )4.4.运算结果为:运算结果为: x=-1.22501.2250x=-1.22501.2250fvalfval=1.8951=1.89511 1先建立先建立M M文件文件 fun4.m,fun4.m,定义目标函数定义目标函数: : function f=fun4(x); function f=fun4(x); f=exp(x(1) f=exp(x(1) *(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x(2)+1); *(4*x(1)2+2*x(2)2+4*x(1)*x(2)+2*x
16、(2)+1);2 2再建立再建立MM文件文件mycon.mmycon.m定义非线性约束:定义非线性约束:functionfunctiong,ceqg,ceq=mycon(xmycon(x) )g=x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10;g=x(1)+x(2);1.5+x(1)*x(2)-x(1)-x(2);-x(1)*x(2)-10;5、曲线拟合与插值例8:用一个5次多项式在区间0,2内逼近函数sin(x)。命令如下:X=linspace(0,2*pi,50);Y=sin(X);P,S=polyfit(X,Y,5)%得到5次多项式的系数和
17、误差plot(X,Y,k*,X,polyval(P,X),k-)例9:已知检测参数f随时间t的采样结果,用数值插值法计算t=2,7,12,17,22,17,32,37,42,47,52,57时f的值。命令如下:T=0:5:65;X=2:5:57;F=3.2015,2.2560,879.5,1835.9,2968.8,4136.2,5237.9,6152.7,.6725.3,6848.3,6403.5,6824.7,7328.5,7857.6;F1=interp1(T,F,X)%用线性方法插值F1=interp1(T,F,X,nearest)%用最近方法插值F1=interp1(T,F,X,sp
18、line)%用三次样条方法插值F1=interp1(T,F,X,cubic)%用三次多项式方法插值所谓符号计算是指在运算时,无须事先对变量赋值,而将所得到结果以标准的符号形式来表示。MathWorks公司以Maple的内核作为符号计算引擎(Engine),依赖Maple已有的函数库,开发了实现符号计算的两个工具箱:基本符号工具箱和扩展符号工具箱。常见符号计算:解方程、微积分、简化方程表达式等。2024/7/2032六、Matlab符号计算功能2024/7/2033求极限函数limit用于求符号函数f的极限。系统可以根据用户要求,计算变量从不同方向趋近于指定值的极限值。该函数的格式及功能:1 1
19、 1 1、微积分、微积分、微积分、微积分2024/7/2034limit(f,x,a):求符号函数f(x)的极限值。即计算当变量x趋近于常数a时,f(x)函数的极限值。limit(f,a):求符号函数f(x)的极限值。由于没有指定符号函数f(x)的自变量,则使用该格式时,符号函数f(x)的变量为函数findsym(f)确定的默认自变量,既变量x趋近于a。limit(f):求符号函数f(x)的极限值。符号函数f(x)的变量为函数findsym(f)确定的默认变量;没有指定变量的目标值时,系统默认变量趋近于0,即a=0的情况。limit(f,x,a,right):求符号函数f的极限值。right表
20、示变量x从右边趋近于a。limit(f,x,a,left):求符号函数f的极限值。left表示变量x从左边趋近于a。2024/7/2035【例1】求极限syms x; %定义符号变量f=(x*(exp(sin(x)+1)-2*(exp(tan(x)-1)/sin(x)3; %确定符号表达式w=limit(f) %求函数的极限运行结果:w = -1/22024/7/2036【例2】求导数:x=sym(x);%定义符号变量diff(sin(x2)%求导运算运行结果:ans=2*cos(x2)*x2024/7/2037【例3】求下述积分。求积分:symsxint(1/(1+x2)ans=atan(x
21、)2024/7/2038【 例 4】 求 级 数 的 和 :键 入 :1/12+1/22+1/32+1/42+ symsksymsum(1/k2,1,Inf)%k值为1到无穷大ans=1/6*pi2其结果为:1/12+1/22+1/32+1/42+ =2/62024/7/2039【例5】将表达式(x9-1)分解为多个因式。symsxfactor(x9-1)ans =(x-1)*(x2+x+1)*(x6+x3+1)2 2 2 2、简化方程表达式、简化方程表达式、简化方程表达式、简化方程表达式2024/7/2040代数方程的求解求解代数方程组微分方程的求解微分方程组的求解复合方程反方程3、解方程2
22、024/7/2041【例6】解代数方程:a*x2-b*x-6=0symsabxsolve(a*x2-b*x-6)ans=1/2/a*(b+(b2+24*a)(1/2)1/2/a*(b-(b2+24*a)(1/2)即该方程有两个根:x1=1/2/a*(b+(b2+24*a)(1/2);x2=1/2/a*(b-(b2+24*a)(1/2)2024/7/20424、解方程【例7】作符号计算:a,b,x,y均为符号运算量。在符号运算前,应先将a,b,x,y定义为符号运算量2024/7/2043a=sym(a);%定义a为符号运算量,输出变量名为ab=sym(b);x=sym(x);y=sym(y);x,y=solve(a*x-b*y-1,a*x+b*y-5,x,y)%以a,b为符号常数,x,y为符号变量即可得到方程组的解:x=3/ay=2/b2024/7/2044作为一个功能强大的工具软件,Matlab具有很强的图形处理功能,提供了大量的二维、三维图形函数。由于系统采用面向对象的技术和丰富的矩阵运算,所以在图形处理方面即常方便又高效。七、绘图功能2024/7/20453.1 二维图形2024/7/20463.1 三维图形2024/7/2047