今天在微博上看到了一個動態的心形波浪,感覺挺有意思了。然後在網上查了查,瞭解到了笛卡爾心形函數,及其美麗的童話故事,所以打算用python畫一畫,玩一下。
下面這個是我在微博上看到的心形波浪。
首先
import numpy as np
from matplotlib import pyplot as plt
import math
pi = math.pi
然後
x = np.linspace(-3.3**0.5, 3.3**0.5, 6001).reshape(-1,1)
y = (x**2)**(1/3) + 0.9*np.sqrt(3.3 - x**2)*np.sin(40*pi*x)
plt.plot(x,y,color = 'r')
plt.xlim(-3,3)
# plt.savefig('心形波浪')
plt.show()
顯示
下面這個是笛卡爾心形函數
X = np.linspace(0, 2*pi, 500)
x = 2 * np.sin(X) - np.sin(2 * X)
y = 2 * np.cos(X) - np.cos(2 * X)
plt.plot(x, y,color = 'r')
plt.xlim(-5,5)
# plt.savefig('笛卡爾心形函數')
plt.show()
顯示(相比於心,感覺更像馬蹄哈哈)
上面這兩個都不是太理想,又查了查,找到了下面兩個,更好看一些。
x = np.linspace(-2, 2, 401)
plt.plot(x, np.sqrt(1-(np.abs(x)-1)*(np.abs(x)-1)), color = 'r')
plt.plot(x, np.arccos(1-np.abs(x))-pi, color = 'r')
plt.xlim(-3,3)
# plt.savefig('兩段式心形函數')
plt.show()
X=np.linspace(-6,6,1201)
x=16*(np.sin(X))**3
y=13*np.cos(X)-5*np.cos(2*X)-2*np.cos(3*X)-np.cos(4*X)
plt.plot(x, y, color = 'r')
plt.xlim(-22,22)
# plt.savefig('心形函數')
plt.show()
我覺得最後這個最好看了
還有幾個我不會畫,等哪天會了再更新。