类 FunctionUtils
-
方法概要
修饰符和类型方法说明添加函数。static UnivariateFunction
add
(UnivariateFunction... f) 添加函数。static MultivariateFunction
collector
(BivariateFunction combiner, double initialValue) 返回由h(x[])定义的MultivariateFunction。static MultivariateFunction
collector
(BivariateFunction combiner, UnivariateFunction f, double initialValue) 返回由h(x[])定义的MultivariateFunction。static UnivariateFunction
combine
(BivariateFunction combiner, UnivariateFunction f, UnivariateFunction g) 返回单变量函数h(x) = combiner(f(x), g(x))。
组合函数。static UnivariateFunction
compose
(UnivariateFunction... f) 组合函数。static MultivariateFunction
derivative
(MultivariateDifferentiableFunction f, int[] orders) 将MultivariateDifferentiableFunction
转换为计算nth阶导数的MultivariateFunction
。static UnivariateFunction
derivative
(UnivariateDifferentiableFunction f, int order) 将UnivariateDifferentiableFunction
转换为计算nth阶导数的UnivariateFunction
。static UnivariateFunction
fix1stArgument
(BivariateFunction f, double fixed) 通过固定二元函数的第一个参数创建一元函数。static UnivariateFunction
fix2ndArgument
(BivariateFunction f, double fixed) 通过固定二元函数的第二个参数创建一元函数。乘法函数。static UnivariateFunction
multiply
(UnivariateFunction... f) 乘法函数。static double[]
sample
(UnivariateFunction f, double min, double max, int n) 在指定区间上对指定的单变量实函数进行采样。将常规函数转换为MultivariateDifferentiableFunction
。toDifferentiable
(UnivariateFunction f, UnivariateFunction... derivatives) 将常规函数转换为UnivariateDifferentiableFunction
。
-
方法详细资料
-
compose
组合函数。参数列表中的函数按给定顺序依次组合。例如,compose(f1,f2,f3)的作用类似于f1(f2(f3(x)))。
- 参数:
-
f
- 函数列表。 - 返回:
- 组合函数。
-
compose
组合函数。参数列表中的函数按给定顺序依次组合。例如,compose(f1,f2,f3)的作用类似于f1(f2(f3(x)))。
- 参数:
-
f
- 函数列表。 - 返回:
- 组合函数。
-
add
添加函数。- 参数:
-
f
- 函数列表。 - 返回:
- 计算函数总和的函数。
-
add
添加函数。- 参数:
-
f
- 函数列表。 - 返回:
- 计算函数总和的函数。
-
multiply
乘法函数。- 参数:
-
f
- 函数列表。 - 返回:
- 计算函数乘积的函数。
-
multiply
乘法函数。- 参数:
-
f
- 函数列表。 - 返回:
- 计算函数乘积的函数。
-
combine
public static UnivariateFunction combine(BivariateFunction combiner, UnivariateFunction f, UnivariateFunction g) 返回单变量函数h(x) = combiner(f(x), g(x))。
- 参数:
-
combiner
- 组合函数。 -
f
- 函数。 -
g
- 函数。 - 返回:
- 组合函数。
-
collector
public static MultivariateFunction collector(BivariateFunction combiner, UnivariateFunction f, double initialValue) 返回由h(x[])定义的MultivariateFunction。h(x[]) = combiner(...combiner(combiner(initialValue,f(x[0])),f(x[1]))...),f(x[x.length-1]))
- 参数:
-
combiner
- 组合函数。 -
f
- 函数。 -
initialValue
- 初始值。 - 返回:
- 收集器函数。
-
collector
返回由h(x[])定义的MultivariateFunction。h(x[]) = combiner(...combiner(combiner(initialValue,x[0]),x[1])...),x[x.length-1])
- 参数:
-
combiner
- 组合函数。 -
initialValue
- 初始值。 - 返回:
- 收集器函数。
-
fix1stArgument
通过固定二元函数的第一个参数创建一元函数。- 参数:
-
f
- 二元函数。 -
fixed
- 将第一个参数设置为的值。 - 返回:
- 一元函数h(x) = f(fixed, x)
-
fix2ndArgument
通过固定二元函数的第二个参数创建一元函数。- 参数:
-
f
- 二元函数。 -
fixed
- 将第二个参数设置为的值。 - 返回:
- 一元函数h(x) = f(x, fixed)
-
sample
public static double[] sample(UnivariateFunction f, double min, double max, int n) throws MathIllegalArgumentException 在指定区间上对指定的单变量实函数进行采样。该区间等分为
n
部分,并从min
到max - (max - min) / n
取样点;因此,f
不会在上限max
处取样。- 参数:
-
f
- 待采样的函数 -
min
- 区间下限(包括)。 -
max
- 区间上限(不包括)。 -
n
- 采样点数。 - 返回:
- 采样数组。
- 抛出:
-
MathIllegalArgumentException
- 如果下限min
大于或等于上限max
。 -
MathIllegalArgumentException
- 如果采样点数n
为负数。
-
toDifferentiable
public static UnivariateDifferentiableFunction toDifferentiable(UnivariateFunction f, UnivariateFunction... derivatives) 将常规函数转换为UnivariateDifferentiableFunction
。此方法处理具有一个自由参数和多个导数的情况。对于具有多个自由参数和仅一阶导数的情况,请参见
toDifferentiable(MultivariateFunction, MultivariateVectorFunction)
。对于中间情况,即具有多个自由参数和2阶或更高阶导数的情况,没有直接支持,因为很难指定所有交叉导数。请注意,导数预计仅针对基本函数的原始参数x计算,即它们是df/dx,df2/dx2,...即使构建的函数稍后用于像f(sin(t))这样的组合,提供的导数也不应单独应用与正弦及其导数的组合。这里将自动执行组合,并且结果将正确包含f(sin(t)),df(sin(t))/dt,df2(sin(t))/dt2,尽管提供的导数函数对正弦函数一无所知。
- 参数:
-
f
- 基本函数f(x) -
derivatives
- 基本函数的导数,按增加的微分顺序 - 返回:
- 具有值和所有指定导数的可微函数
- 另请参阅:
-
toDifferentiable
public static MultivariateDifferentiableFunction toDifferentiable(MultivariateFunction f, MultivariateVectorFunction gradient) 将常规函数转换为MultivariateDifferentiableFunction
。此方法处理具有多个自由参数和仅一阶导数的情况。对于具有一个自由参数和多个导数的情况,请参见
toDifferentiable(UnivariateFunction, UnivariateFunction...)
。对于具有多个自由参数和2阶或更高阶导数的中间情况,没有直接支持,因为很难指定所有交叉导数。请注意,梯度预计仅针对基本函数的原始参数x计算,即df/dx1,df/dx2,...即使稍后构建的函数在类似f(sin(t), cos(t))的组合中使用,提供的梯度也不应用正弦或余弦及其导数本身。组合将在此自动完成,结果将正确包含f(sin(t), cos(t)),df(sin(t), cos(t))/dt,尽管提供的导数函数对正弦或余弦函数一无所知。
- 参数:
-
f
- 基本函数 f(x) -
gradient
- 基本函数的梯度 - 返回:
- 具有值和梯度的可微函数
- 另请参阅:
-
derivative
将UnivariateDifferentiableFunction
转换为计算nth阶导数的UnivariateFunction
。此转换器仅是一个便利方法。请注意,仅计算一个导数并不会节省任何计算,因为原始函数实际上将在底层被调用。导数将从完整的
DerivativeStructure
结果中提取。- 参数:
-
f
- 原始函数,具有值和所有导数 -
order
- 要提取的导数阶数 - 返回:
- 在所需阶数计算导数的函数
- 另请参阅:
-
derivative
将MultivariateDifferentiableFunction
转换为计算nth阶导数的MultivariateFunction
。此转换器仅是一个便利方法。请注意,仅计算一个导数并不会节省任何计算,因为原始函数实际上将在底层被调用。导数将从完整的
DerivativeStructure
结果中提取。- 参数:
-
f
- 原始函数,具有值和所有导数 -
orders
- 要提取的导数阶数,对于每个自由参数 - 返回:
- 在所需阶数计算导数的函数
- 另请参阅:
-