Ticket #2857 (closed enhancement: fixed)
[with patch; positive review] numerical_approx for matrices
| Reported by: | roed | Owned by: | was |
|---|---|---|---|
| Priority: | major | Milestone: | sage-3.0 |
| Component: | linear algebra | Keywords: | |
| Cc: | Work issues: | ||
| Report Upstream: | Reviewers: | ||
| Authors: | Merged in: | ||
| Dependencies: | Stopgaps: |
Description (last modified by mabshoff) (diff)
I'm running into problems with coercing to complexes or reals in matrices:
sage: d = matrix([[3, 0],[0,sqrt(2)]]) sage: b = matrix([[1, -1], [2, 2]]) sage: e = b * d * b.inverse(); e [ 1/sqrt(2) + 3/2 3/4 - 1/(2*sqrt(2))] [ 3 - sqrt(2) 1/sqrt(2) + 3/2]
and when I try to run n() on the matrix e, I get:
sage: e.n() # or n(e) [snip] <type 'exceptions.TypeError'>: unable to coerce to a ComplexNumber
If you take a look at the source code for n(), you'll see that the first thing that it does is to try calling numerical_approx(prec) on the object, and then tries coercing to real or complex fields. So the solution is to write a method numerical_approx(prec) in the matrix base class that tries to numerically approximate the entries and make a new matrix out of them.
Attachments
Change History
comment:1 Changed 5 years ago by dfdeshom
- Summary changed from numerical_approx for matrices to [with patch; needs review] numerical_approx for matrices
Patch attached. The functionality was already there (in change_ring() and this wrapper around it works fairly well.
Note: See
TracTickets for help on using
tickets.

