数学建模培训m文件

合集下载

(2024年)数学建模培训Matlabppt课件

(2024年)数学建模培训Matlabppt课件

2024/3/26
29
THANKS FOR WATCHING
感谢您的观看
2024/3/26
30
图形编辑与美化
Matlab的图形编辑功能强大,可 以对图形进行各种编辑操作,如 添加标题、轴标签、图例等,同 时还可以对图形的颜色、线型、
字体等进行美化。
2024/3/26
23
数值计算与优化功能
线性方程组求解
利用Matlab的数值计算功能,可以高效地求解线性方程组,为数学 建模中的数据处理提供了便利。
符号微分与积分
Matlab提供了强大的符号微分与积分功能,可以对符号表达式进 行求导、积分等操作,为数学建模提供了有力的工具。
22
图形可视化功能
二维图形绘制
利用Matlab的绘图函数,可以轻 松地绘制出各种二维图形,如折 线图、散点图、柱状图等,满足
数学建模中的图形展示需求。
三维图形绘制
Matlab支持三维图形的绘制,可 以创建三维曲面、散点图等,为 复杂数据的可视化提供了可能。
12
非线性规划模型
1 2
非线性规划基本概念
目标函数、约束条件、可行域、局部最优解、全 局最优解等。
Matlab实现非线性规划
使用`fmincon`函数求解非线性规划问题,包括 输入参数设置、输出结果解读等。
3
非线性规划应用案例
经济模型、金融投资、最优控制问题等。
2024/3/26
13
整数规划模型
2024/3/26
26
数学建模竞赛简介
数学建模竞赛是一种基于数学方法解决实际问题的竞 赛形式,旨在培养参赛者的数学素养、创新能力和团
队协作精神。
常见的数学建模竞赛包括全国大学生数学建模竞赛、 美国大学生数学建模竞赛(MCM/ICM)等,吸引了

数学建模培训精品课件ppt

数学建模培训精品课件ppt
R具有丰富的统计函数库和图形库,可以进行各种统计分析 、数据挖掘和预测建模。R还具有开源的特性,用户可以自由 地使用和修改代码,同时也有大量的社区资源和教程可供参 考。
CHAPTER 04
数学建模竞赛经验分享
竞赛准备
知识储备
01
掌握数学建模所需的基本数学知识,如概率论、统计学、线性
代数和微积分等。
Python的NumPy库提供了强大的数组操作功能,可以进行大规模数值计算; Pandas库提供了数据分析和处理的功能;SciPy库可以进行各种科学计算和数学 建模;Scikit-learn库则提供了丰富的机器学习算法和模型。
R
R是一种用于统计计算和图形的编程语言,它提供了大量的 统计函数和图形工具,方便用户进行数据分析、统计建模和 可视化。
微分方程模型
总结词
微分方程模型用于描述动态系统的变化规律,通过建立微分方程来描述系统的状态和行 为。
详细描述
微分方程模型基于物理定律和数学原理,通过求解微分方程来预测系统的未来状态。常 见的微分方程模型有常微分方程、偏微分方程等,广泛应用于物理学、工程学等领域。
优化模型
总结词
优化模型用于寻找最优解,通过建立数学模型来描述问题的约束条件和目标函数。
任务。
创新思维
在解决问题时尝试不同 的方法和思路,不要局
限于一种解决方案。
文档规范
注意文档的规范性和可 读性,方便评委理解和
评价。
CHAPTER 05
数学建模前沿动态
人工智能与数学建模
人工智能算法的数学原理
解释人工智能算法背后的数学原理,如线性代数、概率论和统计 等。
机器学习与数学建模
介绍机器学习中的数学建模方法,如回归分析、分类和聚类等。

数学建模竞赛培训与数学建模报告PPT课件

数学建模竞赛培训与数学建模报告PPT课件

