我想積分從 -1 到 1 的兩個(gè)函數(shù)的x(t)*p1(t)乘積t。目前我編寫了以下代碼:import scipy.integrate as simport numpy as npp1 = lambda t: 1p2 = lambda t: tp3 = lambda t: (3*(t**2)-1)/2x = lambda t: abs(t)integral = s.quad(x*p1, -1, 1)print(integral)但是,我收到以下錯(cuò)誤:TypeError: unsupported operand type(s) for *: 'function' and 'function'是否可以將兩個(gè) lambda 函數(shù)以符號(hào)方式組合起來(lái)進(jìn)行積分?我可以定義一個(gè)函數(shù)xp1 = lambda t: x(t)*p1(t),但由于我必須為所有人執(zhí)行此操作pn,所以這似乎效率很低。有沒(méi)有更干凈的方法來(lái)做到這一點(diǎn)?
1 回答
ABOUTYOU
TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
如果您想找到一個(gè)確定的積分(只是積分結(jié)果值,當(dāng)給出限制時(shí),就像您的情況一樣)您不需要任何符號(hào),事實(shí)上它只會(huì)使您的生活變得復(fù)雜并減慢計(jì)算速度。
為了找到f1()和乘法的定積分f2(),您只需執(zhí)行以下操作:
import scipy.integrate as s
import numpy as np
def f1(t):
return np.abs(t)
def f2(t):
return (3*(t**2)-1)/2
def f(t):
return f1(t) * f2(t)
integral = s.quad(f, -1, 1)
print(integral)
# or, if you like lambda functions ;-)
integral = s.quad(lambda t: f1(t)*f2(t), -1, 1)
print(integral)
我僅使用 f1 和 f2 進(jìn)行演示,因?yàn)槟x了更多實(shí)際嘗試集成的函數(shù)。
添加回答
舉報(bào)
0/150
提交
取消
