我们怎样才能获得某种东西的衍生物,然后在像
这样的表达式中使用它g:= t-> diff(f(t),t);
这是失败的,因为枫不首先采用导数然后应用t,但是应用t的值然后尝试以符号方式区分该值。
要解决这个问题,我通常需要预先计算差异,然后复制并粘贴它。这种方法的问题在于,只要原始函数发生变化,就需要重做所有内容,这可能非常耗时。
有更好的方法吗?
答案 0 :(得分:0)
使用D
运算符,您可以指定"衍生物"操作员f
至g
,未先向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)
运算符非常有用。您可以查看其帮助页面。