计算导数和积分

时间:2017-08-28 18:45:54

标签: maple

我们怎样才能获得某种东西的衍生物,然后在像

这样的表达式中使用它

g:= t-> diff(f(t),t);

这是失败的,因为枫不首先采用导数然后应用t,但是应用t的值然后尝试以符号方式区分该值。

要解决这个问题,我通常需要预先计算差异,然后复制并粘贴它。这种方法的问题在于,只要原始函数发生变化,就需要重做所有内容,这可能非常耗时。

有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

使用D运算符,您可以指定"衍生物"操作员fg,未先向f分配任何内容。

您可以随后将不同的运算符分配并重新分配给f,之后可以调用g。在下面的示例中调用g不会导致使用任何符号参数调用f

restart;

g := D(f);

                        g := D(f)

f := x->sin(x)+x^2:

g(x);

                      cos(x) + 2 x

g(2);

                       cos(2) + 4

f := x->tan(x)+x^3:

g(x);

                               2      2
                     1 + tan(x)  + 3 x

g(2);

                                   2
                        13 + tan(2)

另一种方法如下。请注意,使用此方法,每次调用g都会导致Maple在符号本地diff上调用T。如果 - 在分配给f之后 - 你多次调用g那么这将更加昂贵(即使只是为了检查一个memoized结果的开销并使额外的函数调用{{1 }})。此外,您的diff可能是甚至没有设置为非数字参数适当返回的内容,因此调用f可能会有问题。

f(T)

restart; g := proc(t) local T; eval(diff(f(T),T),T=t); end proc: f := x->sin(x)+x^2: g(x); cos(x) + 2 x g(2); cos(2) + 4 f := x->tan(x)+x^3: g(x); 2 2 1 + tan(x) + 3 x g(2); 2 13 + tan(2) 运算符非常有用。您可以查看其帮助页面。