VBA编程实例----绘制李萨茹图形

本文介绍如何使用VBA在PowerPoint中编程绘制李萨茹图形,通过改变周期实现动态演示,涉及控件使用、数学公式及代码实现。

VBA编程

VBA编程实例----绘制李萨茹图形

 

      学过编程的朋友一定编写过绘制图形的程序,函数曲线、杨辉三角形、金刚石、李萨茹图形等等。
      数学老师会遇到很多关于数学图形的问题。有些图形用VBA在PPT中绘制,不仅可以绘制图形而且还可以演示绘笔的运动轨迹,效果极佳。以下示例通过绘制“李萨茹图形”说明在PPT中通过VBA编程完成绘制函数曲线的方法。

      李萨茹曲线是在X轴方向和Y轴方向振幅不变,但周期不同的二维谐振子运动的轨迹。数学表达式如下:

      X=r1*sin(a*th)

      Y=r2*sin(b*th)                       0≤th≤2π
     

      演示效果:

 

### 绘制李萨如图形的方法 在MATLAB中绘制李萨如图形可以通过定义两个方向(水平和垂直)的振动参数来实现。这些参数包括振幅、频率和初相位。以下是详细的说明和代码示例。 #### 参数设置 需要设定以下六个参数: - 水平振动振幅 \( A_1 \) - 水平振动频率 \( w_1 \) - 水平振动初相位 \( \phi_1 \)(以弧度为单位) - 竖直振动振幅 \( A_2 \) - 竖直振动频率 \( w_2 \) - 竖直振动初相位 \( \phi_2 \)(以弧度为单位) 通过输入对话框让用户输入这些参数,或者直接在代码中定义它们[^3]。 #### 时间向量 为了生成李萨如图形,需要创建一个时间向量 \( t \),其范围应覆盖两个振动周期的最小公倍数。这可以通过以下公式计算: \[ t = \text{linspace}(0, \frac{2\pi}{w_1} \times \frac{2\pi}{w_2}, 10000) \] 这里选择 10000 个点以确保图形平滑。 #### 计算坐标 根据振动方程计算 \( x \) 和 \( y \) 的值: \[ x = A_1 \cdot \cos(w_1 \cdot t + \phi_1) \] \[ y = A_2 \cdot \cos(w_2 \cdot t + \phi_2) \] 然后使用 `plot` 函数绘制 \( x \) 和 \( y \) 的关系图。 #### 示例代码 以下是完整的 MATLAB 代码示例: ```matlab function lissajousFigures() % 李萨如图形 clear; clc; global A1 w1 phi1 A2 w2 phi2; options = {'水平振动振幅A1', '水平振动频率w1', '水平振动初相位phi1', ... '竖直振动振幅A2', '竖直振动频率w2', '竖直振动初相位phi2'}; topic = '设置'; lines = 1; def = {'1', '1', '0', '1', '1', '0'}; h = inputdlg(options, topic, lines, def); A1 = eval(h{1}); w1 = eval(h{2}); phi1 = eval(h{3}) * pi / 180; A2 = eval(h{4}); w2 = eval(h{5}); phi2 = eval(h{6}) * pi / 180; %*************************************************************** t = linspace(0, 2*pi/w1 * 2*pi/w2, 10000); % 两个振动周期的公倍数 x = A1 * cos(w1 * t + phi1); % x方向的振动 y = A2 * cos(w2 * t + phi2); % y方向的振动 plot(x, y); xlabel('x'); ylabel('y'); title('李萨如图形'); tuzhu = ['w1:w2=', h{2}, ':', h{5}]; text(-2, 2, tuzhu); T1 = num2str(1/w1); T2 = num2str(1/w2); text(1, 2, ['T1:T2=', T1, ':', T2]); % 图形显示范围 axis([-A1-2 A1+2 -A2-2 A2+2]); end ``` #### 图形注释 - 使用 `xlabel` 和 `ylabel` 添加坐标轴标签。 - 使用 `title` 添加图形标题。 - 使用 `text` 在图形上添加频率比和周期比的信息[^3]。 ---
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值