运筹实验2
随机运筹学-2

为:红、黄、蓝、白、黑五种,其对应的奖金金 额分别为:1000元、100元、10元、1元、1 额分别为:1000元、100元、10元、1元、1元。假 定摇箱内装有很多球,其中红、黄、蓝、白、黑 的比例分别为0.1%、0.5%、1%、10%、88.4%。我 的比例分别为0.1%、0.5%、1%、10%、88.4%。我 们把一次摇奖就看作一次随机试验,其概率空间 为Ω={红,黄,蓝,白,黑},∮={Ω的一切子 红,黄,蓝,白,黑} 集},定义在Ω上的一个函数X(ω), ,定义在Ω上的一个函数X (ω∈Ω): X(红)=1000, X(黄)=100, X (红)=1000, (黄)=100, (蓝)=10, (白)=X(黑)=1。 (蓝)=10, X (白)=X(黑)=1。
称随机变量X 称随机变量X服从超几何分布。 例8 一个学校的校务委员会由十二名官员选举产 生:其中七名是民主党成员,四名是共和党成员, 另外一名是无党派人士。一个分会由四名成员组 成,用来调查学校的暴力事件。问:假设四名成 员随机选择时,民主党成员的人数为0 员随机选择时,民主党成员的人数为0、1、2、3、 4的概率是多大? 6、负二项分布(Pascal分布) 、负二项分布(Pascal分布) 定义8 若随机变量X表示重复独立直到事件发生r 定义8 若随机变量X表示重复独立直到事件发生r
种可能值的概率分配,包含了它的全部概率信息。 离散型随机变量X 离散型随机变量X(ω)的概率满足下列两个条件: (1)非负性 pk≧0,k∈N\{0} (2)规一性 ∑pk=1 离散型随机变量X 离散型随机变量X(ω)的概率分布可以用坐标轴
或表格形式来表示。 例1 设一汽车在开往目的地的道路上需经过四盏 信号等,每盏信号灯以1/2的概率允许或禁止汽车 信号等,每盏信号灯以1/2的概率允许或禁止汽车 通过。以X 通过。以X表示汽车首次停下时,它已通过的信 号灯的盏数(设各信号灯的工作是相互独立的), 求X的分布律。 二、几种重要的离散型随机变量的概率分布 二、几种重要的离散型随机变量的概率分布 1、两点分布(0-1分布、Bernoulli分布) 、两点分布(0 分布、Bernoulli分布) 定义3 若随机变量X只取1 定义3 若随机变量X只取1和0两个值,且P(X=1) 两个值,且P X=1)
运筹学作业2

