2017-10-27 4 views
-1

내가 문제가 float 형의 비 INT에 의해 순서를 증식 할 수 없지만, 내가 할 수있는 정확히 찾지 못했습니다.문제 integrate.nquad 사용 : 형식 오류가 : <code>integrate.nquad.</code></p> <blockquote> <p>I get this error: "TypeError: can't multiply sequence by non-int of type 'float'"</p> </blockquote> <p>내가 어디 선가 문자열을 이해하는 기능을 사용하여

누군가 제가이 일을 도와 주시면 매우 감사하겠습니다. 미리 감사드립니다. nquad 반환 2 the documentation 따르면

from scipy import integrate 
import numpy as np 
def f(D,S): 
     Ka = 0.08 
     C = 500 
     R = 0.05 
    return np.exp(-Ka*C*((R-S)*np.cos(D) *(np.sin(D))**2)) 
Io = 3.58*10**16 
R = 0.05 
I = (Io/(R*np.pi)) * integrate.nquad(f,[[0, R],[0, np.pi]]) 
+0

문자열 문제가 없습니다. 대신 튜플 문제. – Evert

답변

0
from scipy import integrate 
import numpy as np 
def f(D,S): 
    Ka = 0.08 
    C = 500 
    R = 0.05 
    return np.exp(-Ka*C*((R-S)*np.cos(D) *(np.sin(D))**2)) 
Io = 3.58*10**16 
R = 0.05 
I = (Io/(R*np.pi)) * integrate.nquad(f,[[0, R],[0, np.pi]])[0] 

(3 오른쪽 파라미터 설정되어있는 경우) 개수 : 결과 (적산 값)을, 다양한 통합 절대 오차 추정치의 최대 결과 및 선택적으로 추가 정보가 포함 된 사전.

nquad에 의해 반환 된 2 개의 튜플을 (Io/(R*np.pi)) 개로 만들려고합니다. 오류의 원인입니다.

반환 된 튜플의 첫 번째 요소를 가져 와서 (위에서 코드의 마지막 비트로 [0]을 참고하십시오) 원하는 것을 얻게됩니다.