1

こんにちは、私はPythonを初めて使用し、一連の方程式を処理しようとしています。私のコードは次のとおりです。

from __future__ import division
import scipy.special as sp
from scipy import integrate
import math

Tb = 7.2
Tc = 9.3
t = Tb / Tc
n = 2*10**-6
L = 50*10**-6
W = 80*10**-9
a = 3*10**-2
s1 = W/ (2*n)
y1 = (L+(W/2)) / (2*n)
x0 = 0.015
r0 = 4*x0
s2 = (r0 / n)/1000000
print s2
y0 = (x0 / n)/1000000
def t1(t):
    return  t**-1*sp.kv(0, s2)
def t2(t):
    return t**-1*sp.iv(0, s2)
print t2
Fk2 = (math.pi**-2) * integrate.quad(t1, s1, s2) 
FI2 = (math.pi**-2) * integrate.quad(t2, s1, s2)
print Fk2 , FI2

エラーが発生し続けます

     25 print t2
---> 26 Fk2 = (math.pi**-2) * integrate.quad(t1, s1, s2)
     27 FI2 = (math.pi**-2) * integrate.quad(t2, s1, s2)
     28 print Fk2 , FI2

TypeError: can't multiply sequence by non-int of type 'float'

何をすべきかよくわかりdef t1(t)ません。ラムダ関数に置き換えてみましたが、やはり何もしませんでした。どんな助けでも本当に感謝しています、そして前もって感謝します。

4

3 に答える 3

1

integrate.quad はデフォルトで長さ 2 のタプルを返します。最初のエントリは答えで、2 番目のエントリは答えの推定誤差です。結果をさらに計算に使用するには、試してください。

Fk2 = (math.pi**-2) * integrate.quad(t1, s1, s2)[0]
FI2 = (math.pi**-2) * integrate.quad(t2, s1, s2)[0]

これにより、答えのみが選択され、浮動小数点数が乗算されます。

于 2014-10-03T00:44:49.803 に答える