用python实现程序员表白的心形
程序员文章站
2022-06-18 08:02:04
...
用python实现程序员表白的心形
不管了,先上效果图
函数
心形函数展示
这个函数的定义域x在-3.3^0.5 到3.3^0.5,这个函数中当a的值趋近于无穷大的时候,会呈现出一个填满的心形(不知道谁想出的这个函数,相当厉害)
这个是我在B站上看到别人用Matlab画出来的(有兴趣可以去B站找找视频),但是我想用python实现这个代码
Python实现
import matplotlib.pyplot as plt
import numpy as np
from math import *
a = 0
while(a<=100):
x = np.linspace(-3.3**0.5,3.3**0.5,10000)
y = [((t**2)**(1/3))+0.9*(3.3-t*t)**0.5*sin(a*t*pi) for t in x]
plt.axis('equal') ##设置x轴和y轴等比例
plt.plot(x,y,color='Red') ##画出x和y的图像并将颜色改为红色
plt.show()
a += 1 ##如果想画的更细一点可以让a自增的值小一点,我这里直接取1
Python的Bug
细心的小伙伴可能已经注意到我的代码里实现x^(2/3)分了两步,先将x做了平方然后再开立方根,因为我发现python中负数在开奇数次方根的时候会的到复数,**和pow()都有这个问题,虽然我不知道为什么(看不到python中的源码怎么实现这个算法的),但是根据高中知识一个数开奇数次方根实际是一个奇函数,可以将负号直接带出来运算(小伙伴有兴趣可以看我另外一个文章
https://blog.csdn.net/lovethebamboo/article/details/110329175
),所以我选择先做平方让正数后开立方根,这样算才能算出正确的结果(否则python会报警)