如何在Sage中的函数中使用微分

我正在尝试创建一个将函数作为输入的函数,该函数返回具有该函数及其派生元素的元组。 在我所有的尝试中,即使该函数是符号函数,该函数的导数也被评估为零或一: 我简化了代码以仅返回其派生代码:

t = var("t")
q = function("q")(t)

print("Expected",diff(q,t))  # return diff(q(t),t) as expected

Gamma(a) = diff(a)
print("Unexpected_v1 ",Gamma(q))  # return 1

Gamma(a) = diff(a,a.arguments()[0]) 
print("Unexpected_v2 ",Gamma(q)) # return 1

Gamma(a,b) = diff(a,b)
print("Unexpected_v3 ",Gamma(q,t)) # return 0

如何实现?

lx463419 回答:如何在Sage中的函数中使用微分

我不确定您要达到的目标。但无论如何,您的台词

Gamma(a) = diff(a)

有点危险,因为这不是合法的Python(未定义a)。发生的事是贤者“准备”了它:

sage: preparse('Gamma(a) = diff(a)')
'__tmp__=var("a"); Gamma = symbolic_expression(diff(a)).function(a)'

因此,您可以看到a现在是符号变量,因此它具有默认变量a,因此派生显然是1,并且您已分配了{{ 1}},以始终返回此值。其他人的行为类似。

如果您确定输入将始终正确,则应Gamma(a)

https://sagecell.sagemath.org/?z=eJxLSU1T8K10K81L1kjTtOLlUgCCotSS0qI8hTSdlMy0NKAwLxcvV4mCrUJZYpGGUokSkF8I5KUB9ZRk5udpKBUqaWqUAEWh5hRqAgD_FBee&lang=sage&interacts=eJyLjgUAARUAuQ==

但是,这是超级通用的,因此对于您的目的而言可能太多了。希望它能为您指明正确的方向。

本文链接:https://www.f2er.com/2651496.html

大家都在问