DDA算法

DDA算法
DDA算法

2.1.1 生成直线的DDA算法

数值微分法即DDA法(Digital Differential Analyzer),是一种基于直线的微分方程来生成直线的方法。

一、直线DDA算法描述:

设(x1,y1)和(x2,y2)分别为所求直线的起点和终点坐标,由直线的微分方程得

= m =直线的斜率(2-1) 可通过计算由x方向的增量△x引起y的改变来生成直线:

x i+1=x i+△x (2-2)

y i+1=y i+△y=y i+△x·m (2-3) 也可通过计算由y方向的增量△y引起x的改变来生成直线:

y i+1=y i+△y (2-4)

x i+1=x i+△x=x i+△y/m (2-5) 式(2-2)至(2-5)是递推的。

二、直线DDA算法思想:

选定x2-x1和y2-y1中较大者作为步进方向(假设x2-x1较大),取该方向上的增量为一个象素单位(△x=1),然后利用式(2-1)计算另一个方向的增量(△y=△x·m=m)。通过递推公式(2-2)至(2-5),把每次计算出的(x i+1,y i+1)经取整后送到显示器输出,则得到扫描转换后的直线。

之所以取x2-x1和y2-y1中较大者作为步进方向,是考虑沿着线段分布的象素应均匀,这在下图中可看出。

另外,算法实现中还应注意直线的生成方向,以决定Δx及Δy是取正值还是负值。

三、直线DDA算法实现:

1、已知直线的两端点坐标:(x1,y1),(x2,y2)

2、已知画线的颜色:color

3、计算两个方向的变化量:dx=x2-x1

dy=y2-y1

4、求出两个方向最大变化量的绝对值:

steps=max(|dx|,|dy|)

5、计算两个方向的增量(考虑了生成方向):

xin=dx/steps

yin=dy/steps

6、设置初始象素坐标:x=x1,y=y1

7、用循环实现直线的绘制:

for(i=1;i<=steps;i++)

{ putpixel(x,y,color);/*在(x,y)处,以color色画点*/ x=x+xin;

y=y+yin;

}

四、直线DDA算法演示:

五、直线DDA算法特点:

该算法简单,实现容易,但由于在循环中涉及实型数的运算,因此生成直线的速度较慢。

六、直线DDA算法程序:

下面给出考虑不同斜率、不同方向直线的DDA画线算法程序:

#include

void DDALine(int x1, int y1, int x2, int y2, int color)

{

float increx,increy,x,y;

int steps,i;

if(abs(x2-x1)>abs(y2-y1))

steps= abs(x2-x1);

else

steps= abs(y2-y1);

increx=(float)(x2-x1)/steps;

increy=(float)(y2-y1)/steps;

x=x1;

y=y1;

for(i=1;i<=steps;i++)

{

putpixel(x,y,color); //在(x,y)处,以color色画点

x+=increx;

y+=increy;

}

}

速度测量方法概述

速度测量方法概述 一、速度测量方法 M法是测量单位时间内的脉数换算成频率,因存在测量时间内首尾的半个脉冲问题,可能会有2个脉的误差。速度较低时,因测量时间内的脉冲数变少,误差所占的比例会变大,所以M法宜测量高速。如要降低测量的速度下限,可以提高编码器线数或加大测量的单位时间,使用一次采集的脉冲数尽可能多。 T法是测量两个脉冲之间的时间换算成周期,从而得到频率。因存在半个时间单位的问题,可能会有1个时间单位的误差。速度较高时,测得的周期较小,误差所占的比例变大,所以T法宜测量低速。如要增加速度测量的上限,可以减小编码器的脉冲数,或使用更小更精确的计时单位,使一次测量的时间值尽可能大。 M法、T法各且优劣和适应范围,编码器线数不能无限增加、测量时间也不能太长(得考虑实时性)、计时单位也不能无限小,所以往往候M法、T法都无法胜任全速度范围内的测量。因此产生了M法、T法结合的M/T 测速法:低速时测周期、高速时测频率。 二、光电编码器 1、工作原理 光电编码器,是一种通过光电转换将输出轴上的机械几何位移量转换成脉冲或数字量的传感器。这是目前应用最多的传感器,光电编码器是由光栅盘和光电检测装置组成。光栅盘是在一定直径的圆板上等分地开通若干个长方形孔。由于光电码盘与电动机同轴,电动机旋转时,光栅盘与电动机同速旋转,经发光二极管等电子元件组成的检测装置检测输出若干脉冲信号,通过计算每秒光电编码器输出脉冲的个数就能反映当前电动机的转速。此外,为判断旋转方向,码盘还可提供相位相差90º;的两路脉冲信号。

2、倍频电路 倍频电路一般是指电机反馈变频器的倍频,一般4倍频居多。举个例子,如果电机装了一个1000线编码器,如果在没有倍频的情况下,电机每转一圈可输出1000个脉冲;如果经过4倍频电路处理,则可以得到一圈4000个脉冲的输出,电机一圈为360°,所以每个脉冲代表的位置为360°/4000,相比360°/1000, 分辨率为4倍。 3、频压转换 在测量转速(频率)时,目前多采用数字电路,但有些场合则需要转速(频率)的变化与模拟信号输出相对应,这样便可在自动控制系统实验中用频/压转换器件代替测速发电机,从而使实验设备简化。

算法实验报告

