Я не совсем уверен, чего вы пытаетесь достичь. Но, во всяком случае, ваша строка
Gamma(a) = diff(a)
опасна, потому что это недопустимо Python (a
не определено). Происходит следующее: Sage «готовит» его:
sage: preparse('Gamma(a) = diff(a)')
'__tmp__=var("a"); Gamma = symbolic_expression(diff(a)).function(a)'
Итак, вы можете видеть, что a
теперь является символической c переменной, и поэтому она имеет переменную по умолчанию 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)
Это супер обобщенно c, хотя, так это может быть слишком много для ваших целей. Надеюсь, это направит вас в правильном направлении.