commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sébastien Brisard <sebastien.bris...@m4x.org>
Subject Re: [math] use the more general super-type RealMatrix in place of Array2DRowRealMatrix in package ode?
Date Fri, 09 Sep 2011 07:37:29 GMT
OK, thank you Luc. We are still doing some refactoring in the linear
package. If this induces compilation of the ode package, I'll let you
know.
Sébastien

2011/9/9 Luc Maisonobe <Luc.Maisonobe@free.fr>:
> Le 09/09/2011 04:05, Sébastien Brisard a écrit :
>>
>> Sorry Ted, I was not very clear in my explanations.
>> solve does return a RealMatrix. Internally, it builds BlockRealMatrix,
>> though.
>> The issue is that Luc needs the underlying double[][] array in this
>> ODE application.
>
> Yes, this is exactly the point.
> In fact, this is also internal code user never sees. the matrices here
> correspond to an internal state that is changed a very large number of time.
>
>> This you could easily get if the returned matrix were
>> a Array2DRowRealMatrix, and you could have something along the lines
>> {code}
>> RealMatrix x = decomposition.getSolver().solve(new
>> Array2DRowRealMatrix(b, false));
>> if (x instanceof Array2DRowRealMatrix){
>>     return x.getDataRef();
>> } else {
>>     return new Array2DRowRealMatrix(x.getData(), false);
>> }
>> {code}
>> but this hack is of no use here, since it turns out that the
>> decomposition solver being used here *always* returns a
>> BlockRealMatrix (as an Array2DRealMatrix). So basically, deep copy of
>> x through x.getData() will *always* occur. That's what is worrying me.
>
> Don't worry. As I wrote in the comment on this issue, this class is under
> scrutiny for other changes due to other issues. I don't like either being
> forced to use an Array2DRowRealMatrix. In fact I already tried to remove
> them some months ago but failed, I had to go back to this signature. I will
> make another attempt. As I may well change completely the way the internal
> state is updated, I hope this will naturally simplify things.
>
> For now, just leave the multi step integrators classes alone (all classes
> with Adams, Nordsieck and Multistep in their names, as well as BDF when it
> will be committed later on), you would waste your time on them.
>
> Luc
>
>> I hope I do make my point, now.
>> Sébastien
>>
>> 2011/9/9 Ted Dunning<ted.dunning@gmail.com>:
>>>
>>> Why doesn't solve just return a RealMatrix?  Why does it insist on
>>> returning
>>> an Array2DRowRealMatrix?
>>>
>>> Does the user really care?
>>>
>>> 2011/9/8 Sébastien Brisard<sebastien.brisard@m4x.org>
>>>
>>>> Hi Luc,
>>>> thanks for your detailed explanations attached to the MATH-659. I'm
>>>> worried about the changes I have applied to the code, now. Here is
>>>> what I've done. I've replaced the following line
>>>> {code}
>>>> return new Array2DRowRealMatrix(decomposition.getSolver().solve(b),
>>>> false);
>>>> {code}
>>>> with
>>>> {code}
>>>> RealMatrix x = decomposition.getSolver().solve(new
>>>> Array2DRowRealMatrix(b, false));
>>>> return new Array2DRowRealMatrix(x.getData(), false);
>>>> {code}
>>>>
>>>> decomposition is in fact an instance of QRDecompositionImpl.Solver,
>>>> whose method solve(RealMatrix) returns a BlockRealMatrix, not an
>>>> Array2DRowRealMatrix, hence the ugly last line. This code seems to be
>>>> correct (unit tests still pass), but I'm worried about the efficiency,
>>>> especially if initializeHighOrderDerivatives is called very often.
>>>> What do you think should be done?
>>>>
>>>> Best regards,
>>>> Sébastien
>>>>
>>>> ---------------------------------------------------------------------
>>>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>>>> For additional commands, e-mail: dev-help@commons.apache.org
>>>>
>>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
>> For additional commands, e-mail: dev-help@commons.apache.org
>>
>>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
> For additional commands, e-mail: dev-help@commons.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@commons.apache.org
For additional commands, e-mail: dev-help@commons.apache.org


Mime
View raw message