实验一分治与递归算法的应用 一、实验目的 1.掌握分治算法的基本思想(分-治-合)、技巧和效率分析方法。 2.熟练掌握用递归设计分治算法的基本步骤(基准与递归方程)。 3.学会利用分治算法解决实际问题。 二 . 实验内容 金块问题 老板有一袋金块(共n块,n是2的幂(n≥2)),最优秀的雇员得到其中最重的一块,最差的雇员得到其中最轻的一块。假设有一台比较重量的仪器,希望用最少的比较次数找出最重和最轻的金块。并对自己的程序进行复杂性分析。 三.问题分析: 一般思路:假设袋中有n 个金块。可以用函数M a x(程序 1 - 3 1)通过n-1次比较找到最重的金块。找到最重的金块后, 可以从余下的n-1个金块中用类似法通过n-2次比较找出最轻的金块。这样,比较的总次数为2n-3。

分治法:当n很小时,比如说,n≤2,识别出最重和最轻的金块,一次比较就足够了。当n 较大时(n>2),第一步,把这袋金块平分成两个小袋A和B。第二步,分别找出在A和B中最重和最轻的金块。设A中最重和最轻的金块分别为HA 与LA,以此类推,B中最重和最轻的金块分别为HB 和LB。第三步,通过比较HA 和HB,可以找到所有金块中最重的;通过比较LA 和LB,可以找到所有金块中最轻的。在第二步中,若n>2,则递归地应用分而治之方法 程序设计 据上述步骤,可以得出程序1 4 - 1的非递归代码。该程序用于寻找到数组w [ 0 : n - 1 ]中的最小数和最大数,若n < 1,则程序返回f a l s e,否则返回t r u e。 当n≥1时,程序1 4 - 1给M i n和M a x置初值以使w [ M i n ]是最小的重量,w [ M a x ]为最大的重量。 首先处理n≤1的情况。若n>1且为奇数,第一个重量w [ 0 ]将成为最小值和最大值的候选值,因此将有偶,数个重量值w [ 1 : n - 1 ]参与f o r循环。当n 是偶数时,首先将两个重量值放在for 循环外进行比较,较小和较大的重量值分别置为Min和Max,因此也有偶数个重量值w[2:n-1]参与for循环。 在for 循环中,外层if 通过比较确定( w [ i ] , w [ i + 1 ] )中的较大和较小者。此工作与前面提到的分而治之算法步骤中的2) 相对应,而内层的i f负责找出较小重量值和较大重量值中的最小值和最大值,

测量速度的18种方法--实用.docx

测量速度的 18 种方法 新课程改革的推进和高考改革的不断深入,高考命题更加注重新课 程理念的领航作用,“考试内容要实现与高中新课程内容的衔接,进一 步贴近时代、贴近社会、贴近考生实际,注重对考生运用所学知识分 析问题、解决问题能力的考查。” 这是适应新课程改革的新考试观的核 心内容,这更是新高考的命题方向。从近年高考命题来看,试题越来 越体现这一新考试观的核心内容。而这一类问题的选材灵活,立意独特新颖,要求考生能从物理情境中研究对象和物理过程,建立物理模型, 利用相应的规律来解决实际问题。 速度是描述物体运动快慢的物理量,在日常生活、社会实践和科学实 验中,需要对某些物体的速度进行测量,如交通车辆的速度,子弹的速度,流体的流速,声、光的传播速度等等,那么速度测量方法有几种方法呢? 笔者对此作了归纳总结如下,以培养学生创造性思维和发散性思维能力。 1.利用计时器测速度 利用电磁打点计时器(电火花计时器)在与运动物体相连的纸带上 打点(孔)以记录运动物体在不同时刻的位置,用刻度尺测出纸带某点 与相邻点(计数点)间的距离,利用计算得出匀变速直线运动物体的 速度。 例1( 09·广东理基卷 -18 )“研究匀变速直线运动”的实验中,使用电磁式打点计时器 ( 所用交流电的频率为 50Hz),得到如图 1 所示的

纸带。图中的点为计数点,相邻两计数点间还有四个点未画出来,下列 表述正确的是 A.实验时应先放开纸带再接通电源 B.(S6 一 S1)等于 (S2 一 S1) 的 6 倍 C.从纸带可求出计数点 B 对应的速率 D.相邻两个计数点间的时间间隔为0. 02s 解析:在“研究匀变速直线运动”的实验中, 实验时应先接通电源再放开纸带 ,A 错. 根据相等的时间间隔内通过的位移有 , 可知 (S6 一 S1) 等于 (S2 一 S1)的 5 倍,B 错 . 根据 B 点为 A 与 C的中间时刻点有 ,C 对.由于相邻的计数点之间还有 4 个点没有画出 , 所以时间间隔为 0.1s,D 错. 点评:利用方法测定匀变速直线运动物体的速度在力学实验中经常 用到,提醒考生要掌握此方法。 2.利用光电门测速度 光电门测速原理是把物体通过光电门的时间内认为物体做匀速直线 运动,利用极短时间的平均速度替代瞬时速度,根据可知,只要测出物体的宽度和物体通过光电门的时间即可测定物体的速度。 例2.( 2009·全国Ⅰ -23 )某同学为了探究物体在斜面上运动时摩擦力与斜面倾角的关系,设计实验装置如图 2 所示。长直平板一端放在 水平桌面上,另一端架在一物块上。在平板上标出 A、B 两点, B 点处放置一光电门,用光电计时器记录滑块通过光电门时挡光的时间。

实验二 银行家算法

