【问题标题】:Remove higher order derivatives from Maple expression从 Maple 表达式中删除高阶导数
【发布时间】:2017-03-28 20:37:38
【问题描述】:

有没有一种简单的方法可以在 Maple 表达式中只保持(部分)导数达到某种顺序?例如,假设我把

f(x) := (g(x)+diff(g(x),x))*(h(x)+diff(h(x),x)) 

f' 的完整表达式是

f'=g'h+gh'+2g'h'+gh''+g''h+g''h'+g'h''

如果我只保留一阶导数的条款,我有

f'=g'h+gh'+2g'h'.

Maple 有没有办法先做

diff(f(x),x)

然后通过某个命令删除所有高于 1 的导数(在这种情况下)?

【问题讨论】:

    标签: maple


    【解决方案1】:

    一种解决方案涉及将导数转换为运算符符号。

    f := (g(x)+diff(g(x),x))*(h(x)+diff(h(x),x));
    Df := convert( diff(f, x), D);
    df := eval(Df,D@@2=0);
    convert(df,diff);
    

    这里的关键是,在运算符形式中,很容易获得二阶导数,因为它们是由 D@@2 运算符作用的。如果将该运算符替换为 0 运算符,它会将所有二阶导数项映射为零。如果您想删除更高阶的术语,您必须执行以下操作:

    eval(Df,{seq(D@@i=0, i=2..5)});
    

    如果你想用偏导数来代替。

    f := (g(x, y)+diff(g(x, y), x))*(h(x, y)+diff(h(x, y), x));
    Df := convert(diff(f, x), D);
    df := eval(Df, D[1, 1] = 0);
    convert(df, diff);
    

    在分词的上下文中,微分算子是用一个序列而不是组合来索引的。所以在这里,D[1,2] 将是部分 wrt x,然后是部分 wrt y。

    【讨论】:

    • 谢谢!是否可以将其扩展到偏导数?我是 Maple 的新手,所以如果问题很明显,我很抱歉。
    • 您好!我在 Math SE 上发布了一个问题,详细说明了我正在尝试做什么:math.stackexchange.com/questions/2208893/…
    • 我在这个答案中添加了一些关于部分的注释。希望足以让您入门。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 2014-09-20
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多