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

问题描述 投票:0回答:1

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

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

如何实现?

symbolic-math sage differentiation
1个回答
0
投票

我不确定您要达到的目标。但是无论如何您的线路

Gamma(a) = diff(a)

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

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

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

如果您确定输入将始终正确,则应https://sagecell.sagemath.org/?z=eJxLSU1T8K10K81L1kjTtOLlUgCCotSS0qI8hTSdlMy0NKAwLxcvV4mCrUJZYpGGUokSkF8I5KUB9ZRk5udpKBUqaWqUAEWh5hRqAgD_FBee&lang=sage&interacts=eJyLjgUAARUAuQ==

def MyFunc(f):
    return f,diff(f)

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

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

© www.soinside.com 2019 - 2024. All rights reserved.