实验四银行家算法 一、实验目的 1.理解死锁避免相关内容; 2.掌握银行家算法主要流程; 3.掌握安全性检查流程。 操作系统中的死锁避免部分的理论进行实验。要求实验者设计一个程序,该程序可对每一次资源申请采用银行家算法进行分配。 二、实验设备 PC机、windows 操作系统、VC++6.0 三、实验要求 本实验要求3学时完成。 1.设计多个资源(≥3); 2.设计多个进程(≥3); 3.设计银行家算法相关的数据结构; 4.动态进行资源申请、分配、安全性检测并给出分配结果。 5.撰写实验报告,并在实验报告中画出银行家算法和和安全性检查算法流程图。 四、预备知识 死锁避免定义:在系统运行过程中,对进程发出的每一个资源申请进行动态检查,并根据检查结果决定是否分配资源:若分配后系统可能发生死锁,则不予分配,否则予以分配。 由于在避免死锁的策略中,允许进程动态地申请资源。因而,系统在进行资源分配之前预先计算资源分配的安全性。若此次分配不会导致系统进入不安全状态,则将资源分配给进程;否则,进程等待。其中最具有代表性的避免死锁算法是银行家算法。 1 系统安全状态 1)安全状态 所谓系统是安全的,是指系统中的所有进程能够按照某一种次序分配资源,并且依次地运行完毕,这种进程序列{ P1 ,P2 …Pn}就是安全序列。如果存在

这样一个安全序列,则系统是安全的。 并非所有的不安全状态都会转为死锁状态,但当系统进入不安全状态后,便有可能进入死锁状态;反之,只要系统处于安全状态,系统便可避免进入死锁状态。所以避免死锁的实质:系统在进行资源分配时,如何使系统不进入不安全状态。 2)安全状态之例 假设系统有三个进程,共有12台磁带机。各进程的最大需求和T0时刻已分配情况如下表: 答:T0时刻是安全的,因为存在安全序列:P2 →P1→ P3 不安全序列:P1→… P3→… P2→P3→P1 3)由安全状态向不安全状态的转换 如果不按照安全序列分配资源,则系统可能会由安全状态进入不安全状态。例如,在T0时刻以后,P3又请求1台磁带机,若此时系统把剩余3台中的1台分配给P3,则系统便进入不安全状态。因为,此时也无法再找到一个安全序列,例如,把其余的2台分配给P2,这样,在P2完成后只能释放出4台,既不能满足P1尚需5台的要求,也不能满足P3尚需6台的要求,致使它们都无法推进到完成,彼此都在等待对方释放资源,即陷入僵局,结果导致死锁。 2 利用银行家算法避免死锁 1)银行家算法中的数据结构 ①可利用资源向量Available。 这是一个含有m个元素的数组,其中的每一个元素代表一类可利用的资源数目,其初始值是系统中所配置的该类全部可用资源的数目,其数值随该

高中物理中常用的测量速度方法

高中物理中常用的测量速度方法瞬时速度可以用等效的方法近似测量。通常我们研究的是一个作变速直线运动的物体,在其运动过程中选定一小段,用其平均速度近似地来代替瞬时速度。 这个平均速度,虽然只能粗略地反映运动质点在这段时间内的平均快慢程度,但如果我们把时间取得越短,物体速度的变化就越小,依据瞬时速度的表述,当该段时间趋向0时,这个平均速度的极限值就等于该时刻的瞬时速度。 一、打点计时器 思想方法:用某段时间内的平均速度来粗略的代替这段时间内的某点的瞬时 速度.所取的时间间隔越接近,该点计算出的瞬时速度就越精确。 例1.在用打点计时器测定手拉动纸带的瞬时速度实验中,得到如图所示的纸带,图中A,B,C,D,E为测量点,相邻测量点之间还有4个点未画出,打点计时器交流电频率是50赫兹,求: V B=,V C=,V D=三点的瞬时速度. 二、光电门 当物体通过光电门时光被挡住,计时器开始计时,当物体离开时停止计时, 这样就可以根据物体大小与运动时间计算物体运动的速度;若计时装置具备运算功能,使用随机配置的挡光片(宽度一定),可以直接测量物体的瞬时速度。

例2.为了测定气垫导轨上滑块的加速度,滑块上安装了宽度为3.0cm 的遮光板,如图所示,滑块在牵引力作用下先后匀加速通过两个光电门,配套的数字毫秒计记录了遮光板通过第一个光电门的时间为 △t1=0.30s,通过第二个光电门的时间为△t2=0.10s,遮光板从开始遮住第一个光电门到开始遮住第二个光电门的时间为△t=3.0s.则 (1)滑块上的遮光板通过第一个光电门时,速度大小为m/s;(2)(2)滑块上的遮光板通过第二个光电门时,速度大小为 m/s; (3)(3)滑块的加速度为m/s2 (4)(4)两个光电门之间的距离是m. 三、频闪照相 用多次曝光把运动物体每隔一定时间间隔所在的位置记录在同一底片上的摄影技术叫频闪照相。 例3.有一高度为1.70米的田径运动员正在进行100米短跑比赛,在终点处,有一站在跑道终点旁边的摄影记者用照相机给他拍摄冲刺运动.摄影记者使用的照相机的光圈(控制进光量的多少)是16,快门(曝光时间)是1/60秒.得到照片后测得照片中人的高度为1.7×10-2米,胸前号码布上模糊部分的宽度是2×10-3米,由以上数据可以知道运动员冲刺时1/60秒内的位移是0.2m;冲刺时的速度大小是12m/s. 四、超声波 超声波每隔相等时间,发出一超声,每隔一段时间接收到物体反射回的该超声。利用超声波对汽车运动速度的测定,就是利用超声波的直线传播和反射,通过对超声波从发射到返回时间的测定,测出汽车遇到超声波时的位置,进而测出其运动速度的。 例4.如图(a),停在公路旁的公安巡逻车利用超声波可以监测车速:巡逻车上测速仪发出并接收超声波脉冲信号,根据发出和接收到的信号间的时间差,就能测出车速.在图(b)中,P1、P2是测速仪先后发出的超声波信号,n1?n2分别是测速仪检测到的P1、P2经反射后的信号.设

