Мне нужно создать функцию, которая отображает касательную плоскость в 3d-функцию в указанной c точке. Вот то, что нужно принять:
# test case 1
plot_tan_plane(lambda x,y: 3 - x**2 - y**2,1,1)
, и нужно вывести график, подобный следующему:
вот изображение того, как должен выглядеть вывод как
Вот код, который у меня есть, но он дает мне ошибки: из символов импорта sympy, diff
def plot_tan_plane(f,a,b):
g = f
x = y = np.linspace(-5,5,50)
X,Y = np.meshgrid(x,y) # this basically makes all the pairs on coordinates
# Set up axes. There are so many ways to do this.
fig = plt.figure(figsize=(8,8))
ax = plt.subplot(projection='3d')
a = a
b = b
h = 0.1
q = (g(a,b))
s = (g(a+h,b))
u= (g(a,b+h))
v = (s/h)-(q/h)
w = (u/h)-(q/h)
z = (lambda x,y: q + v*(X-a) + w*(Y-b),a,b)
i = lambda x,y: z
j = lambda x,y: g
#do the plotting
ax.plot_surface(X,Y,i);
ax.plot_surface(X,Y,j);
Это ошибка, которую он мне дает:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-96-a24f1f7bed99> in <module>
1 # test case 1
----> 2 plot_tan_plane(lambda x,y: 3 - x**2 - y**2,1,1)
<ipython-input-95-85e008d4abd6> in plot_tan_plane(f, a, b)
33
34 #do the plotting
---> 35 ax.plot_surface(X,Y,i);
36 ax.plot_surface(X,Y,j);
37
/opt/conda/lib/python3.7/site-packages/mpl_toolkits/mplot3d/axes3d.py in plot_surface(self, X, Y, Z, norm, vmin, vmax, lightsource, *args, **kwargs)
1611 had_data = self.has_data()
1612
-> 1613 if Z.ndim != 2:
1614 raise ValueError("Argument Z must be 2-dimensional.")
1615 if np.any(np.isnan(Z)):
AttributeError: 'function' object has no attribute 'ndim'
Большое спасибо за помощь!