Skip to content

mbcp.mp_math.equation

说明: 本模块定义了方程相关的类和函数以及一些常用的数学函数

class CurveEquation

def __init__(self, x_func: OneVarFunc, y_func: OneVarFunc, z_func: OneVarFunc)

说明: 曲线方程。

参数:

  • x_func: x函数
  • y_func: y函数
  • z_func: z函数
源代码
python
def __init__(self, x_func: OneVarFunc, y_func: OneVarFunc, z_func: OneVarFunc):
    """
        曲线方程。
        Args:
            x_func: x函数
            y_func: y函数
            z_func: z函数
        """
    self.x_func = x_func
    self.y_func = y_func
    self.z_func = z_func

def __call__(self, *t: Var) -> Point3 | tuple[Point3, ...]

说明: 计算曲线上的点。

参数:

  • *t:
  • 参数:

返回: 目标点

源代码
python
def __call__(self, *t: Var) -> Point3 | tuple[Point3, ...]:
    """
        计算曲线上的点。
        Args:
            *t:
                参数
        Returns:
            目标点
        """
    if len(t) == 1:
        return Point3(self.x_func(t[0]), self.y_func(t[0]), self.z_func(t[0]))
    else:
        return tuple([Point3(x, y, z) for x, y, z in zip(self.x_func(t), self.y_func(t), self.z_func(t))])

def get_partial_derivative_func(func: MultiVarsFunc, var: int | tuple[int, ...], epsilon: Number = EPSILON) -> MultiVarsFunc

说明: 求N元函数一阶偏导函数。这玩意不太稳定,慎用。

WARNING

目前数学界对于一个函数的导函数并没有通解的说法,因此该函数的稳定性有待提升

参数:

  • func: 函数
  • var: 变量位置,可为整数(一阶偏导)或整数元组(高阶偏导)
  • epsilon: 偏移量

返回: 偏导函数

引发:

  • ValueError 无效变量类型
源代码
python
def get_partial_derivative_func(func: MultiVarsFunc, var: int | tuple[int, ...], epsilon: Number=EPSILON) -> MultiVarsFunc:
    """
    求N元函数一阶偏导函数。这玩意不太稳定,慎用。
    > [!warning]
    > 目前数学界对于一个函数的导函数并没有通解的说法,因此该函数的稳定性有待提升

    Args:
        func: 函数
        var: 变量位置,可为整数(一阶偏导)或整数元组(高阶偏导)
        epsilon: 偏移量
    Returns:
        偏导函数
    Raises:
        ValueError: 无效变量类型
    """
    if isinstance(var, int):

        def partial_derivative_func(*args: Var) -> Var:
            """@litedoc-hide"""
            args_list_plus = list(args)
            args_list_plus[var] += epsilon
            args_list_minus = list(args)
            args_list_minus[var] -= epsilon
            return (func(*args_list_plus) - func(*args_list_minus)) / (2 * epsilon)
        return partial_derivative_func
    elif isinstance(var, tuple):

        def high_order_partial_derivative_func(*args: Var) -> Var:
            """
            @litedoc-hide
            求高阶偏导函数
            Args:
                *args: 参数
            Returns:
                高阶偏导数值
            """
            result_func = func
            for v in var:
                result_func = get_partial_derivative_func(result_func, v, epsilon)
            return result_func(*args)
        return high_order_partial_derivative_func
    else:
        raise ValueError('Invalid var type')

def curry(func: MultiVarsFunc, *args: Var) -> OneVarFunc

说明: 对多参数函数进行柯里化。

TIP

有关函数柯里化,可参考函数式编程--柯理化(Currying)

参数:

  • func: 函数
  • *args: 参数

返回: 柯里化后的函数

源代码
python
def curry(func: MultiVarsFunc, *args: Var) -> OneVarFunc:
    """
    对多参数函数进行柯里化。
    > [!tip]
    > 有关函数柯里化,可参考[函数式编程--柯理化(Currying)](https://zhuanlan.zhihu.com/p/355859667)
    Args:
        func: 函数
        *args: 参数
    Returns:
        柯里化后的函数
    """

    def curried_func(*args2: Var) -> Var:
        """@litedoc-hide"""
        return func(*args, *args2)
    return curried_func

文档由 VitePress 构建 | API引用由 litedoc 生成