# Vectorial division

If $\boldsymbol{D}$ is a matrix. One can easily compute

```
r1=[(D[j+1]-D[j]) for j in range(D.nrows()-1)]
```

but is there a simple way to compute :

```
r1=[(D[j+1]-D[j])/D[j] for j in range(D.nrows()-1)]
```

Vectorial division

If $\boldsymbol{D}$ is a matrix. One can easily compute

```
r1=[(D[j+1]-D[j]) for j in range(D.nrows()-1)]
```

but is there a simple way to compute :

```
r1=[(D[j+1]-D[j])/D[j] for j in range(D.nrows()-1)]
```

0

Numpy arrays admit elementwise operations. So you could convert the matrix to a Numpy array, compute the new matrix R and then come back to a SageMath matrix:

```
import numpy
R = D.numpy()
R = numpy.diff(R, axis=0)/R[0:-1,:]
R = matrix(R)
```

You can also opt for a pure Python approach:

```
nr, nc = D.nrows()-1, D.ncols()
R = matrix(nr, nc, [(D[i+1,j]-D[i,j])/D[i,j]
for i in range(nr) for j in range(nc)])
```

The first method is faster.

0

Both

```
r1=[vector((D[j+1][i]-D[j][i])/D[j][i] for i in range(D[j].degree())) for j in range(D.nrows()-1)]
```

and

```
r1=[vector((D[j+1, i]-D[j, i])/D[j, i] for i in range(D[j].degree())) for j in range(D.nrows()-1)]
```

work for me.

(Elementwise vector division is not a standard mathematical operation, so it makes sense that just dividing by `D[j]`

is not implemented in SageMath, nor should it be, since the software is aimed at mathematical use.)

Try it: `D = ... some matrix ...`

, then `v = D[0]`

. Then do `v.degree?`

to see `Return the degree of this vector, which is simply the number of entries`

. You could replace `D[j].degree()`

by `D.ncols()`

.

Asked: **
2020-06-22 18:09:31 -0500
**

Seen: **109 times**

Last updated: **Jun 22**

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.

What does it mean to divide a vector by a vector?

I think he refers to elementwise division.