2013-05-27 2 views
-2

I 함께 일하고 식파이썬 : 플로트 인수 제 1 종 베셀 함수 플로팅

$$ E = M_e + \ sum_ {N = 1}^N \의 FRAC {2} {n은 $$

여기서 $ \ mathcal {J} _n (x) $는 첫 번째 종류의 n 번째 베셀 함수입니다.

테스트로서 나는 처음 6 개의 베셀 기능과 모든 것이 올바르게 작동 하는지를 테스트했습니다. $ n * e $의 주장을 입력하면 그 음모는 내가 예상했던 것과 다릅니다.

import numpy as np 
import pylab as py 
import scipy.special as sp 

x = np.linspace(0, 15, 500000) 

for v in range(0, 6): 
    py.plot(x, sp.jv(v, x)) 

py.xlim((0, 15)) 
py.ylim((-0.5, 1.1)) 
py.legend(('$\mathcal{J}_0(x)$', '$\mathcal{J}_1(x)$', '$\mathcal{J}_2(x)$', 
      '$\mathcal{J}_3(x)$', '$\mathcal{J}_4(x)$', '$\mathcal{J}_5(x)$'), 
      loc = 0) 
py.xlabel('$x$') 
py.ylabel('$\mathcal{J}_n(x)$') 
#py.title('Plots of the first six Bessel Functions')         
py.grid(True) 
#py.savefig('besseln0to6.eps', format = 'eps')          
py.show() 

e = 0.99 


def E(M): 
    return (M + sum(2.0/n * sp.jv(n * e, M) * np.sin(n * M) 
        for n in range(1, 3, 1))) 

M = np.linspace(0, 2 * np.pi, 500000) 

fig2 = py.figure() 
ax2 = fig2.add_subplot(111, aspect = 'equal') 
ax2.plot(E(M), M, 'b') 


def E2(M): 
    return (M + sum(2.0/n * sp.jv(n * e, M) * np.sin(n * M) 
        for n in range(1, 11, 1))) 


ax2.plot(E2(M), M, 'r') 
py.xlim((0, 2 * np.pi)) 
py.ylim((0, 2 * np.pi)) 
py.xlabel('Eccentric anomaly, $E$') 
py.ylabel('Mean anomaly, $M_e$') 
py.show() 

enter image description here

이 플롯은 순서이어야하는 반면, 문제가 베셀 함수 sp.jv(n * e, M)의 사용이다의 N = 10

enter image description here

답변

2

같은 인자보고되어있다. 그 결과 올바른 플롯을 생성하는 sp.jv(n , n * e)이됩니다.