astro py:docs

- Index
- Modules

### Navigation

- next »
- « previous |
- Astropy v1.1.1 »
- Analytic Functions (`astropy.analytic_functions`)

# Analytic Functions (`astropy.analytic_functions`)

## Introduction

The `astropy.analytic_functions` subpackage provides analytic functions that are commonly used in astronomy. These already understand `Quantity`, i.e., they can handle units of input and output parameters.

In future versions of `astropy`, many of these might be accessible as `Model`.

## Getting Started

    >>> from astropy import units as u
    >>> from astropy.analytic_functions import blackbody_lambda, blackbody_nu

Calculate blackbody flux for 10000 K at 6000 Angstrom:

    >>> blackbody_lambda(6000 * u.AA, 10000 * u.K)
    <Quantity 15315791.836941158 erg / (Angstrom cm2 s sr)>
    >>> blackbody_nu(6000 * u.AA, 10000 * u.K)
    <Quantity 0.00018391673686797075 erg / (cm2 Hz s sr)

## Using `astropy.analytic_functions`

### Blackbody Radiation

Blackbody flux is calculated with Planck law (Rybicki & Lightman 1979):

B_{\lambda}(T) = \frac{2 h c^{2} / \lambda^{5}}{exp(h c / \lambda k T) - 1} B_{\nu}(T) = \frac{2 h \nu^{3} / c^{2}}{exp(h \nu / k T) - 1}

where the unit of B_{\lambda}(T) is erg \; s^{-1} cm^{-2} \AA^{-1} sr^{-1}, and B_{\nu}(T) is erg \; s^{-1} cm^{-2} Hz^{-1} sr^{-1}. `blackbody_lambda()` and `blackbody_nu()` calculate the blackbody flux for B_{\lambda}(T) and B_{\nu}(T), respectively.

#### Examples

    >>> import numpy as np
    >>> from astropy import units as u
    >>> from astropy.analytic_functions import blackbody_lambda, blackbody_nu

Calculate blackbody flux for 5000 K at 100 and 10000 Angstrom while suppressing any Numpy warnings:

    >>> wavelengths = [100, 10000] * u.AA
    >>> temperature = 5000 * u.K
    >>> with np.errstate(all='ignore'):
    ...     flux_lam = blackbody_lambda(wavelengths, temperature)
    ...     flux_nu = blackbody_nu(wavelengths, temperature)
    >>> flux_lam
    Quantity [1.27452545e-108, 7.10190526e+005] erg / (Angstrom cm2 s sr)>
    >>> flux_nu
    <Quantity [4.25135927e-123, 2.36894060e-005] erg / (cm2 Hz s sr)>

Plot a blackbody spectrum for 5000 K:

(Source code, png, hires.png, pdf)

Note that an array of temperatures can also be given instead of a single temperature. In this case, the Numpy broadcasting rules apply: for instance, if the frequency and temperature have the same shape, the output will have this shape too, while if the frequency is a 2-d array with shape `(n, m)` and the temperature is an array with shape `(m,)`, the output will have a shape `(n, m)`.

## See Also

Rybicki, G. B., & Lightman, A. P. 1979, Radiative Processes in Astrophysics (New York, NY: Wiley)

## Reference/API

### astropy.analytic_functions.blackbody Module

Functions related to blackbody radiation.

#### Functions

`blackbody_nu`(in_x, temperature) | Calculate blackbody flux per steradian, B_{\nu}(T).
`blackbody_lambda`(in_x, temperature) | Like `blackbody_nu()` but for B_{\lambda}(T).