Back

Explore Courses Blog Tutorials Interview Questions
+1 vote
2 views
in Python by (45.3k points)

I am trying to multiply a vector(3 by 1) by its transpose(1 by 3). I get a (3 by 3) array but I cannot get its inverse. Any idea why?

import numpy as np

c=array([1, 8, 50])

np.transpose(c[np.newaxis]) * c

array([[   1,    8,   50],

   [   8,   64,  400],

   [  50,  400, 2500]])

np.linalg.inv(np.transpose(c[np.newaxis]) * c)

Traceback (most recent call last):

  File "<console>", line 1, in <module>

  File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 445, in inv

    return wrap(solve(a, identity(a.shape[0], dtype=a.dtype)))

  File "C:\Python26\lib\site-packages\numpy\linalg\linalg.py", line 328, in solve

    raise LinAlgError, 'Singular matrix'

LinAlgError: Singular matrix

1 Answer

0 votes
by (16.8k points)
edited by

The matrix you pasted:

[[   1,    8,   50],

 [   8,   64,  400],

 [  50,  400, 2500]]

Has a determinant of zero. This is the definition of a Singular matrix (one for which an inverse does not exist)

http://en.wikipedia.org/wiki/Invertible_matrix

To know more about this you can have a look at the following video:-

Related questions

0 votes
1 answer
asked Mar 21, 2021 in Python by laddulakshana (16.4k points)
0 votes
1 answer
asked Sep 24, 2019 in Python by Sammy (47.6k points)
0 votes
1 answer
asked Oct 15, 2019 in Python by Sammy (47.6k points)
Welcome to Intellipaat Community. Get your technical queries answered by top developers!

30.7k questions

32.8k answers

500 comments

109k users

Browse Categories

...