193 lines
4.6 KiB
Python
193 lines
4.6 KiB
Python
from collections.abc import Callable, Iterable
|
|
from typing import (
|
|
Any,
|
|
Concatenate,
|
|
Final,
|
|
Literal as L,
|
|
TypeVar,
|
|
overload,
|
|
)
|
|
|
|
import numpy as np
|
|
import numpy.typing as npt
|
|
from numpy._typing import _IntLike_co
|
|
|
|
from ._polybase import ABCPolyBase
|
|
from ._polytypes import (
|
|
_SeriesLikeCoef_co,
|
|
_Array1,
|
|
_Series,
|
|
_Array2,
|
|
_CoefSeries,
|
|
_FuncBinOp,
|
|
_FuncCompanion,
|
|
_FuncDer,
|
|
_FuncFit,
|
|
_FuncFromRoots,
|
|
_FuncGauss,
|
|
_FuncInteg,
|
|
_FuncLine,
|
|
_FuncPoly2Ortho,
|
|
_FuncPow,
|
|
_FuncPts,
|
|
_FuncRoots,
|
|
_FuncUnOp,
|
|
_FuncVal,
|
|
_FuncVal2D,
|
|
_FuncVal3D,
|
|
_FuncValFromRoots,
|
|
_FuncVander,
|
|
_FuncVander2D,
|
|
_FuncVander3D,
|
|
_FuncWeight,
|
|
)
|
|
from .polyutils import trimcoef as chebtrim
|
|
|
|
__all__ = [
|
|
"chebzero",
|
|
"chebone",
|
|
"chebx",
|
|
"chebdomain",
|
|
"chebline",
|
|
"chebadd",
|
|
"chebsub",
|
|
"chebmulx",
|
|
"chebmul",
|
|
"chebdiv",
|
|
"chebpow",
|
|
"chebval",
|
|
"chebder",
|
|
"chebint",
|
|
"cheb2poly",
|
|
"poly2cheb",
|
|
"chebfromroots",
|
|
"chebvander",
|
|
"chebfit",
|
|
"chebtrim",
|
|
"chebroots",
|
|
"chebpts1",
|
|
"chebpts2",
|
|
"Chebyshev",
|
|
"chebval2d",
|
|
"chebval3d",
|
|
"chebgrid2d",
|
|
"chebgrid3d",
|
|
"chebvander2d",
|
|
"chebvander3d",
|
|
"chebcompanion",
|
|
"chebgauss",
|
|
"chebweight",
|
|
"chebinterpolate",
|
|
]
|
|
|
|
_SCT = TypeVar("_SCT", bound=np.number[Any] | np.object_)
|
|
def _cseries_to_zseries(c: npt.NDArray[_SCT]) -> _Series[_SCT]: ...
|
|
def _zseries_to_cseries(zs: npt.NDArray[_SCT]) -> _Series[_SCT]: ...
|
|
def _zseries_mul(
|
|
z1: npt.NDArray[_SCT],
|
|
z2: npt.NDArray[_SCT],
|
|
) -> _Series[_SCT]: ...
|
|
def _zseries_div(
|
|
z1: npt.NDArray[_SCT],
|
|
z2: npt.NDArray[_SCT],
|
|
) -> _Series[_SCT]: ...
|
|
def _zseries_der(zs: npt.NDArray[_SCT]) -> _Series[_SCT]: ...
|
|
def _zseries_int(zs: npt.NDArray[_SCT]) -> _Series[_SCT]: ...
|
|
|
|
poly2cheb: _FuncPoly2Ortho[L["poly2cheb"]]
|
|
cheb2poly: _FuncUnOp[L["cheb2poly"]]
|
|
|
|
chebdomain: Final[_Array2[np.float64]]
|
|
chebzero: Final[_Array1[np.int_]]
|
|
chebone: Final[_Array1[np.int_]]
|
|
chebx: Final[_Array2[np.int_]]
|
|
|
|
chebline: _FuncLine[L["chebline"]]
|
|
chebfromroots: _FuncFromRoots[L["chebfromroots"]]
|
|
chebadd: _FuncBinOp[L["chebadd"]]
|
|
chebsub: _FuncBinOp[L["chebsub"]]
|
|
chebmulx: _FuncUnOp[L["chebmulx"]]
|
|
chebmul: _FuncBinOp[L["chebmul"]]
|
|
chebdiv: _FuncBinOp[L["chebdiv"]]
|
|
chebpow: _FuncPow[L["chebpow"]]
|
|
chebder: _FuncDer[L["chebder"]]
|
|
chebint: _FuncInteg[L["chebint"]]
|
|
chebval: _FuncVal[L["chebval"]]
|
|
chebval2d: _FuncVal2D[L["chebval2d"]]
|
|
chebval3d: _FuncVal3D[L["chebval3d"]]
|
|
chebvalfromroots: _FuncValFromRoots[L["chebvalfromroots"]]
|
|
chebgrid2d: _FuncVal2D[L["chebgrid2d"]]
|
|
chebgrid3d: _FuncVal3D[L["chebgrid3d"]]
|
|
chebvander: _FuncVander[L["chebvander"]]
|
|
chebvander2d: _FuncVander2D[L["chebvander2d"]]
|
|
chebvander3d: _FuncVander3D[L["chebvander3d"]]
|
|
chebfit: _FuncFit[L["chebfit"]]
|
|
chebcompanion: _FuncCompanion[L["chebcompanion"]]
|
|
chebroots: _FuncRoots[L["chebroots"]]
|
|
chebgauss: _FuncGauss[L["chebgauss"]]
|
|
chebweight: _FuncWeight[L["chebweight"]]
|
|
chebpts1: _FuncPts[L["chebpts1"]]
|
|
chebpts2: _FuncPts[L["chebpts2"]]
|
|
|
|
# keep in sync with `Chebyshev.interpolate`
|
|
_RT = TypeVar("_RT", bound=np.number[Any] | np.bool | np.object_)
|
|
@overload
|
|
def chebinterpolate(
|
|
func: np.ufunc,
|
|
deg: _IntLike_co,
|
|
args: tuple[()] = ...,
|
|
) -> npt.NDArray[np.float64 | np.complex128 | np.object_]: ...
|
|
@overload
|
|
def chebinterpolate(
|
|
func: Callable[[npt.NDArray[np.float64]], _RT],
|
|
deg: _IntLike_co,
|
|
args: tuple[()] = ...,
|
|
) -> npt.NDArray[_RT]: ...
|
|
@overload
|
|
def chebinterpolate(
|
|
func: Callable[Concatenate[npt.NDArray[np.float64], ...], _RT],
|
|
deg: _IntLike_co,
|
|
args: Iterable[Any],
|
|
) -> npt.NDArray[_RT]: ...
|
|
|
|
_Self = TypeVar("_Self", bound=object)
|
|
|
|
class Chebyshev(ABCPolyBase[L["T"]]):
|
|
@overload
|
|
@classmethod
|
|
def interpolate(
|
|
cls: type[_Self],
|
|
/,
|
|
func: Callable[[npt.NDArray[np.float64]], _CoefSeries],
|
|
deg: _IntLike_co,
|
|
domain: None | _SeriesLikeCoef_co = ...,
|
|
args: tuple[()] = ...,
|
|
) -> _Self: ...
|
|
@overload
|
|
@classmethod
|
|
def interpolate(
|
|
cls: type[_Self],
|
|
/,
|
|
func: Callable[
|
|
Concatenate[npt.NDArray[np.float64], ...],
|
|
_CoefSeries,
|
|
],
|
|
deg: _IntLike_co,
|
|
domain: None | _SeriesLikeCoef_co = ...,
|
|
*,
|
|
args: Iterable[Any],
|
|
) -> _Self: ...
|
|
@overload
|
|
@classmethod
|
|
def interpolate(
|
|
cls: type[_Self],
|
|
func: Callable[
|
|
Concatenate[npt.NDArray[np.float64], ...],
|
|
_CoefSeries,
|
|
],
|
|
deg: _IntLike_co,
|
|
domain: None | _SeriesLikeCoef_co,
|
|
args: Iterable[Any],
|
|
/,
|
|
) -> _Self: ...
|