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

SymPy如何使用subs()传入值列表批量计算表达式结果

SymPy表达式批量代入单符号多值的实现方法

subs()方法本身不支持为单个符号传入值列表直接返回批量计算结果,可通过以下两种常用方案实现需求:

  • 方案1:循环遍历取值列表逐个代入
    逻辑简单易读,适合少量取值的场景,代码示例:

    import sympy as sp
    
    L1, L2, T = sp.symbols("L1,L2,T")
    expr = L1 + L2*T
    # 先替换固定常量参数,减少重复计算
    expr_with_const = expr.subs([(L1, 2), (L2, 4)])
    # 待代入的T值列表
    t_list = [1, 2, 3, 4]
    # 逐个代入计算并打印
    for t_val in t_list:
        result = expr_with_const.subs(T, t_val)
        print(f"2+4*{t_val} = {result}")
    

    运行输出与预期完全一致:

    2+4*1 = 6
    2+4*2 = 10
    2+4*3 = 14
    2+4*4 = 18
    
  • 方案2:使用lambdify将表达式转为数值函数批量计算
    该方案计算效率更高,适合需要代入大量取值的场景,代码示例:

    import sympy as sp
    import numpy as np
    
    L1, L2, T = sp.symbols("L1,L2,T")
    expr = L1 + L2*T
    # 转为可直接传入数组计算的数值函数,固定L1、L2的取值
    calc = sp.lambdify(T, expr.subs([(L1, 2), (L2, 4)]), "numpy")
    t_list = [1, 2, 3, 4]
    res_list = calc(t_list)
    # 格式化输出
    for t_val, res in zip(t_list, res_list):
        print(f"2+4*{t_val} = {res}")
    

    运行后输出结果和预期一致。

如果需要计算T为[2,5,7,8]时的结果,只需将代码中t_list的赋值替换为对应列表即可,计算逻辑无需修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:33:32