Ask Your Question
0

How to create a Matrix with real numbers?

asked 8 years ago

Selfes gravatar image

I try to create a matrix with real number. When I try to create one, I get a TypeError message

Example:

sage: Z = matrix(2,2)
sage: Z[0,0] = sqrt(2)
--------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-29-94541bcbfa2b> in <module>()
----> 1 Z[Integer(0),Integer(0)] = sqrt(Integer(2))

sage/matrix/matrix0.pyx in sage.matrix.matrix0.Matrix.__setitem__ (/build/sagemath/src/sage-
7.6/src/src/build/cythonized/sage/matrix/matrix0.c:8316)()

sage/matrix/matrix0.pyx in sage.matrix.matrix0.Matrix._coerce_element (/build/sagemath/src/sage-
7.6/src/src/build/cythonized/sage/matrix/matrix0.c:9795)()

sage/structure/parent.pyx in sage.structure.parent.Parent.__call__ (/build/sagemath/src/sage-
7.6/src/src/build/cythonized/sage/structure/parent.c:9844)()

sage/structure/coerce_maps.pyx in sage.structure.coerce_maps.NamedConvertMap._call_ 
(/build/sagemath/src/sage-7.6/src/src/build/cythonized/sage/structure/coerce_maps.c:6402)()

sage/symbolic/expression.pyx in sage.symbolic.expression.Expression._integer_ (/build/sagemath/src/sage-
7.6/src/src/build/cythonized/sage/symbolic/expression.cpp:8607)()

TypeError: unable to convert sqrt(2) to an integer

Since I couldn't really find a way to create one in the documentation (at least I didn't find one), I would like to ask, if there is a easy solution to this.

Thank you very much

Preview: (hide)

2 Answers

Sort by » oldest newest most voted
1

answered 8 years ago

ndomes gravatar image

updated 8 years ago

sage: Z = matrix(2,2)
sage: print Z.parent()

Output:

Full MatrixSpace of 2 by 2 dense matrices over Integer Ring

That means your matrix can contain only Integers. What you want is a matrix over the Symbolic Ring:

sage: Z = matrix(SR,2,2)
sage: print Z.parent()
sage: Z[0,0] = sqrt(5)
sage: print Z

Alternatively a matrix over a Real Field:

sage: Z = matrix(RR,2,2)
sage: print Z.parent()
sage: Z[0,0] = sqrt(5)
sage: print Z
Preview: (hide)
link

Comments

Thank you very much.

Selfes gravatar imageSelfes ( 8 years ago )
0

answered 8 years ago

kcrisman gravatar image

Alternately, you could make the matrix and Sage will "guess" the answer. See here:

L = [[sqrt(2),3],[4,log(2)]]
M = matrix(L)
M
Preview: (hide)
link

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 8 years ago

Seen: 1,226 times

Last updated: Apr 24 '17