gpt4 book ai didi

math - 圣人数学 : how to combine or expand exponents in a symbolic expression?

转载 作者:行者123 更新时间:2023-12-01 01:16:42 26 4
gpt4 key购买 nike

如何组合或扩展 sage 表达式中的指数?换句话说,我怎么能让 sage 重写来自 (a**b)**c 的表达式至 a**(b*c) ,反之亦然?

示例:

sage: var('x y')
(x, y)
sage: assume(x, 'rational')
sage: assume(y, 'rational')
sage: combine_exponents( (x^2)^y )
x^(2*y)
sage: assume(x > 0)
sage: expand_exponents( x^(1/3*y) )
(x^y)^(1/3)

我已经尝试过的:
sage: b = x^(2*y)
sage: a = (x^2)^y
sage: bool(a == b)
True
sage: a
(x^2)^y
sage: simplify(a)
(x^2)^y
sage: expand(a)
(x^2)^y
sage: b
x^(2*y)
sage: expand(b)
x^(2*y)

更新:
simplify_exp (codelion 的回答)可以从 (a**b)**c 转换至 a**(b*c) ,但反过来不行。是否有可能让圣人也扩展指数?

最佳答案

  • 从 Sage 6.5 开始,转换 a进入 b ,
    使用方法canonicalize_radical .
    sage: a.canonicalize_radical()
    x^(2*y)

    注意四种方法simplify_exp , exp_simplify ,simplify_radical , radical_simplify ,具有相同的效果,
    正在弃用 canonicalize_radical .
    Sage trac ticket #11912 .
  • 不知道有没有内置函数
    转换 b进入 a .

    您可以像这样定义自己的函数:
    def power_step(expr, step=None):
    a, b = SR.var('a'), SR.var('b')
    if str(expr.operator()) == str((a^b).operator()):
    aa, mm = expr.operands()
    if step is None:
    if str(mm.operator()) == str((a*b).operator()):
    bb = mm.operands().pop()
    return (aa^bb)^(mm/bb)
    else:
    return expr
    return (aa^step)^(mm/step)
    else:
    if step is None: return expr
    else: return (expr^step)^(1/step)

    然后,您可以将供电分解为以下步骤:
    sage: x, y = var('x y')
    sage: power_step(x^(2*y),y)
    (x^y)^2
    sage: power_step(x^(2*y),2)
    (x^2)^y

    请注意,如果您不指定步骤,则不会总是选择
    显示的第一个。
    sage: power_step(2^(x*y))
    (2^y)^x
    sage: power_step(x^(2*y))
    (x^2)^y
  • 关于math - 圣人数学 : how to combine or expand exponents in a symbolic expression?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27976980/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com