Vẽ sóng hài hình cầu Python

Sở thích của tôi về sóng hài hình cầu được thúc đẩy, như tôi đã nói trong bài viết trước của mình bởi vì đây là những đối tượng toán học cần thiết để giải quyết nhiều vấn đề, đặc biệt là để phân tích tính dị hướng của nền vi sóng vũ trụ. Trong bài đăng này, tôi sẽ nghiên cứu sóng hài hình cầu là gì và tôi sẽ đưa ra các ví dụ về cách tính toán chúng bằng thư viện Python SciPy, cũng như một loạt các biểu diễn đồ họa tương tự

Bài viết này được viết hoàn toàn bằng IPython Notebook

Nhập khẩu và tài liệu tham khảo

Trong 1]

%matplotlib inline
from __future__ import division
import scipy as sci
import scipy.special as sp
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm, colors

# This IPython magic generates a table with version information
#//github.com/jrjohansson/version_information
%load_ext version_information
%version_information scipy, numpy, matplotlib

Ra[1]

Phiên bản phần mềmPython2. 7. 9 64bit [GCC 4. 4. 7 20120313 [Mũ đỏ 4. 4. 7-1]]IPython3. 1. 0OSLinux 3. 13. 0 55 chung x86_64 với debian jessie sidscipy0. 15. 1numpy1. 9. 2matplotlib1. 4. 3Thứ sáu 19 Tháng sáu 17. 07. 28 2015 CEST

Người giới thiệu

Chương XI. "Great Balls of PDEs" từ sách giáo khoa Evans Harrell y James Herod WWW. Phương pháp tuyến tính của toán ứng dụng

Chương XII từ Peter J. Cuốn sách của Olver Giới thiệu về phương trình vi phân từng phần

Tóm tắt nhanh về định nghĩa và tính chất của sóng hài hình cầu, cùng với một số hình ảnh trong Clem Pryke's Logbook

Nguồn gốc lý thuyết của định nghĩa sóng hài hình cầu

Tách các biến

Chúng tôi dự định tìm nghiệm của phương trình Laplace

$$\nabla^2 u = 0$$

khi nó được thể hiện trong tọa độ hình cầu. Chúng tôi đã thấy trong bài viết trước rằng vấn đề có thể được xây dựng như sau

