[SciPy-User] problem with dot for complex matrices
Ryan Krauss
ryanlists at gmail.com
Tue Mar 27 15:14:57 EDT 2012
Thanks to Nils and Josef for responding so quickly.
I don't know if I feel more or less confused:
If I copy and paste the code from my email, I can't reproduce my own problem:
In [5]: A = array([[-0.22740265-1.63857451j, -0.07740957-0.55847886j],
...: [-3.20602957-4.93959054j, -0.36746252-1.68352465j]])
In [6]: B = array([[ -3.74729148e-05-0.0005937j ],
...: [ 7.96025801e-04+0.01137658j]])
In [7]: -1*dot(A,B)
Out[7]:
array([[-0.00532766+0.00112881j],
[-0.01604775+0.00343208j]])
But if I use the matrices returned by my function I get the wrong result:
In [27]: -1*numpy.dot(submat_inv_num, augcol_num)
Out[27]:
array([[ 5.30985737e-05+0.00038316j],
[ 1.72370377e-04+0.00115503j]])
Even though they seem to be very nearly the same arrays:
In [11]: submat_inv_num
Out[11]:
array([[-0.22740265-1.63857451j, -0.07740957-0.55847886j],
[-3.20602957-4.93959054j, -0.36746252-1.68352465j]])
In [12]: A
Out[12]:
array([[-0.22740265-1.63857451j, -0.07740957-0.55847886j],
[-3.20602957-4.93959054j, -0.36746252-1.68352465j]])
In [13]: submat_inv_num.dtype
Out[13]: dtype('complex128')
In [14]: A.dtype
Out[14]: dtype('complex128')
In [15]: A.shape
Out[15]: (2, 2)
In [16]: submat_inv_num.shape
Out[16]: (2, 2)
In [17]: submat_inv_num - A
Out[17]:
array([[ 1.18593824e-09 +3.83908949e-09j,
1.45239888e-09 +4.30272740e-09j],
[ -2.42228770e-09 -2.12942108e-09j,
-4.36657455e-09 +2.14619789e-09j]])
In [20]: augcol_num.dtype
Out[20]: dtype('complex128')
In [21]: augcol_num.shape
Out[21]: (2, 1)
In [22]: B.dtype
Out[22]: dtype('complex128')
In [23]: B.shape
Out[23]: (2, 1)
In [18]: augcol_num - B
Out[18]:
array([[ -2.57355850e-14 -5.09694849e-11j],
[ -1.51298895e-13 +2.85492891e-09j]])
Any ideas as to what might be going on?
FYI,
In [24]: numpy.__version__
Out[24]: '1.6.1'
In [25]: scipy.__version__
Out[25]: '0.10.0'
Thanks again,
Ryan
On Tue, Mar 27, 2012 at 1:58 PM, Nils Wagner
<nwagner at iam.uni-stuttgart.de> wrote:
> On Tue, 27 Mar 2012 13:48:14 -0500
> Ryan Krauss <ryanlists at gmail.com> wrote:
>>
>> I am loosing my mind while trying to debug some code. I am trying to
>> find the cause of some differences between numpy analysis and analysis
>> done first in maxima and then converted to python code. The maxima
>> approach is more difficult to do, but seems to lead to the correct
>> answers. The core issue seems to be one dot product of a 2x2 and a
>> 2x1 that are both complex numbers:
>>
>> here is the 2x2:
>>
>> ipdb> submatinv
>> array([[-0.22740265-1.63857451j, -0.07740957-0.55847886j],
>> [-3.20602957-4.93959054j, -0.36746252-1.68352465j]])
>>
>> here is the 2x1:
>>
>> ipdb> augcol
>> array([[ -3.74729148e-05-0.0005937j ],
>> [ 7.96025801e-04+0.01137658j]])
>>
>> verifying their shapes and data types:
>>
>> ipdb> submatinv.shape
>> (2, 2)
>> ipdb> submatinv.dtype
>> dtype('complex128')
>> ipdb> augcol.shape
>> (2, 1)
>> ipdb> augcol.dtype
>> dtype('complex128')
>>
>> I need to compute this result:
>>
>> ipdb> -1*numpy.dot(submatinv,augcol)
>> array([[ 5.30985737e-05+0.00038316j],
>> [ 1.72370377e-04+0.00115503j]])
>>
>> If I hard code how to do the matrix multiplication, I get the correct
>> answer (it agrees with Maxima):
>>
>> For the first element:
>> ipdb> -1*(submatinv[0,0]*augcol[0,0]+submatinv[0,1]*augcol[1,0])
>> (-0.005327660633034575+0.0011288088216130766j)
>>
>> For the second
>> ipdb> -1*(submatinv[1,0]*augcol[0,0]+submatinv[1,1]*augcol[1,0])
>> (-0.016047752110848554+0.003432076134378004j)
>>
>> What is the dot product doing if it isn't dotting row by column?
>>
>> I am not seeing something.
>>
>> Thanks,
>>
>> Ryan
>> _______________________________________________
>> SciPy-User mailing list
>> SciPy-User at scipy.org
>> http://mail.scipy.org/mailman/listinfo/scipy-user
>
>
> Hi Ryan,
>
> I cannot reproduce your np.dot results, here.
>
> python -i ryan_1.py
> [[-0.00532766+0.00112881j]
> [-0.01604775+0.00343208j]]
> 1.7.0.dev-3503c5f
>
> Nils
>
> _______________________________________________
> SciPy-User mailing list
> SciPy-User at scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
More information about the SciPy-User
mailing list