实验二(贪心算法)

华东师范大学计算机科学技术系上机实践报告 课程名称:算法设计与分析年级:05上机实践成绩: 指导教师:柳银萍姓名:张翡翡 上机实践名称:贪心算法学号:10052130119上机实践日期:2007-4-10 上机实践编号:NO.2组号:上机实践时间:10:00-11:30 一、目的 了解熟悉掌握贪心算法实质并学会灵活运用,从而解决生活中一些实际问题。 二、内容与设计思想 1.超市的自动柜员机(POS)要找给顾客各种数值的现金,表面上看,这是一个很简单的任务,但交给机器办就不简单了。你作为一个计算机专家,要求写一个程序来对付这个“简单”的问题。 你的自动柜员机有以下的币种:100元,50元,20元,10元,5元,2元,1元。你可以假设每种钱币的数量是无限的。现在有一笔交易,需要找个客户m元,请你设计一个算法,使得找给顾客的钱币张数最少。 要求: 输入:第一行仅有一个整数n(0

测量速度的18种方法

测量速度的18种方法 新课程改革的推进和高考改革的不断深入,高考命题更加注重新 “考试内容要实现与高中新课程内容的衔接,进课程理念的领航作用,一步贴近时代、贴近社会、贴近考生实际,注重对考生运用所学知识分这是适应新课程改革的新考试观的析问题、解决问题能力的考查。”核心内容,这更是新高考的命题方向。从近年高考命题来看,试题越来立意独特而这一类问题的选材灵活,越体现这一新考试观的核心内容。新颖,要求考生能从物理情境中研究对象和物理过程,建立物理模型,利用相应的规律来解决实际问题。 速度是描述物体运动快慢的物理量,在日常生活、社会实践和科学实验中,需要对某些物体的速度进行测量,如交通车辆的速度,子弹的速度,流体的流速,声、光的传播速度等等,那么速度测量方法有几种以培养学生创造性思维和发散性方法呢?笔者对此作了归纳总结 如下,思维能力。 利用计时器测速度1. 利用电磁打点计时器(电火花计时器)在与运动物体相连的纸带上打点(孔)以记录运动物体在不同时刻的位置,用刻度尺测出纸带某点计算得出匀变速直线运动物体的与相邻点(计数点)间的距离,利用速度。 )“研究匀变速直线运动”的实验中, -1809例1(·广东理基卷所 示的1得到如图,50Hz)所用交流电的频率为(使用电磁式打点计时器.

纸带。图中的点为计数点,相邻两计数点间还有四个点未画出来,下列表述正确的是 .实验时应先放开纸带再接通电源A 倍一S1)6的. B(S6一S1)等于(S2 对应的速率C.从纸带可求出计数点B 02s.相邻两个计数点间的时间间隔为0. D 实验时应先接通电源再解析:在“研究匀变速直线运动”的实验中,S1)(S6一,A错.根据相等的时间间隔内通过的位移有 ,可知放开纸带. ,C的中间时刻点有对A.5(S2等于一S1)的倍,B错根据B点为与C0.1s,D,所以时间间隔为由于相邻的计数点之间还有4个点没有画出.错 方法测定匀变速直线运动物体的速度在力学实验中经常利用点评:用到,提醒考生要掌握此方法。 利用光电门测速度2. 光电门测速原理是把物体通过光电门的时间内认为物体做匀速直线可知,只要测出运动,利用极短时间的平均速度替代瞬时速度,根据物体的宽度和物体通过光电门的时间即可测定物体的速度。 )某同学为了探究物体在斜面上运动时摩-23·全国Ⅰ例2.(2009所示。长直平板一端放在2擦力与斜面倾角的关系,设计实验装置如图点处放BBA另一端架在一物块上。水平桌面上,在平板上标出、两点,置一光电门,用光电计时器记录滑块通过光电门时挡光的时间。 实验步骤如下:

算法实验报告二

算法设计与分析实验 学院:信息工程 专业:计算机科学与技术

算法实验报告二排序问题求解 一、实验目的: 1)以排序(分类)问题为例,掌握分治法的基本设计策略。 2)熟练掌握一般插入排序算法的实现; 3)熟练掌握快速排序算法的实现; 4) 理解常见的算法经验分析方法; 二、实验要求: 1.生成实验数据. 要求:编写一个函数datagenetare,生成2000个在区间[1,10000]上的随机整数,并将这些数输出到外部文件data.txt中。这些数作为后面算法的实验数据。 2.实现直接插入排序算法. 3.实现快速排序算法. 三、实验主要步骤: #include #include #include #include #define RAND_MAX 10000 #define Max 1000 int I_Change_count = 0; //插入排序比较计数器 int I_Move_count = 0; //插入排序移动计数器 int S_Change_count =0; //选择排序比较计数器 int S_Move_count = 0; //选择排序移动计数器 int Q_Change_count = 0; //快速排序比较计数器 int Q_Move_count = 0; //快速排序移动计数器 void main() { long num; long Array[Max],Brray[Max],Crray[Max];//分别用来保存随机数作为两个排序的对象int A_Length; int Low = 0; int High; time_t t; void InsertSort(long Array[],int A_Length); //void SelectSort(long Brray[],int A_Length); void QuickSort(long Crray[],int Low,int High);

实验二 FFT算法的MATLAB实现

