【问题标题】:Replace Square-Expression in Maple替换 Maple 中的 Square-Expression
【发布时间】:2017-11-14 17:27:50
【问题描述】:

给定一个枫树表达式

f := (y + 5)^2 + x^2

如何用自定义函数替换所有出现的 square 函数?我想要的结果是

square(y + 5) + square(x)

我尝试了类似的东西

subs({x^2 = square(x)}, f)

但是,这只会替换 x^2 表达式。我当然也可以明确列出 (y + 5) 术语,但我想替换任何出现的 (.)^2 而不明确列出所有内容。

如何在 Maple 中做到这一点?

【问题讨论】:

    标签: symbolic-math maple


    【解决方案1】:

    您可以使用subsindetsapplyrule 来完成此操作。

    expression:=(y-5)^2+3+sin(((z-1/3)^2/(t-(y-s)^2)))+F(f(17+p^2)^2);
    
                                       /         2  \                 
                                       |  /    1\   |                 
                                       |  |z - -|   |    /          2\
                            2          |  \    3/   |    | / 2     \ |
       expression := (y - 5)  + 3 + sin|------------| + F\f\p  + 17/ /
                                       |           2|                 
                                       \t - (y - s) /                 
    
    applyrule(_a::anything^2=square(_a), expression);
    
                               /        /    1\  \                               
                               |  square|z - -|  |                               
                               |        \    3/  |
        square(y - 5) + 3 + sin|-----------------| + F(square(f(square(p) + 17)))
                               \t - square(y - s)/                               
    
    
    subsindets(expression, '`^`'(anything,2), u->square(op(1,u)));
    
                               /        /    1\  \                               
                               |  square|z - -|  |                               
                               |        \    3/  |                               
        square(y - 5) + 3 + sin|-----------------| + F(square(f(square(p) + 17)))
                               \t - square(y - s)/        
    

    【讨论】:

    • 谢谢,这就像一个魅力。还有一个问题,因为在第一次尝试时 applyrule 不起作用,因为我直接使用了 ^ 符号,它被 ² 取代。这不知何故导致枫进入无限循环。当我明确写出 ^ (通过使用复制粘贴)时,它工作得很好。到目前为止,我认为 ² 和 ^2 之间没有区别,但显然有。你也知道这种现象吗?
    • 您似乎在使用 2D 输入模式。如果您想使用applyrule 而不是subsindets,那么在 2D 输入模式下,使用文字插入符号代替排版提升功率。要通过键入(而不是复制和粘贴)来获得它,您需要在插入符号键之前键入反斜杠键。另一种方法是在_a::anything 周围加上圆括号,然后将其提升到权力——排版与否。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-31
    • 2015-12-06
    • 2023-01-18
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    相关资源
    最近更新 更多