請重覆練習。
%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
import sympy as sym
重覆練習, 先想一個你要畫的函數, 再畫出來。
x = np.linspace(-10, 10, 200)
y = np.sin(x) + 0.2*x
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11345e5c0>]
提醒極座標:
$$\begin{cases} x = r \cos \theta \\ y = r \sin \theta \end{cases}$$記得可愛的 Python 3 可以用 $\theta$ 當變數, 而 Jupyter Notebook 可以用可以用
\theta + TAB 鍵
打出 $\theta$ 來!!
θ = np.linspace(-2*np.pi, 2*np.pi, 200)
r = 3
x = r*np.cos(θ)
y = r*np.sin(θ)
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x113370b00>]
ax = plt.gca()
ax.set_aspect('equal')
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x1134cf470>]
注意, 只改了 R 的定義。
θ = np.linspace(-2*np.pi, 2*np.pi, 200)
r = 1-np.sin(θ)
x = r*np.cos(θ)
y = r*np.sin(θ)
ax = plt.gca()
ax.set_aspect('equal')
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x1101d03c8>]
θ = np.linspace(-2*np.pi, 2*np.pi, 1000)
r = 2 + 0.1*np.sin(25*θ)
x = r*np.cos(θ)
y = r*np.sin(θ)
ax = plt.gca()
ax.set_aspect('equal')
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11b459be0>]
記得有函數就有互動!
from ipywidgets import interact
順便介紹一下, Python 可以設函數的預設值!
θ = np.linspace(-2*np.pi, 2*np.pi, 1000)
def myplot(k=1):
r = 2 + 0.1*np.sin(k*θ)
x = r*np.cos(θ)
y = r*np.sin(θ)
ax = plt.gca()
ax.set_aspect('equal')
plt.plot(x,y)
interact(myplot, k=(1,50))
interactive(children=(IntSlider(value=1, description='k', max=50, min=1), Output()), _dom_classes=('widget-int…
<function __main__.myplot(k=1)>
之前有同學問, 我原本回答的方式不太好...
假設要畫這個分段定義函數
$$f(x) = \begin{cases} x^2 & x<0,\\ 0 & x \geq 0 \end{cases}$$x = np.linspace(-5,5,200)
y = np.piecewise(x, [x<0, x>=0], [lambda x: x**2, 0])
plt.plot(x,y)
[<matplotlib.lines.Line2D at 0x11f764780>]