💟笛卡尔心形曲线💟

Author Avatar
Akun 10月 26,2021

笛卡尔心形曲线

在数学的历史上,有许多相当漂亮的函数相继被人们发现。

其中,笛卡尔的心形曲线作为史上最浪漫的函数之一,首次出现在我的生活中,便差点闪瞎我这双钛合金狗眼。

之后,在发现Matplotlib库的强大作图能力后,作为工科生中为数不多的文科生的——我,决定,绘制出笛卡尔心形曲线。

Matplotlib

Matplotlib 可能是 Python 2D-绘图领域使用最广泛的套件。

它能让使用者很轻松地将数据图形化,并且提供多样化的输出格式。

作图

笛卡尔心形曲线

首先,我们要知道笛卡尔心形曲线的方程式,大概式子如下图。
笛卡尔心形曲线

在查阅了相应资料后,我们便开始作图!

接着我们来导入jar...导包。
(代码中有对应解释)

# 因为需要一些专业的数学表达式,所以我们导入numpy
import numpy as np
# 导入matplotlib包
from matplotlib.pyplot import *

# 主函数
if __name__ == "__main__":
    # 规定了定义域的范围
    t = np.linspace(0, 2 * np.pi, 1000, endpoint=True)
    # 规定了x关于t的函数
    x = 2 * np.sin(t) - np.sin(2 * t)
    # 归定了y关于t的函数
    y = 2 * np.cos(t) - np.cos(2 * t)
    # 画出y关于x的函数的曲线
    plot(x, y, color="red")
    # 显示图片
    show()

运行程序,得图如下。

作图成功!嘿嘿。

众多其它心形曲线

在搜集资料的时候,除了笛卡尔心形曲线之外,我还发现了众多心形曲线的方程。

如下。

  1. 心形公式一,如下。

代码如下。

import numpy as np
from matplotlib.pyplot import *

if __name__ == "__main__":
    x = np.linspace(-4, 4, 1000, endpoint=True)
    y = ((x ** 2) ** (1 / 3) + ((x ** 4) ** (1 / 3) - 4 * (x ** 2) + 4) ** 0.5) / 2
    plot(x3, y3, color="yellow")
    y = ((x ** 2) ** (1 / 3) - ((x ** 4) ** (1 / 3) - 4 * (x ** 2) + 4) ** 0.5) / 2
    plot(x, y, color="yellow")
    show()

运行结果如下(其实是公式有一点bug的,不过不太影响程序,所以也懒得修了,可以看到,下图中心形的两侧并没有严丝合缝)。

  1. 心形公式二,如下。

    代码如下。

    import numpy as np
    from matplotlib.pyplot import *
    
    if __name__ == "__main__":
        t = np.linspace(-np.pi, np.pi, 1000, endpoint=True)
        x = 16 * (np.sin(t) ** 3)
        y = 13 * np.cos(t) - 5 * np.cos(2 * t) - 2 * np.cos(3 * t) - np.cos(4 * t)
        plot(x, y, color="blue")
        show()
    

    运行结果如下图。

  2. 心形公式三,如下。

    代码如下图。

    import numpy as np
    from matplotlib.pyplot import *
    
    if __name__ == "__main__":
        x4 = np.linspace(-4, 4, 1000, endpoint=True)
        y4 = (2 * np.abs(x4) - x4 ** 2) ** 0.5
        plot(x4, y4, color="purple")
        g4 = -2.14 * (2**0.5 - np.abs(x4)**0.5) ** 0.5
        plot(x4, g4, color="purple")
        show()
    

    运行结果如下图(这个公式也报bug,但是~嘿嘿,咱不修,能用就成)。

综上

最后,为大家献上小诗一首。
(好久没写过诗了,纯打油,只图能够博得大家一乐)。

我有一颗赤诚的心,

忠诚肝胆无双。

我有一颗热血的心,

燃眉奋起救急。

我有一颗血红的心,

是非黑白看清。

我有一颗心,

徒然一颗心,

单身狗的心。