班级:学号:姓名 实验二FFT算法的MATLAB实现 (一)实验目的: (1)掌握用matlab进行FFT在数字信号处理中的高效率应用。 (2)学习用FFT对连续信号和时域离散信号进行谱分析。 (二)实验内容及运行结果: 题1:若x(n)=cos(nπ/6)是一个N=12的有限序列,利用MATLAB计算它的DFT 并进行IDFT变换同时将原图与IDFT变换后的图形进行对比。当求解IFFT变换中,采样点数少于12时,会产生什么问题。 程序代码: N=12; n=0:11; Xn=cos(n*pi/6); k=0:11; nk=n'*k; WN=exp(-j*2*pi/N) WNnk=WN.^nk XK=Xn*WNnk; figure(1) stem(Xn) figure(2) stem(abs(XK)) 运行结果:

IFFT变换中,当采样点数少于12时图像如下图显示:

分析:由图像可以看出,当采样点数小于12时,x(n)的频谱不变,周期为6,而XK 的频谱图发生改变。 题2:对以下序列进行谱分析 132()()103()8470x n R n n n x n n n =+≤≤?? =-≤≤??? 其他n 选择FFT 的变换区间N 为8和16点两种情况进行频谱分析,分别打印其幅频特 性曲线并进行对比、分析和讨论。 ㈠ 程序代码: x=ones(1,3);nx=0:2; x1k8=fft(x,8); F=(0:length(x1k8)-1)'*2/length(x1k8); %进行对应的频率转换 stem(f,abs(x1k8));%8点FFT title('8点FFTx_1(n)'); xlabel('w/pi'); ylabel('幅度'); N=8时:

19:对六种瞬时速度测量方法的研究

专题十七:对六种瞬时速度测量方法的研究 方法一:直接测微小位移和微小时间法 对运动物体我们可采用光电计时器、照相机、超声波测速仪等工具来记录物体在微小时间内的位移。具体如下: 1)、光电计时器测速 1:光电计时器是一种研究物体运动情况的常用计时仪器,其结构如图甲所示,a 、b 分别是光电门的激光发射和接收装置,当有物体从a 、b 间通过时,光电计时器就可以显示物体的挡光时间,图中MN 是水平桌面,Q 是木板与桌面的接触点,1和2是固定在木板上适当位置的两个光电门,与之连接的两个光电计时器没有画出,让滑块d 从木板的顶端滑下,光电门1、2各自连接的计时器显示的挡光时间分别为22.510s -?和21.010 s -?,小滑块d 的宽度为0.5cm 。可测出滑块通过光电门 1的速度v 1=__ ___m/s ,滑块通过光电门2的速度v 2=__ ___m/s 。 2)、照相机拍照测速 2:“神舟”六号载人飞船的发射时,某记者为了拍摄飞船升空的美好瞬间,采用照相机的光圈(控制进光量的多少)是16,快门(暴光时间)是1/60s 拍照,得到照片中飞船的高度是h ,飞船上“神舟六号”四字模糊部分的高度是ΔL ,已知飞船的高度是H 。由以上数据可粗略求出拍照瞬间飞船的瞬时速度。 3)、超声波反射测速 3.下图是在高速公路上用超声波测速仪测量车速的示意图,测速仪发出并接收超声波脉冲信号,根据发出和接收到的时间差,测出汽车的速度。图中是测速仪发出的超声波信号,n 1、n 2分别是由汽车反射回来的信号。设测速仪匀速扫描,p 1、、p 2之间的时间间隔Δt =1.0s ,超声波在空气中传播的速度是V =340m/s ,若汽车是匀速行驶的,则根据图可知,汽车在接收到p 1、、p 2两个信号之间的时间内前进的距离是 m ,汽车的速度是____ ____m/s 方法二:测匀变速直线运动位移时间法 1)、打点计时器测速 2)、频闪照片测速 例如:如图所示,是利用频闪照相研究自由落体运动的示意图.闪光频率为10Hz 的闪光器拍摄的照片中A 球有四个像,像间距离已在图中标出,单位为cm ,可以计算出A 球在3位置的速度 2m/s . 方法三:用平抛或竖直上抛 方法四:电磁感应规律测速法:依据电磁感应定律可将速度测量转化为电压或电流等电学量的测量。 例如:电磁流量计是广泛应用于测量可导电流体(如污水)在管中的流量(在单位时间通过管 内横截面的流体的体积).为了简化,假设流量计是如图所示的横截面为长方形的一段管道.其 中空部分长,宽,高分别为图中的a,b,c.流量计两端与输送流体的管道相连, (图中虚线).图 中流量计的上下两面是金属材料,前后两面是绝缘材料.现于流量计所在处加磁感强度为B

算法分析与设计实验二:动态规划法

题目:用动态规划法实现求两序列的最长公共子序列。 程序代码 #include #include //memset需要用到这个库 #include using namespace std; int const MaxLen = 50; class LCS { public: LCS(int nx, int ny, char *x, char *y) //对数据成员m、n、a、b、c、s初始化{ m = nx; //对m和n赋值 n = ny; a = new char[m + 2]; //考虑下标为0的元素和字符串结束标记 b = new char[n + 2]; memset(a, 0, sizeof(a)); memset(b, 0, sizeof(b)); for(int i = 0; i < nx + 2; i++) //将x和y中的字符写入一维数组a和b中a[i + 1] = x[i]; for(int i = 0; i < ny + 2; i++) b[i + 1] = y[i]; c = new int[MaxLen][MaxLen]; //MaxLen为某个常量值 s = new int[MaxLen][MaxLen]; memset(c, 0, sizeof(c)); //对二维数组c和s中元素进行初始化 memset(s, 0, sizeof(s)); } int LCSLength(); //求最优解值(最长公共子序列长度) void CLCS() //构造最优解(最长公共子序列) { CLCS(m, n); //调用私有成员函数CLCS(int,int) } private: void CLCS(int i, int j); int (*c)[MaxLen], (*s)[MaxLen]; int m, n;

