inverse of a matrix with Fraction entries

Daniel Fetchinson fetchinson at googlemail.com
Wed Nov 24 10:10:54 EST 2010


>> I guess this is a question to folks with some numpy background (but
>> not necessarily).
>>
>> I'm using fractions.Fraction as entries in a matrix because I need to
>> have very high precision and fractions.Fraction provides infinite
>> precision (as I've learned from advice from this list).
>
> "Infinite" precision only for values that can be expressed as a fraction:
>
>>>> Fraction(2)**Fraction(1, 2)
> 1.4142135623730951
>>>> type(_)
> <type 'float'>

True, but I only need to add, multiply and divide my fractions in
order to end up with the entries in the matrix.

>> Now I need to
>> calculate its inverse. Can numpy help in this regard? Can I tell numpy
>> that the inverse matrix should also have entries in
>> fractions.Fraction? Or numpy can only do floating point calculations?
>
> I tried it, and numpy.linalg.inv() converted the Fraction values to float.
> If you aren't concerned about efficiency it should be easy to do it
> yourself, in pure python.

If there is no other way, that's what I'll try to do.

> You could also ask on the numpy mailing list.
>
>> Probably it doesn't matter but the matrix has all components non-zero
>> and is about a thousand by thousand in size.
>
> Hmm, where did you get that million of exact fractions from?

The million of exact fractions are coming from a recursion relation.
This recursion relation only adds, multiplies and divides numbers so
the end result is always a rational number.

> If some real
> world data is involved the error introduced by the floating point
> calculation may be negligable in comparison with the initial measurement
> uncertainty.

It's a mathematical problem so no uncertainty is present in the
initial values. And even if there was, if there are many orders of
magnitude differences between the entries in the matrix floating point
does not suffice for various things like eigenvalue calculation and
stuff like that.

Cheers,
Daniel


-- 
Psss, psss, put it down! - http://www.cafepress.com/putitdown



More information about the Python-list mailing list