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

Maple转Sage代码疑问:coeff、series、assign的等效实现

Maple到Sage转换:coeff、series、assign函数的等效实现

1. coeff() 提取系数

Maple的coeff(expr, var, n)用于提取表达式expr中变量var的n次项系数,Sage中直接调用表达式的coefficient()方法:

# Maple: coeff(x^3 + 2*x^2 + 5, x, 2);
expr = x^3 + 2*x^2 + 5
coeff_val = expr.coefficient(x, 2)  # 结果为2

如果是多项式对象,也可以用下标语法快速获取:expr[x^2]

2. series() 级数展开

Maple的series(expr, var=a, n)用于生成var在a点的n阶泰勒级数,Sage中对应series()方法,参数逻辑基本一致:

# Maple: series(sin(x), x=0, 5);
series_result = sin(x).series(x=0, 5)  # 输出 x - 1/6*x^3 + Order(x^5)
# 若要移除大O项,转为多项式:
poly_result = series_result.removeO()

注意:Sage的n参数指定的是展开到的项数(含常数项),和Maple的阶数定义一致,无需额外调整。

3. assign() 变量赋值

Maple的assign()用于将等式或赋值表达式生效,Sage中直接用Python原生赋值语法即可,更直观:

  • 单个变量赋值:
    # Maple: assign(a=3);
    a = 3
    
  • 从等式表达式赋值:
    # Maple: eq := y = x^2; assign(eq);
    eq = y == x^2
    y = eq.rhs()  # 直接提取等式右侧赋值给y
    

如果需要批量赋值,可借助字典和globals().update(),但日常场景下推荐直接用原生赋值。

关于循环中的IndexError

取消注释循环代码后触发索引错误,大概率是因为直接访问了级数展开结果的索引(带Order()项的级数不是可索引的序列)。建议先调用.removeO()将级数转为多项式,再按索引访问各项;同时检查循环的索引范围是否和展开的项数匹配,避免越界。

内容的提问来源于stack exchange,提问作者Lisa De Jonghe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 04:40:25