李萨如图形的动静态演示
摘要:在学习《大学物理》关于波动的那一章时第一次接触到了李萨如图,当时就对它变幻
的图形产生了兴趣,上个学期我学习了Visual Basic,尽管还不精通,但已经可以用它来编写绘制李萨如图,所以就决定编写了这个小程序作为我的课程设计。 关键词:李萨如图形的动静态演示 VB 正文:
在实际问题中,经常会遇到同一个质点同时参与两个不同方向的振动。这时质点的合位移是两个分振动的矢量和。其中,相互垂直的两个简谐振动的合成,就是我准备讨论的李萨如图的基础本质。
我认为编辑程序的前提,就是要将所用到的量和公式进行变量式处理,也可以说是数字化处理。所以,在进行程序说明以前,先对李萨如图合成原理进行分析。李萨
如图上的每一个点都可以用以下的公式进行表示: X=A1Cos(ω1t+ψ1) Y=A2Cos(ω2t+ψ2)
下面我介绍一下我是如何在程序中实现这一目的的。在程序中,我将公式稍加改动,
成为:
1. X = Cos (ω1t) Y = Cos (ω2t +ψ)
其中,ω1和ω2是变量,用于获取外界输入的数值,为了保证频率成简单的整数比,所以ω1和ω2只能取个位整数。ψ是用来获取外界输入的初始相差的值,ψ=ψ2-ψ1。先前公式中的A1和A2,只关系到绘制出的图形的最高最低点和最左最右点的位置,对图形的实质没有影响,所以我将其简化为1∶1。
以上这些就是我所制作的程序的理论基础。
下面我来介绍一下我的程序的特点,也可以说是我比较满意的地方。
1. 可以自定ω1和ω2,本程序用组合框提供了1到10 十个数字,用户也可以自己在
组合框中输入其他的数值
2. 可以自定相位差,我同样提供了9个相位差,用户也可以自己输入任意的相位差 3. 本程序提供了动静态两种绘图方式,其中当选用动态绘图方式时,我模拟了一个质
点,可以更加直观的看到李萨如图形的形成过程。
下面具体介绍一下我的编程的过程所遇到的几个难点和解决方法
第一,因为VB没有提供绘制曲线的控件,所以我所遇到的第一个难点是如何绘制出李萨如曲线。一开始我选择了使用PICTURE控件的PSET方法,但是程序的运行效率太低。最后我选用了LINE方法来画图,就是将一条曲线分成上百条直线,然后将这些直线连接起来。具体代码如下:
For i = 0 To 2 * pi * LCM(a, b) / (a * b) Step 0.01 x2 = 9 * Cos(a * (i + 0.01)) y2 = 9 * Cos(b * (i + 0.01) + w)
Picture1.Line (x1, y1)-(x2, y2), RGB(0, 0, 255) x1 = x2
y1 = y2 Next i
第二,为了提高程序的效率,我选择了图形只画一个周期就让他停止,但是李萨如图
形的周期是不确定的,最后我通过计算,求出了李萨如图形的周期公式:T = 2**LCM(ω1,ω2)/ (ω1*ω2),其中LCM(ω1,ω2)表示ω1和ω2的最小公倍数。 第三,为了让图形产生动态的效果,让质点在运动,我用一段延时的语句和反笔手法。
语句如下: Picture1.Circle (x1, y1), 0.5 t = Timer
Do Until Timer - t >= 0.005 m = 3 Loop
Picture1.DrawMode = 6
Picture1.Circle (x1, y1), 0.5, FillColor = RGB(255, 0, 0)
任何的程序都会他的不足和漏洞,尤其像我们这种初学者更是漏洞百出。所以下面
我介绍自己的程序存在的问题
第一, 质点在开始运动时,初始位置的质点没有消失
第二, 李萨如图像不是一个封闭的图形时,当质点在后半个周期往回运动时,会把
前半个周期已画的李萨如图擦掉
对于其他存在的而我没有发现的问题希望老师指正。
总结:制作这个程序,要先对李萨如图进行研究,了解其形成原理,然后再要对VB进
行研究,想方设法把对李萨如图的理解用计算机语言表达出来。这个过程不仅让我对李萨如图有了更深的理解,而且也帮助我更快地掌握VB这门语言,从中还是收获不少的。如果已知一个振动的周期,就可以根据李萨如图求出另一个振动的周期,这是一种比较方便也是比较常用的测定频率的方法。因此,李萨如图有着较为广泛的应用。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo0.com 版权所有 湘ICP备2023021991号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务