Là $[\rho, \theta, \phi]$ lần lượt là bán kính, vĩ độ [từ $0$ đến $\pi$] và kinh độ [từ $0$ đến $2 \pi$], Đó là tìm các hàm $u[

$$ \nabla^2 u = \frac{\partial^2 u}{\partial \rho^2} + \frac{2}{\rho} \frac{\partial u}{\partial \rho} +\

Để tìm nghiệm, ta áp dụng phương pháp tách biến, tìm nghiệm hiện là tích của hai hàm, một hàm chỉ phụ thuộc vào $ \rho $ và một hàm chỉ phụ thuộc vào biến góc $ [\theta, \phi

$$u[\rho, \theta, \Phi] = R[\rho] Q[\theta, \phi]$$

Thay thế các đạo hàm tính toán và chia cho $u = RQ$, chúng tôi đến

$$ 0 = \frac{\nabla^2 u}{u} = \frac{R''}{R} + \frac{2}{\rho} \frac{R'}{R} + \frac{

Nơi chúng tôi nhận ra biểu thức trong ngoặc là laplacian hình cầu $\nabla^2_S Q$, theo bài đăng này, đó là. toán tử Laplacian trên một mặt cầu có bán kính đơn vị, do đó chỉ phụ thuộc vào tọa độ $[\theta, \phi]$. Sau đó nhân với $ \rho^2 $ và nhóm các biến ở mỗi vế của phương trình, chúng ta có kết quả

$$ \frac{1}{R[\rho]} \left[ \rho^2 R''[\rho] + 2 \rho R'[\rho] \right] = - \frac{\nabla^2_S

Vì hai phần tử phụ thuộc vào các biến khác nhau nên cả hai phải bằng một hằng số $\mu$

$$ \rho^2 R''[\rho] + 2 \rho R'[\rho] - \mu R[\rho] = 0 $$$$ \nabla^2_S Q[\theta, \phi] +

Bây giờ hãy tập trung vào phương trình thứ hai, đó là một phương trình giá trị riêng $- \nabla^2_S Q = \mu Q$, trong đó $\mu$ là một giá trị riêng của toán tử $-\nabla^2_S$. Phương trình này được gọi là phương trình Helmholtz hình cầu. Các giải pháp mà chúng tôi đang tìm kiếm sau đó là các vectơ riêng của toán tử laplacian hình cầu. Chúng tôi gọi đây là các vectơ riêng $Q[\theta, \phi]$ là sóng hài hình cầu

Giải phương trình Helmholtz

Mở rộng phương trình Helmholtz, chúng ta có thể viết

$$\frac{\partial^2 Q}{\partial \theta^2} + \frac{\cos[\theta]}{\sin[\theta]} \frac{\partial Q}{\partial \theta

Để nghiên cứu nó, ta sẽ áp dụng lại việc tách biến, tìm nghiệm dạng

$$Q[\theta, \phi] = \Theta[\theta] \Phi[\phi] $$

Thay vào, chia cho $Q = \Theta \Phi$ và nhân với $\sin^2[\theta]$ ta được

$$ \frac{1}{\Theta} \left[ \sin^2[\theta] \Theta'' + \sin[\theta] \cos[\theta] \Theta' \right] + \mu \sin

Cả hai số hạng sẽ bằng một hằng số, hãy gọi nó là $\lambda$, để phương trình Helmholtz cầu có thể được chia thành hai phương trình, chẳng hạn như

$$\sin^2[\theta] \Theta'' + \sin[\theta] \cos[\theta] \Theta' + [\mu \sin^2 \theta - \lambda] \Theta = 0$$

Đầu tiên chúng ta hãy nhìn vào phương trình thứ hai. Nếu chúng ta tìm kiếm các giải pháp ở dạng các hàm phức tạp [sẽ đơn giản hóa rất nhiều các biểu thức lượng giác], chúng ta sẽ nhận được các giải pháp sau đây

$$\Phi[\phi] = A e^{i \sqrt\lambda \phi} = A \left[ \cos[\sqrt \lambda \. \phi] + i \sin[\sqrt \lambda \. \phi] \right] $$

Là $A$ một hằng số phức tạp

Nhưng, $\Phi[\phi]$ phải là một hàm tuần hoàn của chu kỳ $2 \pi$, nghĩa là $\Phi[\phi] = \Phi[\phi + 2 \pi]$, và chúng ta có thể thấy rằng . vì vậy khả năng duy nhất mà tính tuần hoàn được đáp ứng là $\sqrt \lambda$ là một giá trị số nguyên $m$, dương hoặc âm. $\lambda = m^2$, và các nghiệm của thành phần phương vị của phương trình Helmholtz sẽ là tích của một hằng số phức bởi

$$\Phi^m[\phi] = e^{i m \phi} $$

Bây giờ chúng ta sẽ thay thế giá trị của $ \lambda $ trong phương trình đầu tiên

$$\sin^2[\theta] \Theta'' + \sin[\theta] \cos[\theta] \Theta' + [\mu \sin^2 \theta - m^2] \Theta = 0$

Và chúng tôi thực hiện thay đổi các biến

$$z = \cos[\theta] \quad , \quad \Theta[\theta] = P[\cos[\theta]] = P[z]$$

Và do đó, các hàm lượng giác của phương trình biến mất, để lại

$$[1-z^2] \frac{d^2 P}{d z^2} - 2z \frac{dP}{dz} + \left[ \mu - \frac{m^2}{1-z

Bây giờ chúng ta hãy xem xét một số tính chất của các nghiệm của phương trình này. ở vị trí đầu tiên, $z = \cos[\theta]$, và vì vậy $-1 \leq z \leq 1$, và hàm $P[z]$ chỉ cần được xác định trong khoảng $[-1 . Mặt khác, $\Theta[\theta]$ phải được xác định trong $\theta = 0$ và trong $\theta = \pi$ vì vậy $P[z]$ phải được giới hạn trong $z=-1$ và

$$. P[-1]. < \infty \quad , \quad. p[1]. < \infty$$

Nếu bây giờ chúng ta giả sử $m$ là số nguyên không âm. $m = 0, 1, 2, \dots$, nó cho rằng [chúng ta sẽ thừa nhận điều đó mà không cần chứng minh]

  • Các giá trị duy nhất của $ \mu $ mà phương trình trên thừa nhận nghiệm không cần thiết [nghĩa là giá trị riêng] có dạng $\mu = l[l+1]$ với $l$ nguyên và $ l \geq. m. $, dẫn đến phương trình sau, được gọi là phương trình vi phân Legendre liên quan
$$[1-z^2] \frac{d^2 P}{d z^2} - 2z \frac{dP}{dz} + \left[ l[l+1] - \frac{m^2}
  • Các nghiệm tương thích với các điều kiện trên được gọi là các hàm Legendre liên kết loại một, với bậc $l$ và bậc $m$, thường được chỉ định bởi $P_l^m[z]$ [chúng còn được gọi là hàm Ferrers]. Ngoài ra còn có các chức năng liên quan thuộc loại thứ hai $Q_l^m[z]$ không cần xem xét ngay bây giờ

Trường hợp đơn giản nhất là trường hợp tương ứng với $m = $0 trong trường hợp này phương trình được gọi là phương trình vi phân Legendre

$$[1-z^2] \frac{d^2 P}{d z^2} - 2z \frac{dP}{dz} + l[l+1] P = 0 $$

Và trong trường hợp này, các hàm Legendre tương ứng có thứ tự $m = $0 trùng với các đa thức Legendre. $P_l^0[z] = P_l[z] \. , \. l=0, 1, \dots$

Quay trở lại các hàm $\Theta[\theta]$, vì $\Theta[\theta] = P[\cos \theta]$ ta thu được các hàm sau đây là nghiệm của thành phần nghiệm của phương trình Helmholtz chỉ phụ thuộc

$$ \mu_l = l[l+1], \quad \Theta_^n [\theta] = P L^m [ \cos \theta] \quad \text{for} \. -l \leq m \leq l$$

sóng hài hình cầu

Bây giờ chúng ta đã sẵn sàng để tìm nghiệm của phương trình Helmholtz hình cầu

$$ \nabla^2_S Q[\theta, \phi] + \mu Q[\theta, \phi] = 0 $$

Nghĩa là, các giá trị riêng và vectơ riêng của toán tử Lagrangian trên mặt cầu. $-\nabla^2_S Q$. Chúng tôi đã tìm kiếm các giải pháp như

$$Q[\theta, \phi] = \Theta[\theta] \Phi[\phi] $$

Và kết hợp các kết quả trên, chúng ta thu được các sóng hài hình cầu $Y_l^m[\theta, \phi]$ [độ $l$, bậc $m$], thường được nhân với một hằng số chuẩn hóa để có được các hàm có chuẩn

$$ \text{Giá trị bản địa. } \mu_l = l[l+1]$$$$ \text{Hàm riêng. } Y_l^m[\theta, \phi] = \sqrt{\frac{2l+1}{4 \pi} \frac{[l-m]. }{[l+m]. }} \;

Tính trực giao của sóng hài hình cầu

Đây là tính chất thú vị nhất của sóng hài hình cầu, nó sẽ cho phép chúng ta thực hiện với chúng sự phát triển theo chuỗi tương tự như chuỗi Fourier. Để có thể nói về tính trực giao, chúng ta cần xác định một tích bên trong trong không gian $\mathsf L^2[\mathbb S^2]$ của các hàm, nói chung với các giá trị phức tạp, có thể tích phân bình phương trên hình cầu đơn vị. Định nghĩa sẽ sử dụng phần tử vi phân góc khối trong tọa độ cầu [hoặc nếu bạn thích, phần tử vi phân diện tích trên một mặt cầu có bán kính đơn vị], được cho bởi $d \Omega = \sin [\theta] \; . Vì vậy, tích bên trong của hai hàm trong $\mathsf L^2[\mathbb S^2]$ được định nghĩa là

$$ \langle f,g \rangle = \int_{\phi=0}^{2 \pi} \int_{\theta=0}^\pi f[\theta, \phi] \overline{g[\theta

Nói cách khác, nó là tích phân của tích của hàm thứ nhất với liên hợp phức của hàm thứ hai, mở rộng cho tất cả các bề mặt của hình cầu

Là các hàm riêng của toán tử vi phân laplacian hình cầu, tự liên kết, các sóng hài hình cầu tương ứng với các giá trị riêng khác nhau [nghĩa là các giá trị khác nhau của bậc $l$, là trực giao, tức là tích trong của chúng bằng không. Nhưng tính chất trực giao còn vượt xa điều đó, theo nghĩa là các sóng hài hình cầu có cùng bậc $l$ nhưng khác bậc $n$ cũng là trực giao. Hơn nữa, do hằng số chuẩn hóa mà chúng ta đã thêm vào định nghĩa của chúng, chúng ta có thể nói về tính trực giao

$$ \langle Y_l^m, Y_{l'}^{m'} \rangle = \delta_{l,l'} \. \delta_{m, m'}$$

Mở rộng đa cực hình cầu

Hệ thống sóng hài hình cầu tạo thành một tập trực giao hoàn chỉnh trong $\mathsf L^2[\mathbb S^2]$, do đó bất kỳ hàm tích phân bình phương vô hướng nào trên hình cầu $f[\theta, \phi]. \mathbb S^2 \longrightarrow \mathbb C$ sẽ chấp nhận khai triển một loạt biểu mẫu

$$f[\theta, \phi] = \sum_{l=0}^\infty \sum_{m=-l}^l a_{l,m} Y^m_ l[\theta, \phi]$$

Chuỗi hội tụ đến hàm theo chuẩn xác định trong $\mathsf L^2[\mathbb S^2]$ bởi tích bên trong. Các hệ số có thể thu được bằng cách nhân bên trong chuỗi với từng hàm $Y_l^m$ và sử dụng thực tế là chúng tạo thành một tập hợp trực giao

$$ a_{l,m} = \langle f, Y_l^m \rangle $$

Các hệ số này thường phức tạp và các mối quan hệ sau đây được đáp ứng

$$ Y_l^{-m} = [-1]^m \overline{Y_l^m} \quad \text{para} \. m>0$$$$ a_{l,-m} = [-1]^m \overline{a_{l, m}} \quad \text{para} \. m>0, \;

Kiểu phát triển này được gọi là mở rộng đa cực và giá trị của $l$ biểu thị mức độ đa cực. Cụ thể, số hạng $a_{0,0}$ ứng với đơn cực, các số hạng $a_{1,-1}, a_{1,0}, a_{1,1}$ ứng với chế độ lưỡng cực,

Sóng hài hình cầu trong Python SciPy

Hàm SciPy tính toán sóng hài hình cầu là. scipy. đặc biệt. sph_harm[m, l, phi, theta]. Lưu ý rằng tôi đã thay đổi ký hiệu góc được sử dụng trong tài liệu của hàm để phù hợp với ký hiệu đã được sử dụng cho đến nay trong các ghi chú này, thay thế $n, \theta, \phi$ bằng $l, \phi, \theta$

Cả phi và theta đều có thể là mảng Numpy

Trong 2]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42

Ra[2]

[0.028428978328405879+0.40088896207789526j]

Hãy xem cách giá trị trên phù hợp với định nghĩa, bao gồm cả hằng số chuẩn hóa. Một mặt, các hàm Legendre liên quan thuộc loại đầu tiên $P_l^m[z]$ có thể được tính bằng scipy. đặc biệt. lpmv[m, l, z]

Trong 3]

z = np.cos[theta]
P42 = sp.lpmv[m,l,z]
P42

Ra[3]

9.0104878375269504

Sau đó, chúng tôi tính hằng số chuẩn hóa

Trong [4]

f = sci.math.factorial
K_norm = np.sqrt[[2*l+1]/[4 * np.pi] * f[l-m]/f[l+m]]
K_norm

Ra[4]

0.044603102903819275

Nếu bây giờ chúng ta so sánh giá trị thu được cho Y42 với giá trị thu được bằng cách áp dụng trực tiếp định nghĩa, chúng ta có thể thấy rằng chúng khớp với nhau

Trong [5]

K_norm * P42* np.exp[m*phi*1j] == Y42

Ra[5]

________số 8

Tính trực giao của sóng hài hình cầu

Chúng tôi sẽ kiểm tra bằng số rằng các sóng hài hình cầu là một họ trực giao. Trước tiên, hãy định nghĩa một hàm tính tích bên trong $\langle f, g \rangle$ của hai hàm $\theta, \phi$, lấy các giá trị phức và được xác định trên $\mathbb S^2$

Trong [6]

def dotprod[f,g]:
    #Scipy does not directly integrates complex functions.
    #You have to break them down into two integrals of the real and imaginary part
    integrand_r = lambda theta, phi: np.real[f[theta, phi] * np.conj[g[theta, phi]] * np.sin[theta]]
    integrand_i = lambda theta, phi: np.imag[f[theta, phi] * np.conj[g[theta, phi]] * np.sin[theta]]
    rr = sci.integrate.dblquad[integrand_r, 0, 2 * np.pi,lambda theta: 0, lambda theta: np.pi][0]
    ri = sci.integrate.dblquad[integrand_i, 0, 2 * np.pi,lambda theta: 0, lambda theta: np.pi][0]
    if np.allclose[rr,0]:
        rr = 0
    if np.allclose[ri,0]:
        ri=0
    return rr + ri*1j

Trong [7]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
0

Ra[7]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
1

Trong [8]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
2

Ra[8]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
3

Biểu diễn đồ họa của sóng hài hình cầu

Bây giờ chúng ta sẽ xây dựng bên dưới một số biểu diễn đồ họa của cùng một điều hòa hình cầu, để nắm bắt một số ý tưởng về hình học của nó. Chúng ta sẽ bắt đầu với một số biểu diễn đồ họa thông thường trong không gian ba chiều. Vì đây là các hàm có giá trị phức tạp, nên chúng tôi sẽ biểu diễn mô-đun trước, sau đó là phần thực

Trong [9]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
4

Chúng tôi muốn tô màu bề mặt tùy thuộc vào giá trị của khoảng cách hướng tâm từ gốc tọa độ, nghĩa là của $. Y^m_ l[\theta, \phi]. $. Vì vậy, màu sẽ được xác định bởi mảng R, trong đó một đối tượng ScalarMappable với các giá trị RGB sẽ được tạo theo hướng dẫn của câu trả lời này trong stackoverflow

Trong [10]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
5

Và sau đó chúng tôi sẽ chỉ đại diện cho phần thực của $Y^m_ l$

Trong [11]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
6

Trong hình trên, các giá trị âm và dương của $\text{Real}[ Y_l^m]$ được hiển thị phân biệt rõ ràng, với các giá trị âm được biểu thị bằng gam màu lam và các giá trị dương có màu lục sang đỏ, tùy thuộc vào các giá trị theo hướng . Tuy nhiên, tôi thích tưởng tượng các sóng hài hình cầu như các trường vô hướng [áp suất, nhiệt độ, v.v. ] được xác định trên hình cầu đơn vị, trong đó chúng nhận các giá trị dương hoặc âm có thể được hiển thị dưới dạng đỉnh hoặc đáy trên bề mặt. Biểu đồ sau đây đi theo hướng này, bằng cách chỉ cần thêm bán kính của bề mặt hình cầu [$R = 1$] vào giá trị của phần thực của sóng hài hình cầu. Mặt khác, phương pháp lấy biểu đồ giống như trước đây

Trong [12]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
7

Tuy nhiên, cốt truyện ưa thích của tôi là biểu diễn hai chiều với phép chiếu Mollweide, có đặc tính bảo toàn tỷ lệ diện tích. Tôi cũng tin rằng nó có thể là một ví dụ thú vị về cách xây dựng "bản đồ nhiệt" của trường vô hướng trên hình cầu bằng cách sử dụng phép chiếu Mollweide

Trong [13]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
8

Trong [14]

#Example to calculate Y_4^2
l = 4
m = 2
theta, phi = 0.6, 0.75    # Some arbitrary values of angles in radians
Y42 = sp.sph_harm[m, l, phi, theta]
Y42
9

Phần tiếp theo là biểu diễn sóng hài hình cầu dưới dạng bản đồ nhiệt của trường với phép chiếu Mollweide. Giá trị $l-m$ cho biết số lượng "dải" nằm ngang hoặc các đường có vĩ độ không đổi trong đó sóng hài hình cầu không có giá trị. Thứ tự $m$ là số vòng tròn bằng 0 đi qua các cực [hãy cẩn thận với số lượng, trong phép chiếu Mollweide phẳng, bạn sẽ chỉ thấy nửa vòng tròn]. Để kiểm tra điều này, bạn có thể xem hình ảnh 3D tương tác rất đẹp tại đây

Chủ Đề