0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

3D球面調和関数を、Python3/matplotlibの3Dスキャタ表示してみる

Posted at

調和関数が、平均値の性質を満たしているか、Python3/matplotlib 3Dスキャタ表示をして試してみる。
平均値の性質を簡単に説明すると、r=1球面上で調和関数の値を積分すると0になる。という事である。
これだと、f(x,y,z)=2 のような調和関数には、当てはまらないので、f(0,0,0)=0の調和関数に限定して考える。

曲座標系の関数はわかりにくので、デカルト座標での関数を考える。

この論文に、デカルト座標の調和関数がリストされている。
http://lucille.sourceforge.net/blog/images/shpoly.pdf

Screen Shot 2021-10-14 at 3.45.55 PM.png

$\sqrt{\frac{3}{4\pi}}$ のような係数は、今回は無視して1とする。
赤の*は、重複しているので省略します。
$y_{0,0}$は、白一色になるので、省略

$y_{3,-2}=xyz$

rotation.gif

GIFアニメーションを生成するコードは、こちら

harmony_animation.py
import math
from mpl_toolkits import mplot3d
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import cm
import matplotlib.animation as animation

def y3_2(x,y,z):
  return x*y*z

fig = plt.figure()
ax = plt.axes(projection='3d')

s = 0.0
c = 0
N = 50
zdata = np.linspace(0,0,2*N*N)
xdata = np.linspace(0,0,2*N*N)
ydata = np.linspace(0,0,2*N*N)
udata = np.linspace(0,0,2*N*N)

for j in range(0,N):
  ps = math.pi*(j+0.5)/N
  w = int(N*math.sin(ps))
  for i in range(-1*w,w):
    th = math.pi*(i+0.5)/w
    z = math.cos(ps)
    x = math.sin(ps)*math.cos(th)
    y = math.sin(ps)*math.sin(th)
    xdata[c] = x
    ydata[c] = y
    zdata[c] = z
    u = y3_2(x,y,z) #replace here!! y53,y63,y65
    udata[c] = u
    c = c+1
    s = s + u

ax.set_aspect('equal')
ax.scatter3D(xdata, ydata, zdata, c=udata, cmap=cm.coolwarm);
#plt.show()
def rotate(angle):
    ax.view_init(azim=angle)

print("Making animation")
rot_animation = animation.FuncAnimation(fig, rotate, frames=np.arange(0, 362, 2), interval=100)
rot_animation.save('rotation.gif', dpi=80, writer='imagemagick')
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?