# Functions ArgMin and ArgMax

ArgMax(x, i) returns the value of index i for which array x is largest. More specifically, it returns a value, ix, of i, such that x[i =ix] = Max(x, i). Similarly, ArgMin(x, i) returns the value of i for which x is smallest. If there are ties (e.g., x has two identical values that are largest, it returns the one nearer the end of i.

ArgMin is new to Analytica 4.0.

## Declaration

```ArgMin( R : vector[I] ; I : ... optional IndexType ; position : optional boolean )
ArgMax( R : vector[I] ; I : ... optional IndexType ; position : optional boolean )
```

## Single Index Usage

When ArgMin or ArgMax is used with a single index, as in the following usage

```ArgMax( R:Car_prices, I:Car_type )
```

the value in index I is returned containing the extrema.

## Multiple Index Usage

(new to 4.0)

You can specify more than one index, e.g.

```ArgMin( R:Cost, I:Mpg,Car_type )
```

in order to find the coordinate in a multi-D array containing the minimum or maximum value.

When more than one index is specified, these functions return a coordinate at which the smallest (ArgMin) or largest (ArgMax) value occurs. The coordinate is a 1-D array indexed by a local index having the name .Dim. The elements of the local index are the index names, and the value of the result is the element from that index.

## Positional Usage

By default, ArgMax (ArgMin) returns a value of the index. If you specify optional parameter position as true, they return the position of the value in the index for which x is maximum (minumum) -- a number. For example:

``` ArgMax( R : Profit, I : UnitPrice, position : true )
```

This helps avoid ambiguity when the index contains duplicate values.