I have a matrix with a symbolic variable t
.
If I first substitute t to 0, then I have a valid (right) kernel: a vector space with basis [1,0]
If I first compute the (right) kernel, I have a vector space with basis [1, - (cos(t) - 1)/sin(t)]
.
So, If I evaluate the basis at t=0
, I have a divide by zero ValueError.
How could it be? Is there not a way to have right_kernel
to return a vector space with basis [sin(t), - (cos(t) - 1)]
, so that I would avoid this disagreement?
var('t')
P = matrix([[cos(t) - 1 , sin(t)],[sin(t), -cos(t) - 1]])
P.right_kernel()
# Vectorspace with basis [1,0]
P(t=0).right_kernel()
# Vectorspace with basis [1, - (cos(t) - 1)/sin(t)]
P.right_kernel()
# raise a ValueError: power::eval(): division by zero
P.right_kernel().matrix()[0](t=0)
Also, if I substitute the matrix basis at t=2
I obtained correctly P.right_kernel().matrix()(t=2) # --> [1 -(cos(2) - 1)/sin(2)]
But if I substitute at t=0
P.right_kernel().matrix()(t=0) # --> [1 -(cos(t) - 1)/sin(t)]
(without any substitution or ValueError "divide by zero" as I would have expected)
Do I miss something obvious?