实验二、A*搜索算法

实验二:A*算法 一、实验目的 了解启发式搜索算法的基本思想,掌握A*算法的基本原理和步骤。学会对于算法的正确应用,解决实际生活中的问题。学会区分与盲目搜索算法的不同之处。 二、实验环境 PC机一台,VC++6.0 三、实验原理 A*搜索算法,俗称A星算法。这是一种在图形平面上,有多个节点的路径,求出最低通过成本的算法。常用于游戏中的NPC(Non-Player-ControlledCharacter)的移动计算,或线上游戏的BOT(ROBOT)的移动计算上。该算法像Dijkstra算法一样,可以找到一条最短路径;也像BFS一样,进行启发式的搜索。 A*算法是一种启发式搜索算法,启发式搜索就是在状态空间中的搜索对每一个搜索的位置进行评估,得到最好的位置,再从这个位置进行搜索直到目标。这样可以省略大量无谓的搜索路径,提高了效率。在启发式搜索中,对位置的估价是十分重要的。采用了不同的估价可以有不同的效果。 A*算法的公式为:f(n)=g(n)+h(n),g(n)表示从起点到任意顶点n的实际距离,h(n)表示任意顶点n到目标顶点的估算距离。这个公式遵循以下特性: 如果h(n)为0,只需求出g(n),即求出起点到任意顶点n的最短路径,则转化为单源最短路径问题,即Dijkstra算法 如果h(n)<=“n到目标的实际距离”,则一定可以求出最优解。而且h(n)越小,需要计算的节点越多,算法效率越低。 对于函数h(n),估算距离常用的方法有: 曼哈顿距离:定义曼哈顿距离的正式意义为L1-距离或城市区块距离,也就是在欧几里德空间的固定直角坐标系上两点所形成的线段对轴

产生的投影的距离总和。例如在平面上,坐标(x1,y1)的点P1与坐标(x2, y2)的点P2的曼哈顿距离为:|x1 - x2| + |y1 - y2|。 欧氏距离:是一个通常采用的距离定义,它是在m维空间中两个点之间的真实距离。在二维和三维空间中的欧氏距离的就是两点之间的距离。例如在平面上,坐标(x1,y1)的点P1与坐标(x2, y2)的点P2的欧氏距离为: sqrt((x1-x2)^2+(y1-y2)^2 )。 切比雪夫距离:是两个向量之间各分量差值的最大值。例如在平面上,坐标(x1, y1)的点P1与坐标(x2, y2)的点P2的切比雪夫距离为:max(|x1 - x2| , |y1 - y2|)。 A*算法最为核心的部分,就在于它的一个估值函数的设计上: f(n)=g(n)+h(n) 其中f(n)是每个可能试探点的估值,它有两部分组成: 一部分,为g(n),它表示从起始搜索点到当前点的代价(通常用某结点在搜索树中的深度来表示)。 另一部分,即h(n),它表示启发式搜索中最为重要的一部分,即当前结点到目标结点的估值, h(n)设计的好坏,直接影响着具有此种启发式函数的启发式算法的是否能称为A*算法。 一种具有f(n)=g(n)+h(n)策略的启发式算法能成为A*算法的充分条件是: 1、搜索树上存在着从起始点到终了点的最优路径。 2、问题域是有限的。 3、所有结点的子结点的搜索代价值>0。 4、h(n)=

重力加速度测量的十种方法

重力加速度测量的十种方法 方法一、用弹簧秤和已知质量的钩码测量 将已知质量为m的钩码挂在弹簧秤下,平衡后,读数为G.利用公式 G=mg得g=G/m. 方法二、用滴水法测重力加速度 调节水龙头阀门,使水滴按相等时间滴下,用秒表测出n个(n取50—100)水滴所用时间t,则每两水滴相隔时间为t′=t/n,用米尺测出水滴下落距离h,由公式h=gt′2/2可得g=2hn2/t2. 方法三、用单摆测量(见高中物理学生实验) 方法四、用圆锥摆测量.所用仪器为:米尺、秒表、单摆. 使单摆的摆锤在水平面内作匀速圆周运动,用直尺测量出h(见图1),用秒表测出摆球n转所用的时间t,则摆球角速度ω=2πn/t 摆球作匀速圆周运动的向心力F=mgtgθ,而tgθ=r/h所以mgtgθ=mω2r由以上几式得:

g=4π2n2h/t2. 将所测的n、t、h代入即可求得g值. 方法五、用斜槽测量,所用仪器为:斜槽、米尺、秒表、小钢球. 按图2所示装置好仪器,使小钢球从距斜槽底H处滚下,钢球从水平槽底末端以速度v作平抛运动,落在水平槽末端距其垂足为H′的水平地面上,垂足与落地点的水平距离为S,用秒表测出经H′所用的时间t,用米尺测出S,则钢球作平抛运动的初速度v=S/t.不考虑摩擦,则小球在斜槽上运动时,由机械能守恒定律得:mgH=mv2/2.所以g=v2/2H=S2/2Ht2,将所测代入即可求得g值. 方法六、用打点计时器测量.所用仪器为:打点计时器、直尺、带钱夹的铁架台、纸带、夹子、重物、学生电源等. 将仪器按图3装置好,使重锤作自由落体运动.选择理想纸带,找出起始点0,数出时间为t的P点,用米尺测出OP的距离为h,其中t=0.02 秒×两点间隔数.由公式h=gt2/2得g=2h/t2,将所测代入即可求得g.

