Yesterday I received this email (in french):
Salut, avec Thomas on a une question bête: K.<x>=NumberField(x*x-x-1) J'aimerais multiplier une matrice avec des coefficients en x par un vecteur contenant des variables a et b. Il dit "unsupported operand parent for *, Matrix over number field, vector over symbolic ring" Est ce grave ?
Here is my answer. Indeed, in Sage, symbolic variables can't multiply with elements in an Number Field in x:
sage:x=var('x')sage:K.<x>=NumberField(x*x-x-1)sage:a=var('a')sage:a*xTraceback(mostrecentcalllast)...TypeError:unsupportedoperandparent(s)for'*':'Symbolic Ring'and'Number Field in x with defining polynomial x^2 - x - 1'
But, we can define a polynomial ring with variables in a,b and coefficients in the NumberField. Then, we are able to multiply a with x:
sage:x=var('x')sage:K.<x>=NumberField(x*x-x-1)sage:KNumberFieldinxwithdefiningpolynomialx^2-x-1sage:R.<a,b>=K['a','b']sage:RMultivariatePolynomialRingina,boverNumberFieldinxwithdefiningpolynomialx^2-x-1sage:a*x(x)*a
With two square brackets, we obtain powers series:
sage:R.<a,b>=K[['a','b']]sage:RMultivariatePowerSeriesRingina,boverNumberFieldinxwithdefiningpolynomialx^2-x-1sage:a*x*b(x)*a*b
It works with matrices:
sage:MS=MatrixSpace(R,2,2)sage:MSFullMatrixSpaceof2by2densematricesoverMultivariatePowerSeriesRingina,boverNumberFieldinxwithdefiningpolynomialx^2-x-1sage:MS([0,a,b,x])[0a][b(x)]sage:m1=MS([0,a,b,x])sage:m2=MS([0,a+x,b*b+x,x*x])sage:m1+m2*m1[(x)*b+a*b(x+1)+(x+1)*a][(x+2)*b(3*x+1)+(x)*a+a*b^2]