Re: Strange Det function behavior.
- To: mathgroup at smc.vnet.net
- Subject: [mg65459] Re: [mg65445] Strange Det function behavior.
- From: "Carl K. Woll" <carlw at wolfram.com>
- Date: Mon, 3 Apr 2006 06:59:23 -0400 (EDT)
- References: <200604020900.FAA01592@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Alexander wrote: > Dear MathGroup! > > Suppose we have defined the following function: > > f[x_Integer] := Det[ Table[ Random[]*t + i/j, {i, x}, {j, x} ] ]; > > Now try to make a table for different values of argument (matrix > dimension): > > Table[f[i], {i, 12}] // TableForm > > It takes a considerable time on my Celeron 1700 with Mathematica 5.2 > under WinXP to make such a table. > > Once we made this table we see very strange bihavior, all results > before x=12 dimension are polynoms, > but starting from x=12 result become very big and very > strange, and in fact it's not even a polynom. > > I spend several hours try to understand why system acts so strange, and > finally came to idea that the answer is in numbers representation and > inner > system algorithms used to evaluate Det function. > > It would be very interesting to see explanations of this result. > > Thanks for your answers! > > Alexander. I won't try to give you an explanation, but for your particular problem there is an undocumented workaround. The function CharacteristicPolynomial can accept a list of two matrices as its first argument: CharacteristicPolynomial[{m,a},t] returns Det[m - a t] So, we can use CharacteristicPolynomial for your problem. For example, here is a 12x12 matrix: matrix = Table[ Random[]*t + i/j, {i, 12}, {j, 12} ]; Extract the {m,a} matrices: {m,a} = {matrix /. t->0, -D[matrix,t]}; Use CharacteristicPolynomial: In[14]:= CharacteristicPolynomial[{m,a},t]//Chop//Timing Out[14]= 11 12 {0. Second, 1.24466 t + 0.0082288 t } An instantaneous result for 12x12 matrices. Carl Woll Wolfram Research
- References:
- Strange Det function behavior.
- From: "Alexander" <beginning.physst@mail.ru>
- Strange Det function behavior.