36 40
x1 , x 2 , x 3 0
矩阵形式:
max cTx s.t. Ax≤b
x≥0
c T [4, 3, 2], x T [ x1, x2 , x3 ]
2 3 1 34
A
3
2
1
.5
,
b
3
6
3 2 5 4 0
30
MATLAB软件求解
Matlab中求解线性规划的命令为: linprog, 解决的线性规 划的标准格式为:
min cTx s.t. A·x <= b
Aeq·x = beq VLB≤x≤VUB 其中,A, b, c, x, Aeq, beq, VLB, VUB等均表示矩阵,特别 b, c, x, beq, VLB, VUB为列矩阵。
31
命令linprog的基本调用格式
x = linprog(c, A, b, Aeq,beq ,VLB, VUB)
案例:节水洗衣机
仿真
II. 结果
1. 表 2 是溶解率 Q 0.99 时不同洗衣轮数下的最少 用水量和每一轮的最优用水量(各轮的最优用水 量恰好相等).
2. 表 3 是不同溶解率 Q 值下的最优洗衣轮数, 最少 总用水量和每一轮的最优用水量(各轮的最优用 水量恰好相等).
案例:节水洗衣机
表2 不同洗衣轮数下的最少用水量和每一轮的最优用水量
k=n-1
xn为衣服上的最
终 脏物量
案例:节水洗衣机
模型建立
1. 溶解特性和动态方程
分析:在第k轮漂洗之后和脱水之前,第k-1 轮脱水之后的脏物量xk已变成两部分:
x k p k q k ,k 0 , 1 ,2 ,,n - 1 ( 1 )

数学建模答案(完整版)

数学建模答案(完整版)

1 建立一个命令M 文件:求数60.70.80,权数分别为1.1,1.3,1.2的加权平均数。

