1. 函数公式 ⚓︎

心形函数公式

y=(x2)13+0.9(3.3x2)12sin(nπx)y = \left(x^2\right)^{\frac{1}{3}} + 0.9 \cdot \left(3.3 - x^2\right)^{\frac{1}{2}} \cdot \sin(\mathbf{n} \pi x)

其中,n 是参数,函数图像随着 n 值的变化而变化。函数定义域为:[-1.81,1.81]

2. 图像在线演示 ⚓︎

心形函数图像
y = (x²)^(1/3) + 0.9 · (3.3 - x²)^(1/2) · sin(nπx)
参数 n 值 0.0
n = 0.0

3. Excel 中实现 ⚓︎

3.1 制作步骤 ⚓︎

  1. 变量 x
    1. 新建一个 Excel 表格,在 A1B1 单元格内分别写上 XY
    2. A2 单元格内写上 -1.81(定义域左端点);
    3. 选中 A2 单元格,在 开始 选项卡下找到 编辑填充序列,打开该选项,选择序列产生在 ,步长值填 0.01,终止值填 1.81(定义域右端点);
    4. 这样,就在第 A 列生成了函数所有可能的变量 x 的值。
  1. 变量 y
    1. B2 单元格内写入公式:=(A2^2)^(1/3)+0.9*(3.3-A2^2)^(1/2)*SIN($D$2*PI()*A2),其中,D2 单元格为参数 n,$D$2 为绝对引用(F4键);
    2. 选中 B2 单元格,把鼠标移动到 B2 单元格的右下角,鼠标指针变为黑色十字(填充柄),双击左键,自动向下填充公式,并计算出 A 列对应的 y 值。
1
=(A2^2)^(1/3)+0.9*(3.3-A2^2)^(1/2)*SIN($D$2*PI()*A2)
  1. 创建图形
    1. 选中 A1 单元格,按 Ctrl + Shift + → 键,再按 Ctrl + Shift + ↓ 键,选中第 A 列和第 B 列的所有数据;
    2. 插入 选项卡下找到 图表插入散点图(X、Y)或气泡图带平滑线的散点图,创建心形散点图;
    3. 点击图表中的 X 轴,按 Delete 键删除,点击图表中的 Y 轴,按 Delete 键删除,删除图表标题和图例。
  1. 迭代计算
    1. D2 单元格中输入公式:=D2+0.1,回车;
    2. 选中 D2 单元格,点击 Excel 左上角的 文件 选项卡,选择左下角 更多选项公式
    3. 右侧 计算选项 部分,勾选 启用迭代计算,设置 最多迭代次数1,点击 确定 保存设置;
    4. 按住键盘上的 F9 键(或 Fn + F9 键)不放,心形函数图像开始 跳动 的动画效果。

效果图:

3.2 Excel 宏代码实现运算控制 ⚓︎

  • 打开你的 Excel 文件,点击 Excel 左上角的 文件 选项卡,选择 另存为,保存类型为:Excel启用宏的工作簿(*.xlsm)
  • 点击左上角 文件 选项卡,选择左下角 更多选项自定义功能区,右侧 自定义功能区 勾选 开发工具,点击 确定 保存。

(1)表单控件:按钮 ⚓︎

点击 开发工具,点击 Visual Basic,输入以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Public isLooping As Boolean
Public i As Double

Sub 心形图()
isLooping = Not isLooping
If isLooping Then
i = 0
Do While isLooping And i <= 1000
Range("D2").Value = i / 10
i = i + 1
DoEvents
If i Mod 1 = 0 Then
DoEvents
End If
Loop
isLooping = False
End If
End Sub

插入一个 表单控件:按钮,指定宏为:心形图,点击 确定,将按钮命名为 开关

(2)表单控件:启动开关和连续开关 ⚓︎

点击 开发工具,点击 Visual Basic,输入以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Public isLooping As Boolean
Public i As Double
Public continue As Boolean

Sub 心形图()
isLooping = Not isLooping
If isLooping Then
If Not continue Then
i = 0
End If
Do While isLooping And i <= 1000
Range("D2").Value = i / 10
i = i + 1
DoEvents
If i Mod 1 = 0 Then
DoEvents
End If
Loop
isLooping = False
End If
End Sub

Sub 连续开关()
continue = Not continue
End Sub

插入一个 表单控件:按钮,指定宏为:心形图,点击 确定,将按钮命名为 启动开关,用于控制启停;插入一个 表单控件:按钮,指定宏为:连续开关,点击 确定,将按钮命名为 连续开关,用于控制参数n是否连续。

(3)ActiveX控件:按钮 ⚓︎

插入一个 ActiveX控件:按钮,在 开发工具 选项卡下打开 设计模式,右键刚创建的按钮,选择 查看代码,输入以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Public isLooping As Boolean
Public i As Double

Private Sub CommandButton1_Click()
isLooping = Not isLooping
If isLooping Then
CommandButton1.Caption = "停止"
i = 0
Do While isLooping And i <= 1000
Range("D2").Value = i / 10
i = i + 1
DoEvents
If i Mod 1 = 0 Then
DoEvents
End If
Loop
isLooping = False
CommandButton1.Caption = "开始"
Else
isLooping = False
CommandButton1.Caption = "开始"
End If
End Sub

(4)表单控件:滚动条 ⚓︎

插入一个 表单控件:滚动条,右键滚动条,选择 设置控件格式,在 控制 选项下,设置 最小值:0最大值:100步长:1单元格链接:$D$2

(5)ActiveX 控件:滚动条 ⚓︎

插入一个 ActiveX 控件:滚动条,在 开发工具 选项卡下打开 设计模式,右键刚创建的滚动条,选择 查看代码,输入以下代码:

1
2
3
Private Sub ScrollBar1_Change()
Range("D2") = ScrollBar1.Value / 10
End Sub

4. 文件下载 ⚓︎

点击下载