双曲面绘图

2024-10-01 17:28:46 发布

您现在位置:Python中文网/ 问答频道 /正文

我确实看到了这个帖子: Plotting A Hyperboloid

然而,对于我来说,这个公式是如何翻译成这样的:

x = a*np.cosh(u)*np.cos(v)
y = b*np.cosh(u)*np.sin(v)
z = c*np.sinh(u)

我的等式是:

^{pr2}$

这是在这个链接中找到的等式1:http://arxiv.org/pdf/1211.0980.pdf

我真的想改变a,b,c的值,然后看看表面是如何变化的。 x,y,z的公式是什么?或者我怎么得到它们?在

当我有这样一个等式时:

 z = np.sqrt(b*(c**2 - (np.cosh(u)**2)/a))

我在水面中间发现了一堆南星。;/

谢谢!在


Tags: httppdf链接nparxivsincosplotting
1条回答
网友
1楼 · 发布于 2024-10-01 17:28:46

你提到的两个表达式对双曲线都是有效的,但是笛卡尔表达式通常要容易一些(而且隐式方程中存在符号错误)。对于这种情况,坚持你的等式,正确的形式是

(x**2 + y**2)/a - z**2/b = c

对于圆形双曲面,一个更标准的表达式是

^{pr2}$

要在matplotlib中绘制这些图形,请将网格划分为x和y,然后计算z,如下所示:

from matplotlib import cm
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)

Z = np.sqrt(4.*(X**2 + Y**2)/1. + 1)

xcolors = X - min(X.flat)
xcolors = xcolors/max(xcolors.flat)

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=cm.hot(xcolors),
    linewidth=1)

plt.show()

在这里我用x值着色,因为我认为这给了一个更清晰的图。 enter image description here 或者将+1改为-1,得到两张纸版本的图纸: enter image description here

相关问题 更多 >

    热门问题