[SciPy-User] problem with dot for complex matrices

eat e.antero.tammi@gmail....
Tue Mar 27 14:15:19 CDT 2012


Hi,

On Tue, Mar 27, 2012 at 9:48 PM, Ryan Krauss <ryanlists@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.
>
FWIIWO, I can't either reproduce your results:
In []: sys.version
Out[]: '2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)]'
In []: np.version.version
Out[]: '1.6.0'

In []: s.round(7)
Out[]:
array([[-0.2274026-1.6385745j, -0.0774096-0.5584789j],
       [-3.2060296-4.9395905j, -0.3674625-1.6835246j]])
In []: a.round(7)
Out[]:
array([[ -3.75000000e-05-0.0005937j],
       [  7.96000000e-04+0.0113766j]])

In []: -1* dot(s, a).round(7)
Out[]:
array([[-0.0053277+0.0011288j],
       [-0.0160477+0.0034321j]])

Regards,
-eat

>
> Thanks,
>
> Ryan
> _______________________________________________
> SciPy-User mailing list
> SciPy-User@scipy.org
> http://mail.scipy.org/mailman/listinfo/scipy-user
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.scipy.org/pipermail/scipy-user/attachments/20120327/05bdd1ce/attachment.html 


More information about the SciPy-User mailing list