First time here? Check out the FAQ!

Ask Your Question
0

How to assign matrix (vector) value to variable

asked 11 years ago

chenming gravatar image

when I tried to assign a matrix or a vector to variables, something wrong happens:

sage: sin([1,2,3,4]).n()
Traceback (click to the left of this block for traceback)
...
TypeError: cannot coerce arguments: no canonical coercion from <type
'list'> to Symbolic Ring

what I want to achieve is that the out put gives a vector that equals to [sin(1),sin(2),sin(3),sin(4)].

Thanks in advance!

Preview: (hide)

1 Answer

Sort by » oldest newest most voted
2

answered 11 years ago

kcrisman gravatar image

In programs like Numpy or R, this would be very reasonable behavior to expect. Those are data analysis tools.

R:

> sin(c(1,2,3,4))
[1]  0.8414710  0.9092974  0.1411200 -0.7568025

Numpy:

sage: import numpy as np
sage: sin(np.array([1,2,3,4]))
array([ 0.84147098,  0.90929743,  0.14112001, -0.7568025 ])

Sage is mathematical, however. So you will have to explicitly apply the function to all entries. Python makes this easy using list comprehensions or the map function.

sage: [sin(l).n() for l in [1,2,3,4]]
[0.841470984807897, 0.909297426825682, 0.141120008059867, -0.756802495307928]
sage: map(sin,[1,2,3,4])
[sin(1), sin(2), sin(3), sin(4)]
sage: map( lambda x: sin(x).n(), [1,2,3,4])
[0.841470984807897, 0.909297426825682, 0.141120008059867, -0.756802495307928]
Preview: (hide)
link

Comments

Thanks! this does the trick for me!

chenming gravatar imagechenming ( 11 years ago )

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: 11 years ago

Seen: 909 times

Last updated: Oct 08 '13