我需要帮助在 MATLAB 中绘制笛卡尔坐标中的球面方程

I need help graphing a spherical equation in Cartesian coordinates in MATLAB

我知道函数 sph2cart,但我觉得我一定是用错了。在微积分教科书中,我看到以下球面方程:

ρ = 1 + 1/5*sin(6θ)*sin(5Φ)

生成如下所示的内容:

我想在 Matlab 图中重现这个,所以我写了下面的代码

 [q,t] = meshgrid(linspace(0,pi,100),linspace(0,2*pi,100));
 rho = 1+1/5*sin(6*t)*sin(5*q);
 [x,y,z] = sph2cart(t,q,rho);
 surf(x,y,z)
 axis square, axis equal

我得到了下图:

为什么会这样?为什么我的 calc 教科书上没有显示凹凸不平的球体?

有两个问题:

  1. 你需要 .* 而不是 * 在你的 sin(6*t) 和 sin(5*q) 之间,因为你想要每个元素乘法而不是矩阵乘法。

  2. 您希望 q 从 0-PI 到 运行 并且 t 从 0-2PI

  3. 到 运行

此代码生成您要查找的结果。

[q,t] = meshgrid(linspace(0,2*pi,100),linspace(0,pi,100));
rho = 1+(1/5*sin(6*t).*sin(5*q));
[x,y,z] = sph2cart(t,q,rho);
surf(x,y,z)
axis square, axis equal