[racket] matrix-solve and approximation errors

From: Jens Axel Søgaard (jensaxel at soegaard.net)
Date: Wed Apr 16 06:19:51 EDT 2014

I forgot to note, that I get the same results as you, so I don't think
the CPU is to blame.

2014-04-16 12:18 GMT+02:00 Jens Axel Søgaard <jensaxel at soegaard.net>:
> Hi Laurent,
>
> I think the underlying problem is that the matrix is *very* close to
> an invertible one:
>
>> (matrix-determinant
>      (matrix [[ 1     0     9/10  1]
>                  [ 0     1     1/10  1]
>                  [ 9/10  1/10 82/100 1]
>                  [ 1     1      1   0]]))
> 0
>
> /Jens Axel
>
>
>
>
> 2014-04-16 12:02 GMT+02:00 Laurent <laurent.orseau at gmail.com>:
>> Forgot to mention that with the true value of n=0.82, this of course returns
>> the correct solution:
>> (let ([n 0.82 #;(+ (* .9 .9)(* .1 .1))])
>>
>>   (matrix-solve
>>    (matrix [[ 1  0 .9 1]
>>             [ 0  1 .1 1]
>>             [.9 .1  n 1]
>>             [ 1  1  1 0]])
>>    (col-matrix [0 0 0 1])))
>> ; -> (array #[#[0.38] #[0.4866666666666667] #[0.13333333333333333] #[-0.5]])
>>
>>
>> On Wed, Apr 16, 2014 at 11:10 AM, Laurent <laurent.orseau at gmail.com> wrote:
>>>
>>> I've just been bitten by a bad case of floating-point error with
>>> `matrix-solve` (and a bad CPU that has some floating-point issues):
>>>
>>> (let ([n 0.8200000000000001 #;(+ (* .9 .9)(* .1 .1))])
>>>   (matrix-solve
>>>    (matrix [[ 1  0 .9 1]
>>>             [ 0  1 .1 1]
>>>             [.9 .1  n 1]
>>>             [ 1  1  1 0]])
>>>    (col-matrix [0 0 0 1])))
>>> ; -> (array #[#[0.0] #[0.5] #[0.0] #[-0.5]])
>>>
>>> But clearly here M×X≠B, as is easily seen on the last row.
>>> I've seen other situations where the approximation leads to an approximate
>>> solution (which is okay of course), but this is the first case I see where
>>> the result is completely off.
>>>
>>> I have no idea if anything can be done about it, though (apart from
>>> throwing my computer through the window and buy a better one).
>>>
>>> Laurent
>>
>>
>>
>> ____________________
>>   Racket Users list:
>>   http://lists.racket-lang.org/users
>>
>
>
>
> --
> --
> Jens Axel Søgaard



-- 
--
Jens Axel Søgaard


Posted on the users mailing list.