测量物体速度的几种方法

1 测量物体速度的几种方法 测量物体速度的方法很多,不仅可以利用电磁打点计时器和电流表,还可以利用多种脉冲信号(如:超声波脉冲、电磁脉冲、光电脉冲或激光扫描信号),还可以利用共振、干涉原理、多普勒效应等九种方法进行测量,现介绍如下. 一、 利用电磁打点计时器或电流表测量物体速度 利用电磁打点计时器测量物体速度是中学物理中最常见的,本文不再介绍;但利用电流表测量物体速度很多同学还比较陌生,现举例说明. 例1 如图1所示,变阻器滑动触头P 与某一运动的物体相连,当P 匀速滑动时,电流表就有一定的示数,从电流表的读数可得运动物体的速度.已知电源电动势E=6V ,内阻r=10Ω,AB 为粗细均匀的电阻丝,阻值R=50Ω,长度L=50cm,电容器的电容C=100F μ.某次测量电流表的读数为I=0.10mA ,方向由M 流向N ,求运动物体的速度v . [解析]由分压原理得AB 两端电压AB U = R E R r +,① AB 单位长度上的电压为AB U U L ?=,② 设t ?(极短)时间内,电容器两极板间电压的变化量和 极板上电荷的变化量分别为Uc ?和Q ?,则 Uc U v t ?=????,③ 图1 Q ?=Uc ?·C ,④ 电容器上充(放)电的电流为Q I t ?= ?.⑤ 解①-⑤得()R r L v I REC +=.⑥ 将已知数据代入⑥得v =0.1m/s.根据题目“电流表中的电流方向由M 流向N ”可知,该过程为电容器充电过程,则物体由B 向A 运动. 从⑥可以看出()R r L v I REC +=∝I ,可见电流表的读数与物体的速度成正比.当电流表用做测速时,它的刻度是均匀的. 二、 利用多种脉冲信号(如:超声波脉冲、电磁脉冲或光电脉冲信号)测量物体速度 1、利用超声波脉冲信号测量物体速度(例如:超声波测速仪、水声测位仪(声纳)) 例2(2001·上海) 如图2所示,图A 是高速公路上用超声波测速仪测量车速的示意图,测速仪发出并接收超声波脉冲信号.根据发出和接收的信号间的时间差,测出被测物体的速度.图B 中P 1、P 2是测速仪发出的超声波信号,n 1、n 2分别是P 1、P 2由汽车反射回来的信号.设测速仪匀速扫描,P 1、P 2之间的时间间隔Δt 0=1.0s,超声波在空气中传播速度是v 0=340m/s,若汽车是匀速行驶的,则根据图B 可知,汽车在接收到P 1、P 2两个信号之间的时间内前进的距离是__m,汽车的速度是__m/s.

算法实验二

17学年—18学年第 1学期算法设计与实践实验报告 专业名称:数字媒体技术 课程名称:算法设计与实践 实验题目: 3.5 设有n种不同面值的硬币,第i种硬币的币值是vk(其中v1=1),重量是wi,i=1,2……n,且现在购买某些总价值为y的商品,需要用这些硬币付款,如果每种钱币使用的个数不限,那么如何选择付款的方法是的付出钱币的总重量最轻? 问题的实例: V1=1, v2=4 ,v3=6 ,v4=8 ,w1=1,w2=2,w3=4,w4=6,y=12 3.10 把0-1背包问题加以推广,设有n种物品,第i种物品的价值是vi,重量wi,体积是ci,且装入背包的重量限制是W,体积是V,问如何选择装入背包的物品使得其总重不超过W,总体积不超过V且价值达到最大? 实验环境: Visual Studio 2015 实验程序: 3.5 // Money.cpp : 定义控制台应用程序的入口点。

// #include using namespace std; #define MAX_NUM 20 int main() { int weight[MAX_NUM] = { 0,1,2,4,6 }; int value[MAX_NUM] = { 0,1,4,6,8 }; int y = 12; int n = 5; int F[MAX_NUM][MAX_NUM] = { 0 }; int t[MAX_NUM][MAX_NUM] = { 0 }; int i, j; //初始化 for (int j = 1; j <= y; j++) { F[1][j] = j*weight[1]; t[1][j] = 1; } //迭代更新 for (int i = 2; i <= n; i++) { for (int j = 1; j <= y; j++) { F[i][j] = F[i - 1][j]; t[i][j] = t[i - 1][j]; if (F[i][j - value[i]] + weight[i] <= F[i - 1][j]) { F[i][j] = F[i][j - value[i]] + weight[i]; t[i][j] = i; } }

重力加速度测量方法的研究