预付成本(B )A.随销售量而波动B.与销售量无关C.大于计划成本D.小于计划成本从带连数长度的连通图中生成的最小支撑树,叙述不正确的是(C)A.任一连通图生成的各个最小支撑树总长度必相等B.任一连通图生成的各个最小支撑树连线数必相等C.任一连通图中具有最短长度的连线必包含在生成的最小支撑树中D.最小支撑树中可能包括连通图中的最长连线所谓确定条件下的决策,是指在这种条件下,只存在(A )A.一种自然状态B.两种自然状态C.三种或三种以上自然状态D.无穷多种自然状态对于第一类存储模型——进货能力无限,不允许缺货,下列哪项不属于起假设前提条件(A )A.假设每种物品的短缺费忽略不计B.假设需求是连续,均匀的C.假设当存储降至0时,可以立即得到补充D.假设全部定货量一次供应连续型动态规划常用求解方法是(B)A.表格方式B.公式递推C.决策树D.多阶段决策(B)表示当过程处于某阶段的某个确定状态时,可以作出的选择或决定A.状态B.决策C.状态转移D.指标函数设F为固定成本,V为可变成本,V′为单件可变成本,Q为产品产量,C为总成本,则A A.C=F+QV′B.C=F+V′C.C=F+V+QV′D.C=F+QV关于最大流量问题,叙述正确的是(A)A.一个流量图的最大流量能力是唯一确定B.达到最大流量的方案是唯一的C.一个流量图的最大流量能力不是唯一的D.n条线路中的最大流量等于这n条线路的流量能力之和在实际工作中,企业为了保证生产的连续性和均衡性,需要存储一定数量的物资,对于存储方案,下列说法正确的是( C )A.应尽可能多的存储物资,以零风险保证生产的连续性B.应尽可能少的存储物资,以降低库存造成的浪费C.应从多方面考虑,制定最优的存储方案D.以上说法都错误前一阶段的状态和决策决定了下一阶段的状态,他们之间的关系称为(C)A.状态B.决策C.状态转移D.指标函数有6个产地4个销地的平衡运输问题模型具有特征BA.有10个变量24个约束B.有24个变量10个约束C.有24个变量9个约束D.有9个基变量10个非基变量下列错误的说法是CA.标准型的目标函数是求最大值B.标准型的目标函数是求最小值C.标准型的常数项非正D.标准型的变量一定要非负关于关键线路,说法错误的是( C )A.在所有线路中,总作业时间最长的线路是关键线路B.关键线路上的工序如有任何延长,整个任务就会受到影响而延迟C.关键线路上一定不含虚活动D.关键线路也叫主要矛盾线一个连通图中的最小支撑树(B)A.唯一确定B.可能不唯一C.可能不存在D.一定有多个互为对偶的两个线性规划问题的解存在关系BA.原问题无可行解,对偶问题也无可行解B.对偶问题有可行解,原问题可能无可行解C.若最优解存在,则最优解相同D.一个问题无可行解,则另一个问题具有无界解对于第一类存储模型——进货能力无限,不允许缺货,下列哪项不属于起假设前提条件(A )A.假设每种物品的短缺费忽略不计B.假设需求是连续,均匀的C.假设当存储降至0时,可以立即得到补充D.假设全部定货量一次供应从连通图中生成树,以下叙述(B)不正确A.任一连通图必能生成树B.任一连通图生成的树必唯一C.在生成的树中再增加一条线后必含圈D.任易连通图生成的各个树其线数必相同m+n-1个变量构成一组基变量的充要条件是BA.m+n-1个变量恰好构成一个闭回路B.m+n-1个变量不包含任何闭回路C.m+n-1个变量中部分变量构成一个闭回路D.m+n-1个变量对应的系数列向量线性相关线性规划具有唯一最优解是指BA.最优表中存在常数项为零B.最优表中非基变量检验数全部非零C.最优表中存在非基变量的检验数为零D.可行解集合有界预付成本(B )A.随销售量而波动B.与销售量无关C.大于计划成本D.小于计划成本有m个产地n个销地的平衡运输问题模型具有特征AA.有mn个变量m+n个约束…m+n-1个基变量B.有m+n个变量mn个约束C.有mn个变量m+n-1约束D.有m+n-1个基变量,mn-m-n-1个非基变量()是用来衡量所实现过程优劣的一种数量指标。
运筹学2

• 从当前极点进化到另一极点,既使目标函数值上升,有保 达点可行
– 进基变量:最小检验数规则 – 离基变量:最小比值规则
z 3 x1 2 x2 x x 1 3 s.t. ( I ) 2 x2 x4 2 x 3x x5 1 2 x1 , x2 , x3 , x4 , x5 0
(1) 进基变量的相持及其突破
进基变量按最小检验数规则选定,如果出现两个或更多个 σj<0同时达到最小而相持时,则应: 从相持的检验数σk 所对应的变量 xk中,任选一个 作为进基量。
(2) 离基变量的相持及其突破——退化与循环
从相持的离基变量中,选择下标最大者作为离基 变量。
0 x4 0 1 0 0
0 x5 0 0 1 0
比 值
x1 x4 x5
6 8 6 18
4 2 min
3 0 2
x1 x4 x2
6
4
2 22
1 0 0 0
0 0 1 0
1 4/3 -2/3 5/3
0 1 0 0
0 -2/3 1/3 2/3
X*= (6, 2, 0, 4, 0)T,
z* = 22
第三节 ห้องสมุดไป่ตู้他法则
进基(最小检验数规则): 在负检验数中选择最小的进基。 min{σ j︱σj<0 } = σk → xk 进基 min{ -3,-2 } = -3= σ1 → x1 进基 由① ② ③有 ≥ 0 → x1 ≤ 6/1 x3 = 6-x1 ≥0 x4 = 8 x5 = 18 -2x1 ≥ 0 → x1 ≤ 18/2
2.2.3 单纯形法的计算过程 1° 把LP问题化为标准形
max Z 3 x1 2 x 2
运筹学实验报告2讲解