在指令窗口输入指令edit ,打开空白的M 文件编辑器;里面输入s=60*1.1+70*1.3+80*1.2;ave=s/3然后保存即可2 编写函数M 文件SQRT.M;函数 x=567.889与0.0368处的近似值(保留有()f x =效数四位)在指令窗口输入指令edit ,打开空白的M 文件编辑器;里面输入syms x1 x2 s1 s2 zhi1 zhi2 x1=567.889;x2=0.368;s1=sqrt(x1);s2=sqrt(x2);zhi1=vpa(s1,4)zhi2=vpa(s2,4)然后保存并命名为SQRT.M 即可3用matlab 计算的值,其中a=2.3,b=4.89.()f x >> syms a b >> a=2.3;b=4.89;>> sqrt(a^2+b^2)/abs(a-b)ans = 2.08644用matlab 计算函数在x=处的值.()f x =3π>> syms x >> x=pi/3;>> sqrt(sin(x)+cos(x))/abs(1-x^2)ans = 12.09625用matlab 计算函数在x=1.23处的值.()arctan f x x =+>> syms x >> x=1.23;>> atan(x)+sqrt(log(x+1))ans = 1.78376 用matlab 计算函数在x=-2.1处的值.()()f x f x ==>> syms x >> x=-2.1;>> 2-3^x*log(abs(x))ans =1.92617 用蓝色.点连线.叉号绘制函数在[0,2]上步长为0.1的图像.>> syms x y>> x=0:0.2:2;y=2*sqrt(x);>> plot(x,y,'b.-')8 用紫色.叉号.实连线绘制函数在上步长为0.2的图像.ln 10y x =+[20,15]-->> syms x y>> x=-20:0.2:-15;y=log(abs(x+10));>> plot(x,y,'mx-')ln 10[20,y x =+--9 用红色.加号连线 虚线绘制函数在[-10,10]上步长为0.2的图像.sin(22x y π=->> syms x y;>> x=-10:0.2:10;y=sin(x/2-pi/2);>> plot(x,y,'r+--')10用紫红色.圆圈.点连线绘制函数在上步长为0.2的图像.sin(2)3y x π=+[0,4]πsin(2)sin()[0,4]322x y x y πππ=+=->> syms x y >> x=0:0.2:4*pi;y=sin(2*x+pi/3);>> plot(x,y,'mo-.')11 在同一坐标中,用分别青色.叉号.实连线与红色.星色.虚连线绘制y=与.y =>> syms x y1 y2>> x=0:pi/50:2*pi;y1=cos(3*sqrt(x));y2=3*cos(sqrt(x));>> plot(x,y1,'cx-',x,y2,'r*--')12 在同一坐标系中绘制函数这三条曲线的图标,并要求用两种方法加234,,y x y x y x ===各种标注.234,,y x y x y x ===>> syms x y1 y2 y3;>> x=-2:0.1:2;y1=x.^2;y2=x.^3;y3=x.^4;plot(x,y1,x,y2,x,y3);13 作曲线的3维图像2sin x t y t z t ⎧=⎪=⎨⎪=⎩>> syms x y t z >> t=0:1/50:2*pi;>> x=t.^2;y=sin(t);z=t;>> stem3(x,y,z)14 作环面在上的3维图像(1cos )cos (1cos )sin sin x u v y u v z u =+⎧⎪=+⎨⎪=⎩(0,2)(0,2)ππ⨯>> syms x y u v z>> u=0:pi/50:2*pi;v=0:pi/50:2*pi;>>x=(1+cos(u)).*cos(v);y=(1+cos(u)).*sin(v);z=sin(u);>> plot3(x,y,z)15 求极限0lim x +→0lim x +→>> syms x y >> y=sin(2^0.5*x)/sqrt(1-cos(x));>> limit(y,x,0,'right') ans = 216 求极限1201lim (3x x +→>> syms y x >> y=(1/3)^(1/(2*x));>> limit(y,x,0,'right') ans = 017求极限lim x >> syms x y >> y=(x*cos(x))/sqrt(1+x^3);>> limit(y,x,+inf) ans = 018 求极限21lim (1x x x x →+∞+->> syms x y >> y=((x+1)/(x-1))^(2*x);>> limit(y,x,+inf) ans = exp(4)19 求极限01cos 2lim sin x xx x →->> syms x y >> y=(1-cos(2*x))/(x*sin(x));>> limit(y,x,0) ans = 220 求极限 x →>> syms x y >> y=(sqrt(1+x)-sqrt(1-x))/x;>> limit(y,x,0) ans = 121 求极限2221lim 2x x x x x →+∞++-+>> syms x y >> y=(x^2+2*x+1)/(x^2-x+2);>> limit(y,x,+inf) ans = 122 求函数y=的导数5(21)arctan x x -+>> syms x y >> y=(2*x-1)^5+atan(x);>> diff(y) ans = 10*(2*x - 1)^4 + 1/(x^2 + 1)23 求函数y=的导数2tan 1x x y x=+>> syms y x>> y=(x*tan(x))/(1+x^2);>> diff(y)ans =tan(x)/(x^2 + 1) + (x*(tan(x)^2 + 1))/(x^2 + 1) - (2*x^2*tan(x))/(x^2 + 1)^224 求函数的导数3tan x y e x -=>> syms y x >> y=exp^(-3*x)*tan(x)>> y=exp(-3*x)*tan(x) y = exp(-3*x)*tan(x) >> diff(y) ans = exp(-3*x)*(tan(x)^2 + 1) - 3*exp(-3*x)*tan(x)25 求函数y=在x=1的导数22ln sin 2x x π+>> syms x y >> y=(1-x)/(1+x);>> diff(y,x,2) ans = 2/(x + 1)^2 - (2*(x - 1))/(x + 1)^3 >> syms x y >> y=2*log(x)+sin(pi*x/2)^2;>> dxdy=diff(y) dxdy = 2/x + pi*cos((pi*x)/2)*sin((pi*x)/2)zhi=subs(dxdy,1)zhi = 226 求函数y=的二阶导数01cos 2lim sin x x x x →-11x x-+>> syms x y>> y=(1-x)/(1+x);>> diff(y,x,2) ans = 2/(x + 1)^2 - (2*(x - 1))/(x + 1)^327 求函数的导数;>> syms x y >> y=((x-1)^3*(3+2*x)^2/(1+x)^4)^0.2;>> diff(y) ans = (((8*x + 12)*(x - 1)^3)/(x + 1)^4 + (3*(2*x + 3)^2*(x - 1)^2)/(x + 1)^4 - (4*(2*x + 3)^2*(x - 1)^3)/(x + 1)^5)/(5*(((2*x + 3)^2*(x - 1)^3)/(x + 1)^4)^(4/5))28在区间()内求函数的最值.,-∞+∞43()341f x x x =-+>> f='-3*x^4+4*x^3-1';>> [x,y]=fminbnd(f,-inf,inf)x =NaN y = NaN >> f='3*x^4-4*x^3+1';>> [x,y]=fminbnd(f,-inf,inf)x = NaN y = NaN29在区间(-1,5)内求函数发的最值.()(f x x =->> f='(x-1)*x^0.6';>> [x,y]=fminbnd(f,-1,5)x =0.3750y = -0.3470>> >> f='-(x-1)*x^0.6';>> [x,y]=fminbnd(f,-1,5)x = 4.9999y = -10.505930 求不定积分(ln 32sin )x x dx -⎰(ln 32sin )x x dx -⎰>> syms x y >> y=log(3*x)-2*sin(x);>> int(y) ans = 2*cos(x) - x + x*log(3) + x*log(x)31求不定积分2sin x e xdx ⎰>> syms x y>> y=exp(x)*sin(x)^2;>> int(y)ans =-(exp(x)*(cos(2*x) + 2*sin(2*x) - 5))/1032. 求不定积分 >> syms x y >> y=x*atan(x)/(1+x)^0.5;>> int(y)Warning: Explicit integral could not be found. ans = int((x*atan(x))/(x + 1)^(1/2), x)33.计算不定积分2(2cos )x x x e dx --⎰>> syms x y >> y=1/exp(x^2)*(2*x-cos(x));>> int(y)Warning: Explicit integral could not be found. ans = int(exp(-x^2)*(2*x - cos(x)), x)34.计算定积分10(32)xe x dx -+⎰>> syms x y >> y=exp(-x)*(3*x+2);>> int(y,0,1) ans = 5 - 8*exp(-1)10(32)x e x dx -+⎰35.计算定积分0x →120(1)cos x arc xdx+⎰>> syms y x>> y=(x^2+1)*acos(x);>> int(y,0,1)ans =11/936.计算定积分10cos ln(1)x x dx +⎰>> syms x y >> y=(cos(x)*log(x+1));>> int(y,0,1)Warning: Explicit integral could not be found. ans = int(log(x + 1)*cos(x), x == 0..1)37计算广义积分;2122x x dx +∞++-∞⎰>> syms y x >> y=(1/(x^2+2*x+2));>> int(y,-inf,inf) ans = pi 38.计算广义积分;20x dx x e +∞-⎰>> syms x y>> y=x^2*exp(-x);>> int(y,0,+inf)ans =2。

数学建模培训精品课件ppt

数学建模培训精品课件ppt
提高解决问题的能力
学员们认为,通过案例分析和实践操作,他们能够更好地解决实 际问题,提高了工作效率。
结识优秀的同行
学员们结识了很多优秀的同行,通过互相学习和交流,彼此的能 力都得到了提升。
未来发展趋势预测
数学建模与大数据结合
随着大数据时代的到来,数学建模将会与大数据更加紧密 结合,利用数据挖掘和分析技术,更好地解决实际问题。
数学建模培训精品课 件
汇报人:可编辑 2023-12-22
目 录
• 数学建模概述 • 数学建模基础知识 • 数学建模方法与技巧 • 数学建模应用领域 • 数学建模实践项目 • 数学建模培训总结与展望
01
数学建模概述
定义与特点
定义
数学建模是指用数学语言描述实 际现象、解释自然规律、解决实 际问题的过程。
Python
一款开源的编程语言,具有丰富的数 学库和工具包,适用于各种数学建模 任务。
03
数学建模方法与技巧
建模方法分类
初等模型
利用初等数学知识建立 模型,如代数方程、不
等式、几何图形等。
微分方程模型
利用微积分知识,通过 建立微分方程来描述实
际问题。
概率统计模型
利用概率论和统计学知 识,通过随机变量和随 机过程来描述实际问题
求解与分析
指导学生运用数学软件或编程语言对模型 进行求解和分析,得出结论。
建立模型
指导学生根据问题特点,选择合适的数学 方法和工具,建立数学模型。
项目成果展示与评价
成果展示
组织学生进行项目成果展示, 包括项目报告、论文、PPT演示
等。
评价标准
制定评价标准,包括问题的难 度、模型的合理性、求解的准 确性、论文的规范性等方面。

《数学建模培训》PPT课件

《数学建模培训》PPT课件

数学建模案例解析
04
经济学案例:供需平衡模型
供需平衡理论
通过数学语言描述市场需求与供给之间的平衡关 系,涉及价格、数量等关键变量。
建模过程
收集相关数据,建立需求函数和供给函数,通过 求解方程组找到均衡价格和均衡数量。
模型应用
预测市场趋势,分析政策对市场的影响,为企业 决策提供支持。
物理学案例:热传导模型
Lingo在数学建模中的应 用案例
展示Lingo在数学建模中的实 际应用,如线性规划、整数规 划、非线性规划等优化问题的 求解。
其他数学建模相关软件与工具简介
Mathematica软件
简要介绍Mathematica的特点和功能,以及其 在数学建模中的应用。
SAS软件
简要介绍SAS的特点和功能,以及其在数学建模 中的应用。
数据预处理
包括数据清洗、缺失值处 理、异常值检测等,保证 数据质量。
数据可视化
利用图表、图像等手段展 示数据,便于理解和分析 。
数据分析方法
如回归分析、时间序列分 析、聚类分析等,用于挖 掘数据中的信息和规律。
数学建模常用方法
03
回归分析
线性回归
通过最小二乘法拟合自变量和因 变量之间的线性关系,得到最佳
模型应用
预测舆论走向,分析社会热点问题,为政府和企业提供决策支持。
数学建模软件与工
05
具介绍
MATLAB软件介绍及使用技巧
MATLAB概述
简要介绍MATLAB的历史、功能和应用领域 。
MATLAB常用函数
列举并解释MATLAB中常用的数学函数、绘 图函数、数据处理函数等。
MATLAB基础操作
详细讲解MATLAB的安装、启动、界面介绍 、基本语法和数据类型等。

数学建模暑期培训课件(陈传军)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、矩阵的运算同标量-数组运算。

数学建模培训m文件

数学建模培训m文件

3.3 M文件控制结构
程序控制结构有三种:顺序结构、选择结构和循 环结构。任何复杂的程序都由这三种基本结构组成。
顺序结构
按排列顺序依次执行各条语句,直到程序的最后。
这是最简单的一种程序结构,一般涉及数据的输入输 出、数据的计算或处理等。
x=[1, 2, 3] y=[4, 5, 6] z=x.*y z=x.\y z=x.^y z=x.^2 z=2.^[x y]
M脚本文件 对于一些比较简单的问题 ,在指令窗中直接输入指令计算 。 对于复杂计算,采用脚本文件(Script file)最为合适 。 MATLAB只是按文件所写的指令执行 。
M脚本文件的特点是:
• 脚本文件的构成比较简单,只是一串按用户意图排列而成 的(包括控制流向指令在内的)MATLAB指令集合。 • 脚本文件运行后 ,所产生的所有变量都驻留在 MATLAB 基本工作空间(Base workspace)中。只要用户不使用清除 指令(clear), MATLAB指令窗不关闭,这些变量将一直 保存在基本工作空间中。
M文件的一般结构 由于从结构上看 ,脚本文件只是比函数文件少一个“函数申 明行”,所以只须描述清楚函数文件的结构 。
典型 M函数文件的结构如下 :
• 函数申明行:位于函数文件的首行,以关键字 function 开 头,函数名以及函数的输入输出宗量都在这一行被定义。 • 笫一注释行:紧随函数申明行之后以%开头笫一注释行。 该行供lookfor关键词查询和 help在线帮助使用 。 • 在线帮助文本区 :笫一注释行及其之后的连续以%开头的 所有注释行构成整个在线帮助文本。 • 编写和修改记录:与在线帮助文本区相隔一个“空”行, 也以%开头,标志编写及修改该M文件的作者和日期等 。 • 函数体:为清晰起见,它与前面的注释以“空”行相隔。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

函数调用和参数传递
3 参数传递 MATLAB在函数调用上有一个与众不同之处 :函数所传递的 参数具有可调性 。
传递参数数目的可调性来源于如下两个MATLAB永久变量: • 函数体内的 nargin 给出调用该函数时的输入参数数目。 • 函数体内的 nargout 给出调用该函数时的输出参数数目。 只要在函数文件中包括这两个变量,就可以知道该函数文件 调用时的输入参数和输出参数数目。
switch 语句
根据表达式的不同取值,分别执行不同的语句。 switch 表达式 case 表达式1 语句组1 case 表达式2 语句组2 ... ... case 表达式m 语句组m otherwise 语句组 end
switch 语句
Matlab 首先计算 表达式的值,然后将它依次与各个 case 指令后的检测值进行比较,当比较结果为真时, 就执行相应的语句组,然后跳出 switch 结构。 如果所有的比较结果都为假,则执行 otherwise 后 面的语句组,然后跳出 switch 结构。 otherwise 指令可以不出现。 switch 后面的表达式 表达式的值可以是一个标量或 字符串。
M文件的一般结构 由于从结构上看 ,脚本文件只是比函数文件少一个“函数申 明行”,所以只须描述清楚函数文件的结构 。
典型 M函数文件的结构如下 :
• 函数申明行:位于函数文件的首行,以关键字 function 开 头,函数名以及函数的输入输出宗量都在这一行被定义。 • 笫一注释行:紧随函数申明行之后以%开头笫一注释行。 该行供lookfor关键词查询和 help在线帮助使用 。 • 在线帮助文本区 :笫一注释行及其之后的连续以%开头的 所有注释行构成整个在线帮助文本。 • 编写和修改记录:与在线帮助文本区相隔一个“空”行, 也以%开头,标志编写及修改该M文件的作者和日期等 。 • 函数体:为清晰起见,它与前面的注释以“空”行相隔。
当输出行参只有一个时,可省略方括号
函数必须是一个单独的 M文件 函数文件名必须与函数名一致
以百分号开始的语句为注释语句
函数调用
[输出实参列表]=函数名(输入实参列表)
函数调用时,实参的顺序应与函数定义时的形参的顺 序一致。

编写函数文件求半径为r的圆的面积和周长。
函数文件如下: function [s,p]=fcircle(r) %CIRCLE calculate the area and perimeter of a circle of radii r %r 圆半径 %s 圆面积 %p 圆周长 s=pi*r*r; p=2*pi*r;
M脚本文件 对于一些比较简单的问题 ,在指令窗中直接输入指令计算 。 对于复杂计算,采用脚本文件(Script file)最为合适 。 MATLAB只是按文件所写的指令执行 。
M脚本文件的特点是:
• 脚本文件的构成比较简单,只是一串按用户意图排列而成 的(包括控制流向指令在内的)MATLAB指令集合。 • 脚本文件运行后 ,所产生的所有变量都驻留在 MATLAB 基本工作空间(Base workspace)中。只要用户不使用清除 指令(clear), MATLAB指令窗不关闭,这些变量将一直 保存在基本工作空间中。
input
此命令用来提示并接收用户从键盘输 入数据、字符串或表达式的值,语法规则 如下:
(8)keyboard
此命令将停止文件的执行并将控制权 交给键盘,此时命令窗口的提示符由“>>” 变成“K>>”,当输入return后,控制权将 交回文件。该命令对程序的调试和在程序 运行中修改变量值都很方便。
以文件名fcircle.m存入c:\matlab71\work下,
然后在MATLAB命令窗口调用该函数: [s,p]=fcircle(10)
• 程序调试 • 主程序不需要专门的调试命令,需要用调试命令的主要是函 数程序。因为函数程序出错停机时,变量不能保存,无现场 记录。会给调试带来很大困难,解决方法: • (1)把某些分号改为逗号,使中间结果能显示在屏幕上, 作为查错依据。 • (2)在子程序中适当部位加keyboard命令。系统会暂停, 等待用户键入命令。这是子程序的变量还存在于工作空间中, 可以对它们进行检查。 • (3)将函数文件的第一行加%号,成为程序文件,进行初 步调试。第一行中的输入变元,可改用input或赋值语句来 输入,调好后再改回函数文件。 • (4)使用MATLAB提供的调试命令。调试命令较繁琐, 不作介绍。
y=sum(f)
(1)continue
其作用是结束本次循环,即跳过循环 体中尚未执行的代码,接着进行下一次是 否执行循环的判断。
s=1; for i=1:4
if i==4
continue; end s=s*i;
end
(2)break
它的作用是终止本次循环,跳出所在层
循环。
(3)return
n=input( 'n='), switch mod(n,2), case 1, a='奇', case 0, a='偶', otherwise, a='空', end
判断输入数n的奇、偶、空的程序 mod(x,m)x整除m取正余数, rem(a,b) a整除b,求余数 n= 负数
n=5 a =奇
3.3 M文件控制结构
程序控制结构有三种:顺序结构、选择结构和循 环结构。任何复杂的程序都由这三种基本结构组成。
顺序结构
按排列顺序依次执行各条语句,直到程序的最后。
这是最简单的一种程序结构,一般涉及数据的输入输 出、数据的计算或处理等。
x=[1, 2, 3] y=[4, 5, 6] z=x.*y z=x.\y z=x.^y z=x.^2 z=2.^[x y]
并求f(0)
循环结构
for 循环变量=初值:步长:终值 循环体 end while 条件 循环体 end 注意:for 循环适合循环次数确定的情况; while循环适合循环次数不确定的情况
while循环容易出现死循环,使用时一定要注意.
若出现死循环,则按键盘:Ctrl+C强制结束程序. 提示:与各种编程语言一样,各种结构之间可以嵌套使用.
1 x>0 f ( x) 1 x 0
多分支结构
if 条件1 语句组1 elseif 条件2 语句组2 ... ... elseif 条件m 语句组m else 语句组 end
编写一m文件判断一数是奇数还是偶数
n=input( 'n='), if rem(n, 2)==0 a='even', else a='odd', end n = 7 a =odd; n = 8 a =even
打开已有的 M 文件
菜单操作 ( File Open ) 命令按钮 ( 快捷键 )
运行 M脚本文件
editor编辑窗口 ( Debug run) 命令按钮 ( 快捷键 )
3.2
函数文件
函数文件的结构:由 function 语句引导
function [输出形参列表]=函数名(输入形参列表) % 注释说明部分(可选) 函数体语句(必须) 第一行为引导行,表示该 M文件是函数文件 函数名的命名规则与变量名相同 ( 必须以字母开头 )
值得注意:nargin、 nargout 本身都是函数,不是变量,所 以用户不能赋值,也不能显示。 “变长度”输入输出宗量:varargin 、 varrgout。具有接受 “任意多输入” 、返回“任意多输出”的能力 。
1、编写一个函数文件球的体积和表面积 2、编写一个m文件实现矩阵
实现矩阵的转置,行列式以及矩阵维数的大小信息
选择结构
选择结构 是根据给定的条件成立或不成立,分别执 行不同的语句。Matlab 用于实现选择结构的语句有 if 语句、switch 语句和try语句 。
if 条件语句
单分支结构 if 条件 语句组 end
双分支结构 if 条件 语句组1 else 语句组2 end
例如 编写一函数实现
函数调用和参数传递
1 局部变量和全局变量 局部(Local)变量:它存在于函数空间内部的中间变量, 产生于该函数的运行过程中,其影响范围也仅限于该函数本 身。 全局(Global)变量:通过 global 指令,MATLAB也允许几 个不同的函数空间以及基本工作空间共享同一个变量,这种被 共享的变量称为全局变量。 2 函数调用 在MATLAB中,调用函数的常用形式是: [输出参数1,输出参数2,…] = 函数名(输入参数1,输入参数2, …) 函数调用可以嵌套,一个函数可以调用别的函数,甚至调 用它自己 (递归调用)。
n=input( 'n='), switch rem(n,2), case 1, a='奇', case 0, a='偶', otherwise, a='空', end
n = -5 a =奇
n=-8 a =偶
n=8 a =偶
编写一m函数文件实现下列函数值
3 x 2, x 1 f ( x ) x , 1 x 1 2 x 3, x 1
y 1 / i2 例 已知y的表达式 i 1 y的值。 程序如下:
y=0;n=100;
n
,当n=100时,求
for i=1:n
y=y+1/i/i; end y
在实际MATLAB编程中, 为提高程序的执行速度,常 用向量运算来代替循环操作: n=100; i=1:n; f=1./i.^2;
MATLAB程序设计 3.1 M文件
用 Matlab 语言编写的程序称为 M 文件。 M 文件以 .m 为扩展名。 M 文件根据调用方式的不同可以分为两类:
相关文档
最新文档