# Way to make default output numerical not symbolic?

Is there a way I can set a flag so sage's default output is numerical instead of symbolic? I'm looking to set a flag so I can do something like this:

sage: vector([cos(rd(40)),sin(rd(40))])*60
(60*cos(2/9*pi), 60*sin(2/9*pi))
sage: set numerical=true
sage: vector([cos(rd(40)),sin(rd(40))])*60
(45.9626665871387, 38.5672565811924)


I know that I can use n(generic_varible) or generic_variable.n() but when I'm doing my homework it's very time consuming, because it involves either a lot of switching or a lot of writing.

edit retag close merge delete

I don't think this is possible per se, unless you do something naughty like Integer = RR. Keep in mind that you can also just add a decimal point cos(rd(40.)) and that will do most of what you want, though it's not really an "answer" to your question.

I guess you could hack sage.misc.displayhook to do this..

Sort by » oldest newest most voted

Use RDF ring:

sage: v=vector(RDF,[cos((40)),sin((40))])*60;v
(-40.0162836991, 44.7067896288)
sage: v.norm()
60.0

more

This makes the most sense to me, too (or using decimal point as I point out) but I suppose it isn't a "global switch"...

Wrap with (..).n() at the appropriate stage eg:

(vector([cos(rd(40)),sin(rd(40))])*60).n()
(45.9626665871387, 38.5672565811924)


or:

v=(vector([cos(rd(40)),sin(rd(40))])*60).n();v
(45.9626665871387, 38.5672565811924)


then:

v.norm()
60.0000000000000

more