我想对函数S(w)进行积分
import sympy as sym
w = sym.Symbol('w')
Spm = 0.95**4/w**5*sym.exp(-5/4*(0.95/w)**4)
S = sym.Piecewise(
(Spm**sym.exp(-1/2*((w-0.95)/(0.07*0.95))**2), w<=0.95),
(Spm**sym.exp(-1/2*((w-0.95)/(0.09*0.95))**2), w>0.95))
S_int = sym.integrate(S, (w, 0.8, 1.0))
看来**sym.exp()
是个问题
如果我把函数简化为下面的函数,那么积分就计算成功了。
S = sym.Piecewise(
(Spm**((0.07*0.95))**2), w<=0.95),
(Spm**((0.09*0.95))**2), w>0.95))
MATLAB使用'ArrayValue'轻松计算积分。
Spm = @(w) 0.95^4./w.^5.*exp(-5/4*(0.95./w).^4);
S = @(w) ...
Spm(w).^exp(-1/2*((w-0.95)/(0.07*0.95)).^2).*(w <= 0.95) + ...
Spm(w).^exp(-1/2*((w-0.95)/(0.09*0.95)).^2).*(w > 0.95);
S_int = integral(S, 0.8, 1.0, 'ArrayValued', true);
Sympy或Numpy中是否有等效功能?
1条答案
按热度按时间6g8kf2rb1#
以下是数值计算积分的可能解决方案: