第三章matlab
- 格式:doc
- 大小:385.26 KB
- 文档页数:3
第三章四連桿之MATLAB程式第三章中之四連桿分析可以參考相關資料。
本節則針對四連桿之動作程式加以說明。
目前所設計之程式有f4bar.m、drawlinks.m、fb_angle_limits.m、drawlimits.m 等四個程式,茲分別說明如下:圖一、四連桿之關係位置及各桿名稱一、f4bar函數:f4bar函數之呼叫格式如下:function [values,form] = f4bar(r,theta1,theta2,td2,tdd2,sigma,driver)輸入變數:.r(1:4) = 各桿之長度,r(1)為固定桿,其餘分別為曲桿、結合桿及被動桿。
.theta1 = 第一桿之水平角,或為四連桿之架構角,以角度表示。
.theta2 = 驅動桿之水平夾角,以角度表示。
一般為曲桿角,但若為結合桿驅動,則為結合桿之水平夾角。
.td2 = 驅動桿(第二桿或第三桿)之角速度(rad/sec)。
.tdd2 = 驅動桿(第二桿或第三桿)之角加速度(rad/sec^2)。
.sigma = +1 or -1. 組合模式,負值表示閉合型,正值為分支型,但有時需視實際情況而定。
.driver = 0 (驅動桿為第二桿); 1 (驅動桿為第三桿)輸出變數:.form = 組合狀態,0 :表示無法組合;1:可以正確組合.values = 輸出矩陣,其大小為 4 X 7,各行之資料分配如下:其中第一行之連桿位置向量,屬於單桿的位置向量。
第二行為各桿之水平夾角,第三及第四行為各桿之角度速度及角加速度。
第五至七行則為P點與Q點之速度與加速度量,第五行為向量,第六行為絕對量,第七行為夾角。
值得一提的是第一行、三行、四行及五行之向量表示法屬於複數之型式。
故若要得到其絕對值僅需在MATLAB指令檔中,以abs()這一個函數指令即可求得,而以函數angle()則可求得其夾角,雖然第二行與第七行之輸出亦有相對應之夾角。
例一:為第二桿為驅動桿[val,form]=f4bar([3 2 4 2],0,60,10,0,-1,0)val = Columns 1 through 33 0 01 + 1.7321i 60 103.8682 - 1.0182i -14.7465.40781.8682 + 0.71389i 20.913 16.549 Columns 4 through 60 1 + 1.7321i 20 1.8682 + 0.71389i 2-127.58 173.21 - 100i 200-236.27 364.19 - 953.09i 1020.3 Column 76020.913-30-69.087form = 1 (表示可以組合)本例中,有框線者表示其為輸入值。
3.5 MATLAB 绘图实训3.5.1 实训目的1.学会MATLAB 绘图的基本知识;2.掌握MATLAB 子图绘制、图形注释、图形编辑等基本方法;3.学会通过MATLAB 绘图解决一些实际问题;4.练习二维、三维绘图的多种绘图方式,了解图形的修饰方法;5.学会制作简单的MATLAB 动画。
图3-46 炮弹发射示意图3.5.2 实训内容1. 炮弹发射问题〔1炮弹发射的基础知识炮弹以角度α射出的行程是时间的函数,可以分解为水平距离)(t x 和垂直距离)(t y 。
)cos()(0αtv t x = %水平方向的行程; 205.0)sin()(gt tv t y -=α %垂直方向的行程;其中,0v 是初速度;g 是重力加速度,为9.82m/s ;t 是时间。
〔2炮弹发射程序举例:分析以下程序以及图3-47各个图形的实际意义。
a=pi/4; v0=300; g=9.8;t=0:0.01:50; x=t*v0*cos<a>;y=t*v0*sin<a>-0.5*g*t.^2;subplot<221>;plot<t,x>;grid;title<‘时间-水平位移曲线'>; subplot<222>;plot<t,y>;grid;title<‘时间-垂直位移曲线'>; subplot<223>;plot<x,y>;grid;title<‘水平位移-垂直位移曲线'>; subplot<224>;plot<y,x>;grid;title<‘垂直位移-水平位移曲线'>; 图3-4745角发射曲线 〔3编程解决炮弹发射问题①假设在水平地面上以垂直于水平面的角度向上发射炮弹,即发射角90=α,假设初速度分别为[310,290,270]m/s,试绘制时间-垂直位移曲线,编程求取最高射程;绘图要求:◆ 标题设为"炮弹垂直发射问题";◆ 在图上通过添加文本的方式表明初速度; ◆ 在x 轴标注"时间";◆ 在y 轴上标注"垂直距离"; ◆ 添加网格线;◆ 将310m/s 的曲线改为线粗为2的红色实线; ◆ 将290m/s 的曲线改为线粗为3的绿色点划线;◆ 将270m/s 的曲线改为线粗为2的蓝色长点划线;a=pi/2; v1=310; g=9.8;t=0:0.01:50; x1=t*v1*cos<a>;y1=t*v1*sin<a>-0.5*g*t.^2;plot<t,y1>;grid; title<'炮弹垂直发射问题'>; xlabel<'时间'>; ylabel<'垂直距离'>; hold on; v2=290;x2=t*v2*cos<a>;y2=t*v2*sin<a>-0.5*g*t.^2; plot<t,y2>; v3=270;x3=t*v3*cos<a>;y3=t*v3*sin<a>-0.5*g*t.^2; plot<t,y3>;zgsc=[max<y1>; max<y2>; max<y3>] %三次发射的最高射程 运行结果如下: zgsc =1.0e+003 * 4.9031 4.29083.7194最高射程分别为:4903.1米,4290.8米,3719.4米。
第一节排列与组合排列:perms(x) x为向量,求x的全排列。
如:a=perms([2 3 7 ])a=7 3 27 2 33 7 23 2 72 3 72 7 3size(a,1) 回车ans =6有6种排列在EXCEL中,用FACT返回n!,用FACTDOUBLE返回n!!,即返回参数半阶乘。
PERMUT(n,k)=P n k组合(1)Syntax:C = nchoosek(n,k)其中n和k是一个非负整数。
该命令只有对n<15时有用。
函数描述: 从 n 个元素中一次选 k 个元素的所有组合数 C(注意,C是一个数值)。
C = n!/((n–k)! k!)如:C = nchoosek(10,3) 回车C =120C = nchoosek(v,k)其中v是一个长度为n的向量,k小于等于n。
函数描述: 从向量 v 中一次选其中 k 个元素的所有组合 C (注意:C是一个矩阵,行数为n!/((n–k)! k!)列数为 k )Examples:A=2:2:10 回车A = 2 4 6 8 10nchoosek(A,4) 回车2 4 6 82 4 6 102 4 8 102 6 8 104 6 8 10 (2)combntns从给定集合中列出所有可能的元素的组合,和nchoosek(v,k)的用法一样。
Syntaxcombos = combntns(set,subset)combos = combntns(1:5,3)combos =1 2 31 2 41 2 51 3 41 3 51 4 52 3 42 3 52 4 53 4 5size(combos,1)ans =10第二节随机数的生成2.1均匀分布的随机数据的产生函数 rand功能生成元素均匀分布于(0,1)上的向量与矩阵。
用法 Y = rand(n) %返回n*n阶的方阵Y,其元素均匀分布于区间(0,1)。
若n不是一标量,在显示一出错信息。
第三章字符串、元胞和构架数组MATLAB 6.x 版的内建数据类型(Built-in data type)就有5 种以上,此外还有许多其他专门设计的类(Class),如符号类、内联函数类、控制工具包中的线性时不变模型类、神经网络类等。
就程序设计而言,MATLAB 6.x 版采用了面向对象编程技术。
数据和编程的改变使用户能更简捷而自然地解决复杂的计算问题(如符号计算问题、多变量控制系统问题、神经网络问题)。
本章内容根据MATLAB6.5 编写,但绝大部分内容适用于其他MATLAB6.x 版本。
第二章介绍了数值数组(Numeric Array),这是读者比较熟悉的数据类型。
本章将集中讲述另外三类数据:字符串数组(Character String Array)、元胞数组(Cell array)和构架数组(Structure array)。
它们之间的基本差别见表3-1。
3.1字符串数组3.1.1字符串入门【例3.1.1-1】先请读者实际操作本例,以体会数值量与字符串的区别。
cleara=12345.6789class(a)a_s=size(a)a =1.2346e+004ans =doublea_s =1 1b='S'class(b)b_s=size(b)b =Sans =charb_s =1 1whosName Size Bytes Classa 1x1 8 double arraya_s1x216 double arrayans1x48 char arrayb1x1 2 char arrayb_s1x216 double arrayGrand total is 10 elements using 50 bytes3.1.2串数组的属性和标识【例3.1.2-1】本例演示:串的基本属性、标识和简单操作。
(1)a='This is an example.'a =This is an example.(2)size(a)ans =1 19(3)a14=a(1:4)ra=a(end:-1:1)a14 =Thisra =.elpmaxe na si sihT(4)ascii_a=double(a)ascii_a =Columns 1 through 1284 104 105 115 32 105 115 32 97 110 32 101Columns 13 through 19120 97 109 112 108 101 46char(ascii_a)ans =This is an example.(5)w=find(a>='a'&a<='z');ascii_a(w)=ascii_a(w)-32;char(ascii_a)ans =THIS IS AN EXAMPLE.(6)A='这是一个算例。
第三章MATLAB的图形处理可视化的一般步骤:(P159-160)一、二维图形(一)绘制二维曲线的最基本函数:1. plot 函数的基本用法plot 函数的基本调用格式为:plot(x,y)其中 x 和 y 为长度相同的向量,分别用于存储 x 和 y 坐标数据。
例在 0≤X≤2pi 区间内,绘制曲线 y=2e-0.5x sin(2πx)。
x=0:pi/100:2*pi;y=2*exp(-0.5*x).*sin(2*pi*x);plot(x,y)说明:(1)当 x,y 是同维矩阵时,则以 x,y 对应列元素为横、纵坐标分别绘制曲线,曲线条数等于矩阵的列数。
(2)当 x 是向量,y 是有一维与 x 同维的矩阵时,则绘制出多根不同色彩的曲线。
曲线条数等于 y 矩阵的另一维数,x 被作为这些曲线共同的横坐标。
(3)plot 函数最简单的调用格式是只包含一个输入参数:plot(x)。
例某工厂 2000 年各月总产值(单位:万元)分别为22、60、88、95、56、23、9、10、14、81、56、23,试绘制折线图以显示出该厂总产值的变化情况。
p=[22,60,88,95,56,23,9,10,14,81,56,23];plot(p)2.含多个输入参数的 plot 函数含多个输入参数的 plot 函数调用格式为:plot(x1,y1,x2,y2,…,xn,yn)3.含选项的 plot 函数含选项的 plot 函数调用格式为:plot(x1,y1,选项 1,x2,y2, 选项 2,…,xn,yn,选项 n)为了对所绘多条曲线作进一步区分,需要对曲线的线型、点型、色彩(P177-179/162-163)及其他属性(help)作相应说明。
例用不同线型和颜色在同一坐标内绘制曲线 y=2e-0.5x sin(2πx)及其包络线。
x=(0:pi/100:2*pi)';y1=2*exp(-0.5*x)*[1,-1];y2=2*exp(-0.5*x).*sin(2*pi*x);x1=(0:12)/2;y3=2*exp(-0.5*x1).*sin(2*pi*x1);plot(x,y1,'g:',x,y2,'b--',x1,y3,'rp');4.双纵坐标函数 plotyyplotyy 函数是 MATLAB 5.X 新增的函数。
第三章Matlab的选择结构第三章 Matlab的选择结构3.1 程序编写的⼀般步骤3.2 关系运算符 1) 0表⽰假,⾮0表⽰真; 2) ~=:不等于; 3) sin(pi) ~= 0:为1,⽐较a、b两个数是否相等⽅法:abs(a - b)<1.0e-143.3 逻辑运算 1) 先与&后或|3.4 逻辑函数与短路运算 1) 短路运算:&&、||;⾮短路运算:&、| 2) ischar(x)、isempty(x)、isinf(x)、isnan(x):是否不是数、isnumeric(x):是否是数 3) 1/0 = Inf 是数;0/0 = NaN 不是数3.5 if语句1) 语句结构:”if"开始,"end"结束if exp_1 block_1elseif exp_2 block_2... ...else block_nend3.6 流程图的绘制3.7 if语句的嵌套3.8 switch1)switch(value) case{1,3,5,7,9}, block_1; case{2,4,6,8}, block_2; ... ... otherwise, block_nend3.9 try_catch结构try block_1catch block_2end3.10 多个图像窗⼝与⼦窗⼝ 1) figure(n):图像窗⼝命令; 2) subplot(m,n,p):图像窗⼝中有m*n个⼦窗⼝,p是当前操作窗⼝;3.11 图像的增强控制 1) plot(x1,y1,LineSpec,...,xn,yn,LineSpec) 2) plot(x1,y1,LineSpec,'PropertyName',PropertyValue) 3) LineWidth:⽤来指定线的宽度 4) MarkerEdgeColor:⽤来指定标识表⾯的颜⾊ 5) MarkerFaceColor:填充标识的颜⾊ 6) MarkerSize:指定标识的⼤⼩例:x = -pi:pi/10:pi;y = tan(sin(x)) - sin(tan(x));plot(x,y,'--rs','LineWidth',3,...‘MarkerEdgeColor','k',...‘MarkerFaceColor','g',...‘MarkerSize',10)3.12 ⽂本的⾼级控制...。
1.
已知:400H,10,10,5c,1v,100,50a,100b
公式如右:
0)(2)2)()(()()(2)2(22111121vpvcpcpabcpababacpH
(求单渠道单一回购契约时零售价格1p与的关系图)
横轴,且0<<1;纵轴价格p
1
2.
已知:400H,10,10,5c,1v,100,50a,100b,5.0
公式如右:)(2)()(2)((2)()(22abvpavpcpabacppHcpr)
(求单渠道单一回购契约时零售价格p与零售商利润函数r的关系图)
横轴p,且5
3.
已知:400H,10,10,5c,1v,100,50a,100b,5.0
公式如下:
)(2)()1()(2)(()())(1(22abvpavpcpabacppHcps
)
(求单渠道单一回购契约时零售价格p与供应商利润函数s的关系图)
横轴p,且5
4.
已知:
400H
,10,10,5c,1v,100,50a,100b
公式:2)()(2)()(2)(()()(2222cpabvpavpcpabacppHcp)
(求集成决策时零售价格p与零售商利润函数的关系图)
横轴p,且5
5.
已知:400H,10,10,5c,1v,100,50a,100b,5.0
公式如下:
2)()1()(2)()1()(2)(()())(1(22221cpabvpavpcpabacppHcpr
)
(求单渠道混合回购契约时零售价格p与零售商利润函数1r的关系图)
横轴p,且5
6.
已知:400H,10,10,5c,1v,100,50a,100b,5.0
公式如下:
2)()(2)()(2)(()()(22221scpabvpavpcpabacppHcp
)
(求单渠道混合回购契约时零售价格p与供应商利润函数1s的关系图)
横轴p,且5
PS:你看看用Matlab能否把最大值的点都标注出来数据
以上是第三章部分需要用Matlab出图的部分,除了第一个公式外,其余五个公
式的图形可以在一张图内表示:出来的样子大概是下面这张图的感觉