Единственный путь ваш код может не дать вам NameError, если t
уже определен:
sage: pl5 = plot(f(t),(0,3))
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-36-1f9b723e1faf> in <module>()
----> 1 pl5 = plot(f(t),(Integer(0),Integer(3)))
NameError: name 't' is not defined
Давайте предположим, что t
является выражение. Тогда, так как аргументы оцениваются , прежде чем они прошли, вы на самом деле пытаетесь построить None
, потому что ни одна из ветвей вашей функции не являются истинными для символического выражения:
sage: t = var("t")
sage: print f(t)
None
sage: plot(None,(0,3))
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-44-5b43a830d374> in <module>()
----> 1 plot(None,(Integer(0),Integer(3)))
[...]
TypeError: no way to make fast_float from None
Просто оставьте t
Выключать, если вы хотите построить функцию. Заметьте, что я изменил диапазон от (0,3)
до (0,6
), поэтому мы хотя бы видим что-то интересное.
sage: pl5 = plot(f,(0,6))
sage: pl5.save("pl5.png")
![example picture](https://i.stack.imgur.com/gchP7.png)
стороне: я не знаю, что ваш gp(pi)
должен do-- есть на самом деле не нужно, чтобы получить Pari участие здесь. Просто используйте pi
.
что немогу 'на вашем входе? –
Это означает, что 't' не удовлетворяет ни одному из этих условий. У вас есть резерв по умолчанию в случае, если это произойдет? Если это так, добавьте 'return' в нижней части кода. – Vader
Что должно 'f' вернуть, если' t' равно 'None'? – J0e3gan