# sumouter

##### Compute Quadratic Forms

Calculates certain quadratic forms of matrices.

- Keywords
- array

##### Usage

```
sumouter(x, w=NULL)
quadform(x, v)
bilinearform(x, v, y)
```

##### Arguments

- x,y
- A matrix, whose rows are the vectors in the quadratic form.
- w
- Optional vector of weights
- v
- Matrix determining the quadratic form

##### Details

The matrix `x`

will be interpreted as a collection of row vectors.
The command `sumouter`

computes the sum of the outer
products of these vectors, weighted by the entries of `w`

:
$$M = \sum_i w_i x_i x_i^\top$$
where the sum is over all rows of `x`

(after removing any rows containing `NA`

or other non-finite
values).
If `w`

is missing, the weights will be taken as 1.
The result is a $p \times p$ matrix where
`p = ncol(x)`

.
The command `quadform`

evaluates the quadratic form, defined by
the matrix `v`

, for each of the row vectors of `x`

:
$$y_i = x_i V x_i^\top$$
The result `y`

is a numeric vector of length `n`

where
`n = nrow(x)`

. If `x[i,]`

contains `NA`

or
other non-finite values, then `y[i] = NA`

.

The command `bilinearform`

evaluates the more general bilinear
form defined by the matrix `v`

. Here `x`

and `y`

must
be matrices of the same dimensins. For each of the row vectors of
`x`

and corresponding row vector of `y`

, the bilinear form is
$$z_i = x_i V y_i^\top$$
The result `z`

is a numeric vector of length `n`

where
`n = nrow(x)`

. If `x[i,]`

or `y[i,]`

contains `NA`

or
other non-finite values, then `z[i] = NA`

.

##### Value

- A vector or matrix.

##### Examples

```
x <- matrix(1:12, 4, 3)
dimnames(x) <- list(c("Wilma", "Fred", "Barney", "Betty"), letters[1:3])
x
sumouter(x)
w <- 4:1
sumouter(x, w)
v <- matrix(1, 3, 3)
quadform(x, v)
# should be the same as quadform(x, v)
bilinearform(x, v, x)
# See what happens with NA's
x[3,2] <- NA
sumouter(x, w)
quadform(x, v)
```

*Documentation reproduced from package spatstat, version 1.37-0, License: GPL (>= 2)*