重力加速度测量方法的比较研究 错误!未找到引用源。错误!未找到引用源。摘 要: 重力加速度是物理学中的一个十分重要的物理量,在地面上不同的地区,重力加速度g 值不相同,它是由物体所在地区的纬度、海拔等因素决定,随着地球纬度和海拔高度的变化而变化,准确地确定 它的量值,无论从理论上、还是科研上、生产上以及军事上都有极其 重大的意义。 测量重力加速度的方法有很多,我所要做的就是通过学习前人的 理论知识,经过思考,在现有的实验室条件下,进行实验,做出归纳和总结,提出自己的看法与体会。且实验方法虽然多,但有的测量仪器的精确度受环境因素的影响比较大,不是每种方法都适用,所以有必要对测量方法进行研究,找出一种适合测量本地重力加速度的方法。 关键词:重力加速度;测量;比较。 1. 用单摆测重力加速度 1.1 实验原理 用长线把小球吊在支架上,构成一个单摆。用米尺测出摆线长 L ,用游标卡 尺测出小球直径 d 。用秒表测出 n 个周期所用时间 t ,根据单摆周期公式: T = g L 2/d 2+π=n t (1) 得: g= 22)/(2/d 4n t L )(+π (2) 求出的 g 即为重力加速度。 1.2 实验步骤 (1)用米尺量出悬线长 L ,准确到毫米,已知小球半径为 1cm 。 (2)把单摆从平衡位置拉开一个角度( θ < 5° )放开它,用秒表测量单摆完 成 30 次全振动所用的时间,求出完成一次全振动所需要的时间。反复测量五次, 取单摆周期平均值。 (3)把测得的周期和摆长的数值代入公式,求出重力加速度 g 的值来。 1.3 实验仪器 单摆,停表,钢卷尺,小球。

用三种方法测量重力加速度

用三种方法测量重力加速度 朱津纬1 (1.复旦大学物理学系,上海市200433) 摘要:本实验通过手机phyphox软件,用三种方法测量了重力加速度。分别将落币法、复摆法和弹簧法所得的重力加速度结果与实际值比较,误差不超过4%。 1 引言 随着科技的发展,如今智能手机功能越来越丰富。许多应用软件全面地利用手机中传感器,可以用来实施物理实验[1,2]。其中,“phyphox”是集合了很多实验项目的应用软件。本实验将利用它来测量重力加速度。 重力加速度可通过多种方法进行测得。如单摆法[3],多管落球法[4],和利用自由落体的方法[5]等。在本实验中,重力加速度利用落币法、复摆法和弹簧法三种方法被测量,并与标准值比较。 2 实验原理 首先,分别介绍三种方法的理论原理。 2.1 落币法 该实验将利用“phyphox”中的“声控秒表”项目,测量硬币从不同高度?自由落体所 需的时间t。通过对t?√?数据线性拟合,得到重力加速度g=2 斜率2 。 如图1所示,硬币自由落体下落的高度为?。用水笔敲击直尺发出敲击声,设该时刻为t0。经过微小时间差Δt(与高度无关,假设为常量),硬币开始下落,设该时刻为t1。一段时间后,硬币落到地上,并发出与地面的碰撞声,设该时刻为t2。“声控秒表”测量了两次声响的时间差t=t2?t0。 由自由落体公式可知 ?=1 2g(t2?t1)2=1 2 g(t?Δt)2,(2.1) 即 t=√2 g √?+Δt。(2.2) 因此t?√?呈线性关系,斜率为√2 g 。 2.2 复摆法 图1 落币法实验示意图

该实验将利用“phyphox ”中的“单摆”项目,测量不同摆长L 复摆的摆动周期T 。通过 对T 2? L 2+bL+ b 23 (L+b 2) 数据线性拟合,得到重力加速度g = 4π 2 斜率 。 如图2所示,长度为L 的细线与宽度为b 的手机组成复摆,以杆子为轴前后摆动。设复摆的转动惯量为I ,手机(过中心水平轴)的转动惯量为I c = mb 212 。则由平行轴定理得 I =I c +m(L +b 2)2。 (2.3) 由复摆摆动周期公式得 T =2π√ I mg(L+b 2 ) =2π√ L 2+bL+ b 23 g(L+b 2 ) 。 (2.4) 因此T 2? L 2+bL+ b 23 (L+b 2) 呈线性关系,斜率为4π2g 。 2.3 弹簧法 该实验将利用“phyphox ”中的“弹簧”项目,测量悬挂不同质量重物弹簧的(平衡时的)下端位置x 和振动周期T 。通过对x ?T 2数据线性拟合,得到重力加速度g =斜率。之后,将考虑空气阻力,得到修正结果。 如图3所示,弹簧悬挂重物。设弹簧不悬挂重物时的平衡位置为x 0(是常量)、弹簧的弹性系数为k 、塑料袋重物的总质量为m 。 由受力平衡,得 mg =k (x ?x 0)。 (2.5) 再由弹簧的周期公式 T =2π√m k , (2.6) 消去m ,得 x =g (T 2π)2+x 0。 (2.7) 图3 弹簧法实验示意图 图2 复摆法实验示意图

实验二 递归算法

实验二java环境及递归算法(2学时) 一、实验目的与要求 1、熟悉java语言的集成开发环境; 2、通过本实验加深对递归过程的理解 二、实验内容: 掌握递归算法的概念和基本思想,分析并掌握排列问题的递归算法和Hanoi塔问题的递归算法。 三、实验题 1、设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。任意输入一串整数或字符, 输出结果能够用递归方法实现整数或字符的全排列。 2、设a,b,c是3个塔座。开始时,在塔座a上有一叠共n个圆盘,这些圆盘自下而上, 由大到小地叠在一起。各圆eh盘从小到大编号为1,2,…,n,现要求将塔座a上的这一叠圆盘移到塔座b上,并仍按同样顺序叠置。 四、实验步骤 1.理解算法思想和问题要求; 2.编程实现题目要求; 3.上机输入和调试自己所编的程序; 4.验证分析实验结果; 5.整理出实验报告。 1、设计一个递归算法生成n个元素{r1,r2,…,rn}的全排列。任意输入一串整数或字符,输出结果能够用递归方法实现整数或字符的全排列。 public class Mymath { public static void swap(int list[],int a,int b) { int temp=list[a]; list[a]=list[b]; list[b]=temp; } static void perm(int list[],int k,int m) { if(k==m) { for(int i=0;i<=m;i++) System.out.print(list[i]); System.out.println(); } else for(int i=k;i<=m;i++) { Mymath.swap(list,k,i); perm(list,k+1,m); Mymath.swap(list,k,i); } }

相关文档
最新文档