Download or view argmin.frink in plain text format
/** This contains functions to find the "argmin" of a function, that is,
given a single-argument function and a list of input values, returns an
array of the input value(s) where the function has the minimum value.
*/
argmin[f, data] :=
{
min = undef
results = new array
for arg = data
{
val = f[arg]
if min == undef
{
min = val
results.push[arg]
} else
{
if val < min // New minimum, replace results list
{
results = [arg]
min = val
} else
if val == min // Identical min, push arg to arg list
results.push[arg]
}
}
return results
}
/** This contains functions to find the "argmax" of a function, that is,
given a single-argument function and a list of input values, returns an
array of the input value(s) where the function has the maxmium value.
*/
argmax[f, data] :=
{
max = undef
results = new array
for arg = data
{
val = f[arg]
if max == undef
{
max = val
results.push[arg]
} else
{
if val > max // New maximum, replace results list
{
results = [arg]
max = val
} else
if val == max // Identical max, push arg to arg list
results.push[arg]
}
}
return results
}
/*
// Example usages
squareFunc = {|x| x^2}
data = [-1, 1, -2]
println["argmin: " + argmin[squareFunc, data]]
println["argmax: " + argmax[squareFunc, data]]
println[]
data = [[2,-3],[3,5],[2,5],[-2,3],[-2,-3]]
product = getFunction["product", 1]
println["argmin: " + argmin[product, data]]
println["argmax: " + argmax[product, data]]
*/
Download or view argmin.frink in plain text format
This is a program written in the programming language Frink.
For more information, view the Frink
Documentation or see More Sample Frink Programs.
Alan Eliasen was born 20152 days, 21 hours, 45 minutes ago.