Ask Your Question
0

How to create a Matrix with real numbers?

asked 2017-04-24 16:30:12 +0100

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

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted
1

answered 2017-04-24 17:47:19 +0100

ndomes gravatar image

updated 2017-04-24 17:50:03 +0100

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
edit flag offensive delete link more

Comments

Thank you very much.

Selfes gravatar imageSelfes ( 2017-04-24 20:22:14 +0100 )edit
0

answered 2017-04-24 17:49:46 +0100

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
edit flag offensive delete link more

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: 2017-04-24 16:30:12 +0100

Seen: 1,085 times

Last updated: Apr 24 '17