实验报告《运筹学》2015~2016学年第一学期实验目的:加强学生分析问题的能力,锻炼数学建模的能力。
掌握WinQSB/Matlab 软件中线性规划、灵敏度问题的求解和分析。
用 WORD 书写实验报告:包括详细规划模型、试验步骤和结果分析。
实验内容:题1:某厂的一个车间有1B ,2B 两个工段可以生产123,,A A A 三种产品,各工段开工一天生产三种产品的数量和成本,以及合同对三种产品的每周最低需求量由表1给出。
问每周各工段对该生产任务应开工几天,可使生产合同的要求得到满足,并使成本最低。
建立模型。
表1生产定额(吨/天)工段B生产合同每周最低需求量(吨)ib iA 产品1A 2A 3A 1B 2B 11311310002000599成本(元/天)建立模型:WinQSB录入模型界面:运行结果界面:结果分析:决策变量:X1,X2最优解:X1=3,X2=2;目标系数:C1=1000,C2=2000;最优值:7000;其中X1贡献3000,X2贡献4000;检验数,或称缩减成本:0,0。
即当非基变量增加一个单位时,目标值的变动量。
目标系数的允许减量和允许增量;目标系数在此范围变量时,最优基不变。
约束条件约束条件:C1,C2,C3左端:5,11,9右端:5,9,9松弛变量或剩余变量:该端等于约束左端与约束优端之差;为0表示资源达到限制值。
题2:明兴公司面临一个是外包协作还是自行生产的问题。
该公司生产甲、乙、丙三种产品,这三种产品都要经过铸造、机加工和装配三个车间。
甲、乙两种产品的铸件可以外包协作,亦可以自行生产,但产品丙必须本厂铸造才能保证质量。
有关情况见表2;公司中可利用的总工时为:铸造8000小时,机加工12000小时和装配10000小时。
建立模型:解;假设公司选择甲产品自产X1件,外包协作X2件,乙产品自产X3件,外包协作X4件,丙产品生产X5件,则有;maxZ=15X1+13X2+10X3+9X4+7X5s.t. 5X1+10X3+7X5<=80006X1+6X2+4X3+4X4+8X5<=12000 3X1+3X2+2X3+2X4+2X5<=10000 X1-5>=0WinQSB录入模型界面:运行结果界面:结果分析:(1)X*=(1600,0,0,600,0), Z*=29400元,即:公司为了获得最大利润29400元,甲、乙、丙三种产品各生产1600件、600件、0件。
运筹学实验指导书

