I need to solve a set of simultaneous equations of the form **A**x = **B** for x. I’ve used the numpy.linalg.solve function, inputting A and B, but I get the error ‘LinAlgError: Last 2 dimensions of the array must be square’. How do I fix this?

Here’s my code:

```
A = matrix([[v1x, v2x], [v1y, v2y], [v1z, v2z]])
print A
B = [(p2x-p1x-nmag[0]), (p2y-p1y-nmag[1]), (p2z-p1z-nmag[2])]
print B
x = numpy.linalg.solve(A, B)
```

The values of the matrix/vector are calculated earlier in the code and this works fine, but the values are:

**A** =

```
(-0.56666301, -0.52472909)
(0.44034147, 0.46768087)
(0.69641397, 0.71129036)
```

**B** =

```
(-0.38038602567630364, -24.092279373295057, 0.0)
```

x should have the form (x1,x2,0)

## Kenil Vasani

In case you still haven’t found an answer, or in case someone in the future has this question.

To solveAx=b:numpy.linalg.solve uses LAPACK gesv. As mentioned in the documentation of LAPACK, gesv requires

Ato be square:If

Amatrix is not square, it means that you either have more variables than your equations or the other way around. In these situations, you can have the cases of no solution or infinite number of solutions. What determines the solution space is the rank of the matrix compared to the number of columns. Therefore, you first have to check the rank of the matrix.That being said, you can use another method to solve your system of linear equations. I suggest having a look at factorization methods like LU or QR or even SVD. In LAPACK you can use

`getrs`

, in Python you can different things:`scipy.linalg.solve_triangular`

`numpy.linalg.lstsq`

Also have a look here where a simple example is formulated and solved.