3
임 매우 좋지 않다 fsolve 나는 베셀 함수 내부 미지를 포함하는 방정식을 근절해야하고 코드는 다음과 같이 진행됩니다함수 호출의 결과가 부동 소수점 배열이 아닙니다. 파이썬으로
import scipy.special as sp
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve
import math
eff = 50-10j
e = 2.25
w = 4e9*2*np.pi
a = 7.5e-6
c = 3e8
p = 0.0022/100.
L = np.sqrt(np.pi*a**2/p)
lc= 0.05
largo=0.38
ancho=0.34
prof=2./1000.
volm=largo*ancho*prof
volc=np.pi*a**2*lc
volct=volm*p
n=volct/volc
nh=n*1e-4/(largo*ancho)
func = lambda ec : e - (np.pi*a**2/L**2)*(2*ec*(sp.j1((ec**0.5)*w*a/c)/((ec**0.5)*w*(a/c)*sp.j0((ec**0.5)*w*a/c))))/(((((ec**0.5)*w*a/c)**2)*(sp.j1((ec**0.5)*w*a/c))/(((ec**0.5)*w*(a/c)*sp.j0((ec**0.5)*w*a/c))*np.log(L/a)))-1) - eff
# Solver
ec_initial_guess = 0.1
ec_solution = fsolve(func, ec_initial_guess)
print "Solution for ec is = %f" % ec_solution
print "when the value of the expression is %f" % func(ec_solution)
나는 오류 얻을 :
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
TypeError: Cannot cast array data from dtype('complex128') to dtype('float64') according to the rule 'safe'
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-13-a9b1acf35136> in <module>()
40
41 ec_initial_guess = 1
---> 42 ec_solution = fsolve(func, ec_initial_guess)
43
44
/home/feliperossik/anaconda2/lib/python2.7/site-packages/scipy/optimize/minpack.pyc in fsolve(func, x0, args, fprime, full_output, col_deriv, xtol, maxfev, band, epsfcn, factor, diag)
144 'diag': diag}
145
--> 146 res = _root_hybr(func, x0, args, jac=fprime, **options)
147 if full_output:
148 x = res['x']
/home/feliperossik/anaconda2/lib/python2.7/site-packages/scipy/optimize/minpack.pyc in _root_hybr(func, x0, args, jac, col_deriv, xtol, maxfev, band, eps, factor, diag, **unknown_options)
222 maxfev = 200 * (n + 1)
223 retval = _minpack._hybrd(func, x0, args, 1, xtol, maxfev,
--> 224 ml, mu, epsfcn, factor, diag)
225 else:
226 _check_func('fsolve', 'fprime', Dfun, x0, args, n, (n, n))
error: Result from function call is not a proper array of floats.
을 이것은 나의 첫 번째 질문입니다. Im은 eqution 포맷을 유감스럽게 생각합니다. 저는 라텍스에서 쓰는 것처럼 그것을 쓰는 법을 정말로 모릅니다.
도움을 주시면 감사하겠습니다. 미리 감사드립니다!
편집 다음 sp.j1 및 sp.j0는 베셀 fucntions
오, 그럼 복잡한 값을 삽입해야하기 때문에 기능을 변경해야합니다! 추천이 있으십니까? 베셀 함수를 사용해야합니다! 대답 해 주셔서 감사합니다!! –