You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中结合τ=x/v条件数值求解含Cᵢ的积分问题

解决Python中带τ=x/v条件的积分计算问题

方法1:SymPy中替换τ变量

核心是将τ=x/v的表达式直接代入积分,同时调整对应逻辑:

import numpy as np
import scipy as sp
import sympy as smp
smp.init_printing(True)

# 定义符号与函数
C_i = smp.Function('C_i')
t, x, v = smp.symbols('t, x, v', positive=True)
tau = x / v  # 直接定义τ=x/v

# 原积分替换τ表达式,同时注意积分上下限对应关系:τ∈[0,t]等价于x∈[0,v*t]
# 做变量替换:τ=x/v → dτ=dx/v,积分转为对x的计算
m2_sub = smp.Integral((C_i(t - x/v))**2 / v, (x, 0, v*t))

# 若C_i是常数(比如你用的0.666666≈2/3),直接代入计算
C_i_const = 2/3
m2_sub_const = smp.Integral((C_i_const)**2 / v, (x, 0, v*t))
m2_result = m2_sub_const.doit().simplify()
print(m2_result)  # 输出结果为(4*t)/9

# 转为可计算数值的函数
fm2_1 = smp.lambdify((x, v, t), m2_result, 'scipy')
t_arr = np.arange(0,1000,1)
# 示例计算:x=10, v=2, t=50
print(fm2_1(10, 2, 50))

方法2:SciPy数值积分(适配复杂C_i函数)

如果C_i是无法符号积分的复杂函数,直接用SciPy的数值积分工具:

import numpy as np
from scipy.integrate import quad

# 定义C_i函数,示例用常数2/3
def C_i(e):
    return 2/3

def compute_m2(x, v, t):
    # 实现变量替换后的积分逻辑:∫₀^(v*t) [C_i(t - x/v)]² / v dx
    integrand = lambda x_val: (C_i(t - x_val/v))**2 / v
    result, _ = quad(integrand, 0, v*t)
    return result

# 批量计算示例
t_arr = np.arange(0,1000,1)
results = [compute_m2(10, 2, t) for t in t_arr]
print(results[:5])

关键提示

你之前的代码仅注释了τ=x/v,但未实际代入积分逻辑。核心就是把τ的表达式替换到被积函数中,同时根据变量替换规则调整积分变量和上下限;若C_i不是常数,只需修改对应函数定义即可兼容两种方法。

内容的提问来源于stack exchange,提问作者Tulio Soto

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 06:09:24