Excel中规划求解宏模块的使用Excel自带的宏模块“规划求解”可用于求解线性规划、非线性规划、整数规划的最优解。
规划求解宏模块在Excel普通运行状况下一般不会启动,当需要调用时,可以从工具菜单条中加载宏来启动,其基本步骤如下。
(1)在工具菜单中选择“加载宏”选型。
(2)在加载宏对话框中选择“规划求解”选型。
图0-1加载“规划求解”宏(3)如果成功加载,则在工具菜单条中会出现“规划求解”选型。
由此,可以运用规划求解宏模块求解任何一个线性规划问题、整数规划问题、非线性规划问题,分别举例说明如下。
例1 营养配餐问题根据生物营养学理论,一个成年人每天要维持人体正常的生理健康需求,需要从食物中获取3000卡路里热量、55g蛋白质和800mg钙。
假定市场上可供选择的食品有猪肉、鸡蛋、大米和白菜,这些食品每千克所含热量和营养成分以及市场价格如表1-1所示。
如何选购才能在满足营养的前提下,使购买食品的总费用最小?表0-1 营养配餐问题数据表解,建立该问题的线性规划模型如下:假设x j (j=1,2,3,4)分别为猪肉、鸡蛋、大米和白菜每天的购买量,则其线性规划模型为:⎪⎪⎩⎪⎪⎨⎧=≥≥+++≥+++≥++++++=)4,3,2,1(0800500300200400551020605030002009008001200..24820min 4321432143214321j x x x x x x x x x x x x x t s x x x x z j 第一步:需要在Excel 中建立该问题的电子表格模型,如图0-2所示。
图0-2 营养配餐问题的Excel 表模型其中单元格B10:E10设置为决策变量单元格,F12设置为目标单元格,F4:F6设置为三个约束条件的左边项,即表示实际获得的营养。
目标单元格和约束条件左边项的函数如图0-3所示图0-3营养配餐问题中的公式设置函数sumproduct(区域1,区域2)为Excel 的常用函数,表示将区域1中对应元素与区域2中对应元素相乘后再相加。
运筹学实验报告

运筹学实验报告一实验一:线性规划【例l】某制药厂用甲、乙两台机器生产A、B两种药物。
每种药物要经过两道工序,在甲机器上搅拌,在乙机器上包装。
生产每千克药物所需的加工时间以及机器1周可用于加工的总时间如下表1所示。
已知生产每千克药物A的利润是30元,B是25元,问应如何安排1周的生产计划才能使工厂获利最大?表 1 两种药物在各机器上所需加工时间及各机器可用于加工的总时间(1)写出数学模型,建立新问题、输入选项(电子表格、变量取非负连续)、输入数据、存盘、求解模型、结果存盘、观察结果。
(2)将电子表格格式转换成标准模型。
(3)将结果复制到Excel或Word文档中。
(4)分析结果。
解:(1)从已知条件写出该问题的数学模型:max Z=30x1+25x2;2x1+4x2<=40;3x1+2x2<=30;x1>=0,x2>=0.建立新问题、输入选项(电子表格、变量取非负连续)、输入数据、存盘、求解模型、结果存盘、观察结果:求解模型过程Simplex Tableau -- Iteration 1X1 X2 Slack_C1 Slack_C2Basis C(j) 30.0000 25.0000 0 0 R. H. S. RatioSlack_C1 0 2.0000 4.0000 1.0000 0 40.0000 20.0000Slack_C2 0 3.0000 2.0000 0 1.0000 30.0000 10.0000C(j)-Z(j) 30.0000 25.0000 0 0 0Simplex Tableau -- Iteration 1X1 X2 Slack_C1 Slack_C2Basis C(j) 30.0000 25.0000 0 0 R. H. S. RatioSlack_C1 0 2.0000 4.0000 1.0000 0 40.0000 20.0000Slack_C2 0 3.0000 2.0000 0 1.0000 30.0000 10.0000C(j)-Z(j) 30.0000 25.0000 0 0 0Simplex Tableau -- Iteration 3X1 X2 Slack_C1 Slack_C2Basis C(j) 30.0000 25.0000 0 0 R. H. S. RatioX2 25.0000 0 1.0000 0.3750 -0.2500 7.5000X1 30.0000 1.0000 0 -0.2500 0.5000 5.0000C(j)-Z(j) 0 0 -1.8750 -8.7500 337.5000(2)将电子表格格式转换成标准模型。
运筹学实验报告
运筹学实验报告运筹学实验报告2实验内容:线性规划问题的建模和求解。
“炼油厂生产计划安排”,“长征医院的护士值班计划”两题目任选其一,每个小组最多3名同学,共同完成实验报告。
一、问题提出长征医院是长宁市的一所区级医院,该院每天各时间区段内需求的值班护士数如表1所示.该医院护士上班分五个班次,每班8h,具体上班时间为第一班2:00~10:00,第二班6:00~14:00,第三班10:00~18:00,第四班14:00~22:00,第五班18:00~2:00(次日).每名护士每周上5个班,并被安排在不同日子,有一名总护士长负责护士的值班安排计划.值班方案要做到在人员或经济上比较节省,又做到尽可能合情合理.下面是一些正在考虑中的值班方案:方案1 每名护士连续上班5天,休息2天,并从上班第一天起按从上第一班到第五班顺序安排.例如第一名护士从周一开始上班,则她于周一上第一班,周二上第二班,……,周五上第五班;另一名护士若从周三起上班,则她于周三上第一班,周四上第二班,……,周日上第五班,等等.方案2 考虑到按上述方案中每名护士在周末(周六、周日)两天内休息安排不均匀.于是规定每名护士在周六、周日两天内安排一天、且只安排一天休息,再在周一至周五期间安排4个班,同样上班的五天内分别顺序安排5个不同班次.在对第1、2方案建立线性规划模型并求解后,发现方案2虽然在安排周末休息上比较合理,但所需值班人数要比第1方案有较多增加,经济上不太合算,于是又提出了第3方案.方案3 在方案2基础上,动员一部分护士放弃周末休息,即每周在周一至周五间由总护士长给安排三天值班,加周六周日共上五个班,同样五个班分别安排不同班次.作为奖励,规定放弃周末休息的护士,其工资和奖金总额比其他护士增加a%.根据上述,帮助长征医院的总护士长分析研究:(x)对方案1、2建立使值班护士人数为最少的线性规划模型并求解;(b)对方案3,同样建立使值班护士人数为最少的线性规划模型并求解,然后回答a的值为多大时,第3方案较第2方案更经济;二、问题简述从该医院各时间段护士值班表可看出:五个时间段所需护士人数分别为18,20,19,17,12。
运筹学作业2(清华版第二章部分习题)答案
运筹学作业2(第二章部分习题)答案2.1 题 (P . 77) 写出下列线性规划问题的对偶问题:(1)123123123123123m ax 224..34223343500,z x x x s t x x x x x x x x x x x x =++⎧⎪++≥⎪⎪++≤⎨⎪++≤⎪≥≥⎪⎩无约束,;解:根据原—对偶关系表,可得原问题的对偶规划问题为:123123123123123m ax 235..223424334,0,0w y y y s t y y y y y y y y y y y y =++⎧⎪++≤⎪⎪++≤⎨⎪++=⎪≥≤≤⎪⎩(2)1111m in ,1,,,1,,0,1,,;1,,m n ij ij i j n ij ij i j nij ij j j ij z c x c x a i m c x b j nx i m j n====⎧=⎪⎪⎪==⎪⎨⎪⎪==⎪⎪≥==⎪⎩∑∑∑∑ 解:根据原—对偶关系表,可得原问题的对偶规划问题为:11m ax 1,,;1,,m n i i j ji j i j ij i w a u b v u v c i m j n u ==⎧=+⎪⎪⎪+≤⎨⎪==⎪⎪⎩∑∑ j 无约束,v 无约束2.2判断下列说法是否正确,为什么?(1) 如果线性规划的原问题存在可行解,则其对偶问题也一定存在可行解; 答:错。
因为:若线性规划的原问题存在可行解,且其对偶问题有可行解,则原问题和可行问题都将有最优解。
但,现实中肯定有一些问题是无最优解的,故本题说法不对。
例如原问题1212212m ax 31..30,0z x x x x s t x x x =++≥⎧⎪≤⎨⎪≥≥⎩有可行解,但其对偶问题1211212m in 33..10,0w y y y s t y y y y =+≥⎧⎪+≥⎨⎪≤≥⎩无可行解。
(2) 如果线性规划的对偶问题无可行解,则原问题也一定无可行解;答:错,如(1)中的例子。
实验二最长公共子序列(动态规划算法)
实验二最长公共子序列(动态规划算法)班级:08计算机科学与技术(1)班学号:E08620113 姓名:戴斌江机器号:实验二最长公共子序列问题一、实验目的:1、理解动态规划算法的概念;2、掌握动态规划算法的基本要素;3、掌握设计动态规划算法的步骤;4、通过应用范例学习动态规划算法的设计技巧与策略;二、实验内容及要求:1、使用动态规划算法解决最长公共子序列问题:给定两个序列X={x1,x2,…,xm}和Y={y1,y2,…,yn},找出X和Y的最长公共子序列。
2、通过上机实验进行算法实现。
3、保存和打印出程序的运行结果,并结合程序进行分析,上交实验报告。
三、实验原理:动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。
20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,利用各阶段之间的关系,逐个求解,创立了解决这类过程优化问题的新方法——动态规划。
1957年出版了他的名著Dynamic Programming,这是该领域的第一本著作。
算法总体思想:1)动态规划算法与分治法类似,其基本思想也是将待求解问题分解成若干个子问题,先求解子问题,然后从这些子问题的解得到原问题的解。
2)与分治法不同的是,适合于用动态规划法求解的问题,经分解得到的子问题往往不是独立的。
子问题中存在大量的公共子问题,在分治求解过程中被多次重复计算,保存计算结果,为后面的计算直接引用,减少重复计算次数这就是动态规划的基本思想。
3)用动态规划算法求解问题,可依据其递归式以自底向上的方式进行计算。
在计算过程中,保存已解决的子问题的答案。
每个子问题只计算一次,而在后面需要时只要简单查一下,从而避免大量重复计算,最终得到多项式时间算法。
运筹学实验报告2
运筹学实验报告2《运筹学》课程实验第 2 次实验报告实验内容及基本要求:实验项目名称:运输问题实验实验类型: 验证每组人数: 1实验内容及要求:内容:运输问题建模与求解要求:能够写出求解模型、运用软件进行求解并对求解结果进行分析实验考核办法:实验结束要求写出实验报告,并于实验结束一周内(5月29日)上交。
实验结果:(附后)内容主要包括以下3点:1. 问题分析与建立模型,阐明建立模型的过程(一定要给出模型)。
2. 实验步骤,包含使用什么软件以及详细的实验过程。
3. 实验结果及其分析。
成绩评定:该生对待本次实验的态度 ?认真 ?良好 ?一般 ?比较差。
本次实验的过程情况 ?很好 ?较好 ?一般 ?比较差对实验结果的分析 ?很好 ?良好 ?一般 ?比较差文档书写符合规范程度 ?很好 ?良好 ?一般 ?比较差综合意见: 成绩指导教师签名刘长贤日期 2012.5.31实验背景:某农民承包了五块土地工206亩,打算种小麦、玉米和蔬菜三种农作物。
各种农作物的计划播种面积(亩)以及每块土地各种不同农作物的亩产量(公斤)如表1所示。
问如何安排种植计划,可使总产量最高,表1 每块土地种植不同农作物的亩产数量土地块别计划1 2 34 5 播种作物种类面积小麦 500 600650 1050 80086850 800 700 900 95070 玉米1000 950 850550 70050 蔬菜44 32 46 36 48土地亩数一(问题分析与建立模型 1.问题分析:总产量为目标函数maxZ;计划播种面积和土地亩数是约束条件;每块土地种植的不同农作物的亩产数量是决策变量2数学模型:目标函数1112131415MaxZ,500x,600x,650x,1050x,800x,2122232425 850x,800x,700x,900x,950x,1000x31,950x32,850x33,550x34,700x35约束条件x,x,x,x,x,861112131415x,x,x,x,x,702122232425x,x,x,x,x,503132333435x,x,x,36112131x,x,x,48122232x,x,x,44132333x,x,x,32142434 x,x,x,46152535xi,j,0,i,1,2,3,4,5;j,1,2,3二(实验步骤1.根据数学模型和题目要求,使用Excel软件建立如下表格2.单元格名称指定:选中要指定名称的单元格,点击“插入-名称-定义/指定”,则可对上图中的“亩产数量(=Sheet1!$C$3:$G$5),种植量(=Sheet1!$C$8:$G$10),实际面积(=Sheet1!$H$8:$H$10),计划面积(=Sheet1!$J$8:$J$10),实际亩数(=Sheet1!$C$11:$G$11),土地亩数(=Sheet1!$C$13:$G$13),总产量(=Sheet1!$L$12)”进行名称的指定3.单元格赋值:(1)利用“求和”函数对“实际面积”和“实际亩数”相应的单元格进行赋值,例如H8=SUM(小麦),C11=SUM(土地1)(2)利用“SUMPRODUCT”函数对“总产量”对应的单元格L12进行赋值,由于之前指定了单元格名称,故总产量=SUMPRODUCT(亩产数量,种植量) (3)由于当前各决策变量的值为0,故相应的实际面积,实际亩数,总产量为0 4.单击“工具”>“加载宏”>“规划求解”设置相关参数,如下图目标单元格为总产量可变单元格为每块土地种植的不同农作物对应的单元格约束条件为实际面积=计划面积;实际亩数=计划亩数5.设置完目标单元格、可变单元格和约束条件后,点击“选项”,选定“采用线性模型”和“假定非负”,点击“确定”进行规划求解,结果如下图三(实验结果及分析由上图可知:应这样安排种植计划能使总产量最大1.在土地1上种植34亩玉米和2亩蔬菜2.在土地2上种植48亩蔬菜3.在土地3上种植44亩小麦4.在土地4上种植32亩小麦5.在土地5上种植10亩小麦和36亩玉米。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验二MATLAB程序设计假如想灵活运用MATLAB去解决实际问题,想充分调动MATLAB——科学技术资源,必须涉及比较深层的MATLAB内容:程序设计,函数(一般函数、内联函数、子函数);函数句柄的创建和使用;程序调试。
例如求1~100之和>>sum(1:100)>>ans =5050>>s=0;>>for i=1:1:100;>>s=s+i;>>end>>s>>s =5050M文件在MATLAB中,严格来说,M文件可再细分为命令集(Scripts)及函数(Functions)。
前述的*.m即为命令集,其效用和将命令逐一输入完全一样,因此若在命令集可以直接使用工作空间的变量,而且在命令集中设定的变量,也都在工作空间中看得到。
函数则需要用到输入自变量(Input arguments)和输出自变量(Output arguments)来传递信息,这就像是C语言的函数,或是FORTRAN 语言的副程序(Subroutines)。
举例来说,若要计算一个正整数的阶乘(Factorial),我们可以写一个如下的MATLAB函数并将之存盘于fact.m:function output = factorial(n)% FACT Calculate factorial of a given positive integer.output = 1;for i = 1:n,output = output*i;end若实际要计算一个正整数n的阶乘(即n!)时,可直接写成prod(1:n); 或是直接呼叫gamma函数:gamma(n+1)。
>>gamma(6)>>ans =120MATLAB的函数也可以是递归式的(Recursive),也就是说,一个函数可以呼叫它本身。
举例来说,n! = n*(n-1)!,因此前面的阶乘函数可以改成递归式的写法:>>function output = fact(n)% FACT Calculate factorial of a given positive integer recursively.if n == 1, % Terminating conditionoutput = 1;return;end>>output = n*fact(n-1);第一节M文件及程序运算符一、M文件概述用MATLAB语言编写的程序,称为M文件。
M文件可以根据调用方式的不同分为两类:命令文件(Script File)和函数文件(Function File)。
例:分别建立命令文件和函数文件,将华氏温度f转换为摄氏温度C。
①首先建立命令文件并以文件名exam5_1.m存盘。
clear; %清除工作空间中的变量f=input('Input Fahrenheit temperature:');c=5*(f-32)/9然后在MATLAB的命令窗口中输入exam5_1,将会执行该命令文件,执行情况为:>>exam5_1Input Fahrenheit temperature:73c =22.7778二、M文件的建立与打开M文件是一个文本文件,它可以用任何编辑程序来建立和编辑,而一般常用且最为方便的是使用MATLAB提供的文本编辑器。
1、建立新的M文件为建立新的M文件,启动MATLAB文本编辑器有3种方法:(1)菜单操作。
从MATLAB主窗口的File菜单中选择New菜单项,再选择M-file命令,屏幕上将出现MATLAB 文本编辑器窗口;(2)命令操作。
在MATLAB命令窗口输入命令edit,启动MATLAB文本编辑器后,输入M文件的内容并存盘;(3)命令按钮操作。
单击MATLAB主窗口工具栏上的New M-File命令按钮,启动MATLAB文本编辑器后,输入M文件的内容并存盘。
2、打开已有的M文件打开已有的M文件,也有3种方法:(1)菜单操作。
从MATLAB主窗口的File菜单中选择Open命令,则屏幕出现Open对话框,在Open对话框中选中所需打开的M文件。
在文档窗口可以对打开的M文件进行编辑修改,编辑完成后,将M文件存盘;(2)命令操作。
在MATLAB命令窗口输入命令:edit 文件名,则打开指定的M文件;(3)命令按钮操作。
单击MATLAB主窗口工具栏上的Open File命令按钮,再从弹出的对话框中选择所需打开的M文件。
三、程序运算符1、程序说明编辑器用颜色区分程序内容的类别,分别为:绿色—注解部分,程序并不不执行,用%开头。
黑色—程序主体部分。
红色—属性值的设定。
蓝色—控制流程,比如for,if …then等语句。
2、程序运算符(1)数学运算符+,-,.*,./,',.^,:(2)关系运算符>,<,<=,>=,==,~=(3)逻辑运算符&,|,~以上所介绍的仅仅是部分重要并且常用的运算符,详细内容可使用help matlab\ops查看。
第二节程序控制结构一、顺序结构1、数据的输入从键盘输入数据,则可以使用input函数来进行,该函数的调用格式为:A=input(提示信息,选项);其中提示信息为一个字符串,用于提示用户输入什么样的数据。
如果在input函数调用时采用's'选项,则允许用户输入一个字符串。
例如,想输入一个人的姓名,可采用命令:xm=input('What''s your name?','s');2、数据的输出MATLAB提供的命令窗口输出函数主要有disp函数,其调用格式为disp(输出项)其中输出项既可以为字符串,也可以为矩阵。
例:①输入x,y的值,并将它们的值互换后输出(exam5_2.m)。
x=input('Input x please.');y=input('Input y please.');z=x;x=y;y=z;disp(x);disp(y);②求一元二次方程ax2 +bx+c=0的根(exam5_3.m)。
a=input('a=?');b=input('b=?');c=input('c=?');d=b*b-4*a*c;x=[(-b+sqrt(d))/(2*a),(-b-sqrt(d))/(2*a)];disp(['x1=',num2str(x(1)),',x2=',num2str(x(2))]);3、程序的暂停暂停程序的执行可以使用pause函数,其调用格式为:pause(延迟秒数)如果省略延迟时间,直接使用pause,则将暂停程序,直到用户按任一键后程序继续执行。
若要强行中止程序的运行可使用Ctrl+C命令。
二、选择结构1、if语句在MATLAB中,if语句有3种格式。
(1) 单分支if语句:if 条件语句组end当条件成立时,则执行语句组,执行完之后继续执行if语句的后继语句,若条件不成立,则直接执行if语句的后继语句(2) 双分支if语句:if 条件语句组1else语句组2end当条件成立时,执行语句组1,否则执行语句组2,语句组1或语句组2执行后,再执行if语句的后继语句。
例:计算分段函数的值(exam5_4.m)。
x=input('请输入x的值:');if x<=0y= (x+sqrt(pi))/exp(2);elsey=log(x+sqrt(1+x*x))/2;endy(3) 多分支if语句:if 条件1语句组1elseif 条件2语句组2……elseif 条件m语句组melse语句组nend语句用于实现多分支选择结构。
2、switch语句switch语句根据表达式的取值不同,分别执行不同的语句,其语句格式为:switch 表达式case 表达式1语句组1case 表达式2语句组2……case 表达式m语句组motherwise语句组nend当表达式的值等于表达式1的值时,执行语句组1,当表达式的值等于表达式2的值时,执行语句组2,…,当表达式的值等于表达式m的值时,执行语句组m,当表达式的值不等于case所列的表达式的值时,执行语句组n。
当任意一个分支的语句执行完后,直接执行switch语句的下一句。
例:某商场对顾客所购买的商品实行打折销售,标准如下(商品价格用price 来表示):price<200 没有折扣200≤price<500 3%折扣500≤price<1000 5%折扣1000≤price<2500 8%折扣2500≤price<5000 10%折扣5000≤price 14%折扣输入所售商品的价格,求其实际销售价格( exam5_6.m)。
price=input('请输入商品价格');switch fix(price/100)case {0,1} %价格小于200rate=0;case {2,3,4} %价格大于等于200但小于500rate=3/100;case num2cell(5:9) %价格大于等于500但小于1000rate=5/100;case num2cell(10:24) %价格大于等于1000但小于2500rate=8/100;case num2cell(25:49) %价格大于等于2500但小于5000rate=10/100;otherwise %价格大于等于5000rate=14/100;endprice=price*(1-rate) %输出商品实际销售价格FIX Round towards zero.FLOOR Round towards minus infinity.CEIL Round towards plus infinity.ROUND Round towards nearest integer.NUM2CELL Convert numeric array into cell array. {2,3,4}3、try语句语句格式为:try语句组1catch语句组2endtry语句先试探性执行语句组1,如果语句组1在执行过程中出现错误,则将错误信息赋给保留的lasterr变量,并转去执行语句组2。
例:矩阵乘法运算要求两矩阵的维数相容,否则会出错。
先求两矩阵的乘积,若出错,则自动转去求两矩阵的点乘(exam5_7.m)。
A=[1,2,3;4,5,6]; B=[7,8,9;10,11,12];tryC=A*B;catchC=A.*B;endClasterr %显示出错原因三、循环结构1、for语句for语句的格式为:for 循环变量=表达式1:表达式2:表达式3循环体语句end其中表达式1的值为循环变量的初值,表达式2的值为步长,表达式3的值为循环变量的终值。