In [1]:
import numpy as np
import matplotlib.pyplot as plt
from IPython.display import display,Math
In [2]:
print('Ellipses')
print('Center: (h,k)')
print('Radii: a, b') # horizontal: a, vertical: b
display(Math('\\frac{(y-k)^2}{b^2} + \\frac{(x-h)^2}{a^2} - 1 = 0'))
Ellipses
Center: (h,k)
Radii: a, b
$\displaystyle \frac{(y-k)^2}{b^2} + \frac{(x-h)^2}{a^2} - 1 = 0$
In [3]:
h = 1
k = 2
a = 2
b = 3

axlim = np.max((a,b)) + np.max((abs(h),abs(k)))
x = np.linspace(-axlim,axlim,100)
X,Y = np.meshgrid(x,x)

ellipse = (X-h)**2/a**2 + (Y-k)**2/b**2 - 1

plt.contour(X,Y,ellipse,0)
plt.plot(h,k,'go')

plt.gca().set_aspect('equal')

Exercise

In [4]:
print('Vary k from -4 to +4')
print('Vary a from |-4| to +4')
Vary k from -4 to +4
Vary a from |-4| to +4
In [5]:
n = 16
h = 0
k = np.linspace(-4,4,n)
a = abs(k)
h = 4

x = np.linspace(-8,8,100)
X,Y = np.meshgrid(x,x)

for i in range(0,n):
    F = (X-h)**2/a[i]**2 + (Y-k[i])**2/b**2 - 1
    plt.contour(X,Y,F,0,colors=[[i/n,0,i/n]])
    
plt.axis('off')
plt.gca().set_aspect('equal')
plt.show()