モジュール mbcp.mp_math.function
AAA
func cal_gradient_3vf(func: ThreeSingleVarsFunc, p: Point3, epsilon: float = EPSILON) -> Vector3
説明: 计算三元函数在某点的梯度向量。
TIP
已知一个函数
引数:
- func (
ThreeSingleVarsFunc
): 三元函数- p (
Point3
): 点- epsilon: 偏移量
戻り値: 梯度
ソースコード または GitHubで表示
python
def cal_gradient_3vf(func: ThreeSingleVarsFunc, p: Point3, epsilon: float=EPSILON) -> Vector3:
dx = (func(p.x + epsilon, p.y, p.z) - func(p.x - epsilon, p.y, p.z)) / (2 * epsilon)
dy = (func(p.x, p.y + epsilon, p.z) - func(p.x, p.y - epsilon, p.z)) / (2 * epsilon)
dz = (func(p.x, p.y, p.z + epsilon) - func(p.x, p.y, p.z - epsilon)) / (2 * epsilon)
return Vector3(dx, dy, dz)
func curry(func: MultiVarsFunc, *args: Var) -> OneVarFunc
説明: 对多参数函数进行柯里化。
TIP
有关函数柯里化,可参考函数式编程--柯理化(Currying)
引数:
- func (
MultiVarsFunc
): 函数- *args (
Var
): 参数
戻り値: 柯里化后的函数
例:
python
def add(a: int, b: int, c: int) -> int:
return a + b + c
add_curried = curry(add, 1, 2)
add_curried(3) # 6
ソースコード または GitHubで表示
python
def curry(func: MultiVarsFunc, *args: Var) -> OneVarFunc:
def curried_func(*args2: Var) -> Var:
return func(*args, *args2)
return curried_func