torch.special.bessel_y1
function bessel_y1<S extends Shape>(input: Tensor<S, 'float32'>, _options?: SpecialUnaryOptions<S>): Tensor<S, 'float32'>Computes the Bessel function of the second kind of order 1, Y₁(x), also called Neumann function.
Like Y₀(x), Y₁(x) is the second linearly independent solution to the Bessel differential equation with order n=1. It appears naturally in problems that require general (non-singular at origin) solutions to Bessel equations, including exterior domains where singularities are outside the region of interest. Y₁ is related to J₁ through logarithmic functions similar to Y₀'s relation with J₀. Essential for:
- Boundary value problems: general solutions for TE and TM modes with radiation BC
- Cylindrical scattering: acoustic and electromagnetic scattering by cylindrical objects
- Wave radiation: pressure/field from line sources and dipoles
- Exterior domain PDEs: Laplace, Helmholtz in unbounded cylindrical regions
- Heat transfer: cylindrical geometries with specific heat flux or radiation boundary conditions
- Signal processing: specialized filters requiring second-kind Bessel functions
Key Properties:
- Y₁(0) → -∞ (logarithmic singularity, similar to Y₀)
- Oscillatory behavior like J₁, but unbounded at origin
- Related: Y₁(x) = (2/π)[ln(x/2)J₁(x) - series terms]
- Derivative connection: Y₀'(x) = -Y₁(x), similar to J₀'(x) = -J₁(x)
- General solution: solution = C₁J₁(x) + C₂Y₁(x)
- Recurrence: Yₙ₋₁ + Yₙ₊₁ = (2n/x)Yₙ, same as J functions
- Singular at origin: Y₁(0) → -∞ (matches Y₀ behavior)
- Second kind: Linearly independent from J₁, complementary solution
- Logarithmic singularity: Y₁ ∝ -ln(x) near x=0
- General solution: Complete solution to Bessel ODE: C₁J₁ + C₂Y₁
- Recurrence: Same recurrence as J functions: Yₙ₋₁ + Yₙ₊₁ = (2n/x)Yₙ
- Derivative: Y₀'(x) = -Y₁(x) (similar to J₀'(x) = -J₁(x))
- Asymptotic: Different phase from Y₀ (cos vs sin in asymptotic form)
- Domain x 0 only: Undefined for x ≤ 0 (unlike J₁ which extends to all x)
- Singularity at origin: Y₁(x) → -∞ as x → 0+
- Numerical accuracy: For small x, Y₁ becomes extremely negative
- Odd function assumption invalid: Y₁ doesn't have Y₁(-x) = -Y₁(x) property
Parameters
inputTensor<S, 'float32'>- Input tensor with real values x 0 (must be positive, undefined at x=0)
_optionsSpecialUnaryOptions<S>optional
Returns
Tensor<S, 'float32'>– Tensor with Y₁(x) values (oscillatory, divergent at origin)Examples
// Oscillatory with singularity at origin
const x = torch.tensor([0.1, 1, 2, 5, 10]);
const y1 = torch.special.bessel_y1(x); // Diverges as x→0+, then oscillates
// x=0.1: very negative (→-∞), x=1: -0.781, x=10: 0.249// TE mode in open cylindrical domain (exterior)
const rho = torch.linspace(0.1, 5, 100); // Radial distance from source
const j1 = torch.special.bessel_j1(rho);
const y1 = torch.special.bessel_y1(rho);
// General TE field: E = A*J₁(kr) + B*Y₁(kr)
// Y₁ needed when field extends to infinity (exterior domain)// Line source radiation: pressure field from line monopole
const dist = torch.linspace(0.1, 10, 200); // Distance from line source
const k = 1.0; // Wavenumber
const pressure = torch.special.bessel_y0(k * dist); // Or H₁⁽¹⁾ for absorbing BC
// Y functions represent outgoing wave behavior in 2D// Derivative relationship: Y₁ and Y₀ connection
const x = torch.linspace(0.1, 8, 100);
const y0 = torch.special.bessel_y0(x);
const y1 = torch.special.bessel_y1(x);
// Verify: Y₀'(x) = -Y₁(x) + (terms)/x (derivative recurrence)See Also
- PyTorch torch.special.bessel_y1()
- torch.special.bessel_j1 - First kind order 1 (complementary)
- torch.special.bessel_y0 - Second kind order 0 (related by recurrence)
- torch.special.modified_bessel_k1 - Modified K₁, exponentially decaying analog