我需要帮助在 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 教科书上没有显示凹凸不平的球体?
有两个问题:
你需要 .* 而不是 * 在你的 sin(6*t) 和 sin(5*q) 之间,因为你想要每个元素乘法而不是矩阵乘法。
您希望 q 从 0-PI 到 运行 并且 t 从 0-2PI
到 运行
此代码生成您要查找的结果。
[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
我知道函数 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 教科书上没有显示凹凸不平的球体?
有两个问题:
你需要 .* 而不是 * 在你的 sin(6*t) 和 sin(5*q) 之间,因为你想要每个元素乘法而不是矩阵乘法。
您希望 q 从 0-PI 到 运行 并且 t 从 0-2PI
到 运行
此代码生成您要查找的结果。
[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