mirror of
https://github.com/fjosw/pyerrors.git
synced 2025-05-14 19:43:41 +02:00
3956 lines
No EOL
367 KiB
HTML
3956 lines
No EOL
367 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="generator" content="pdoc 14.5.0"/>
|
|
<title>pyerrors.special API documentation</title>
|
|
|
|
<style>/*! * Bootstrap Reboot v5.0.0 (https://getbootstrap.com/) * Copyright 2011-2021 The Bootstrap Authors * Copyright 2011-2021 Twitter, Inc. * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) * Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md) */*,::after,::before{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;background-color:#fff;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;background-color:currentColor;border:0;opacity:.25}hr:not([size]){height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + .9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + .6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + .3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[data-bs-original-title],abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:.875em}mark{padding:.2em;background-color:#fcf8e3}sub,sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#0d6efd;text-decoration:underline}a:hover{color:#0a58ca}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em;direction:ltr;unicode-bidi:bidi-override}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:#d63384;word-wrap:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:.875em;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:1em;font-weight:700}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:.5rem;padding-bottom:.5rem;color:#6c757d;text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}tbody,td,tfoot,th,thead,tr{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]::-webkit-calendar-picker-indicator{display:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:.5rem;font-size:calc(1.275rem + .3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend+*{clear:left}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-text,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:textfield}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}</style>
|
|
<style>/*! syntax-highlighting.css */pre{line-height:125%;}span.linenos{color:inherit; background-color:transparent; padding-left:5px; padding-right:20px;}.pdoc-code .hll{background-color:#ffffcc}.pdoc-code{background:#f8f8f8;}.pdoc-code .c{color:#3D7B7B; font-style:italic}.pdoc-code .err{border:1px solid #FF0000}.pdoc-code .k{color:#008000; font-weight:bold}.pdoc-code .o{color:#666666}.pdoc-code .ch{color:#3D7B7B; font-style:italic}.pdoc-code .cm{color:#3D7B7B; font-style:italic}.pdoc-code .cp{color:#9C6500}.pdoc-code .cpf{color:#3D7B7B; font-style:italic}.pdoc-code .c1{color:#3D7B7B; font-style:italic}.pdoc-code .cs{color:#3D7B7B; font-style:italic}.pdoc-code .gd{color:#A00000}.pdoc-code .ge{font-style:italic}.pdoc-code .gr{color:#E40000}.pdoc-code .gh{color:#000080; font-weight:bold}.pdoc-code .gi{color:#008400}.pdoc-code .go{color:#717171}.pdoc-code .gp{color:#000080; font-weight:bold}.pdoc-code .gs{font-weight:bold}.pdoc-code .gu{color:#800080; font-weight:bold}.pdoc-code .gt{color:#0044DD}.pdoc-code .kc{color:#008000; font-weight:bold}.pdoc-code .kd{color:#008000; font-weight:bold}.pdoc-code .kn{color:#008000; font-weight:bold}.pdoc-code .kp{color:#008000}.pdoc-code .kr{color:#008000; font-weight:bold}.pdoc-code .kt{color:#B00040}.pdoc-code .m{color:#666666}.pdoc-code .s{color:#BA2121}.pdoc-code .na{color:#687822}.pdoc-code .nb{color:#008000}.pdoc-code .nc{color:#0000FF; font-weight:bold}.pdoc-code .no{color:#880000}.pdoc-code .nd{color:#AA22FF}.pdoc-code .ni{color:#717171; font-weight:bold}.pdoc-code .ne{color:#CB3F38; font-weight:bold}.pdoc-code .nf{color:#0000FF}.pdoc-code .nl{color:#767600}.pdoc-code .nn{color:#0000FF; font-weight:bold}.pdoc-code .nt{color:#008000; font-weight:bold}.pdoc-code .nv{color:#19177C}.pdoc-code .ow{color:#AA22FF; font-weight:bold}.pdoc-code .w{color:#bbbbbb}.pdoc-code .mb{color:#666666}.pdoc-code .mf{color:#666666}.pdoc-code .mh{color:#666666}.pdoc-code .mi{color:#666666}.pdoc-code .mo{color:#666666}.pdoc-code .sa{color:#BA2121}.pdoc-code .sb{color:#BA2121}.pdoc-code .sc{color:#BA2121}.pdoc-code .dl{color:#BA2121}.pdoc-code .sd{color:#BA2121; font-style:italic}.pdoc-code .s2{color:#BA2121}.pdoc-code .se{color:#AA5D1F; font-weight:bold}.pdoc-code .sh{color:#BA2121}.pdoc-code .si{color:#A45A77; font-weight:bold}.pdoc-code .sx{color:#008000}.pdoc-code .sr{color:#A45A77}.pdoc-code .s1{color:#BA2121}.pdoc-code .ss{color:#19177C}.pdoc-code .bp{color:#008000}.pdoc-code .fm{color:#0000FF}.pdoc-code .vc{color:#19177C}.pdoc-code .vg{color:#19177C}.pdoc-code .vi{color:#19177C}.pdoc-code .vm{color:#19177C}.pdoc-code .il{color:#666666}</style>
|
|
<style>/*! theme.css */:root{--pdoc-background:#fff;}.pdoc{--text:#212529;--muted:#6c757d;--link:#3660a5;--link-hover:#1659c5;--code:#f8f8f8;--active:#fff598;--accent:#eee;--accent2:#c1c1c1;--nav-hover:rgba(255, 255, 255, 0.5);--name:#0066BB;--def:#008800;--annotation:#007020;}</style>
|
|
<style>/*! layout.css */html, body{width:100%;height:100%;}html, main{scroll-behavior:smooth;}body{background-color:var(--pdoc-background);}@media (max-width:769px){#navtoggle{cursor:pointer;position:absolute;width:50px;height:40px;top:1rem;right:1rem;border-color:var(--text);color:var(--text);display:flex;opacity:0.8;z-index:999;}#navtoggle:hover{opacity:1;}#togglestate + div{display:none;}#togglestate:checked + div{display:inherit;}main, header{padding:2rem 3vw;}header + main{margin-top:-3rem;}.git-button{display:none !important;}nav input[type="search"]{max-width:77%;}nav input[type="search"]:first-child{margin-top:-6px;}nav input[type="search"]:valid ~ *{display:none !important;}}@media (min-width:770px){:root{--sidebar-width:clamp(12.5rem, 28vw, 22rem);}nav{position:fixed;overflow:auto;height:100vh;width:var(--sidebar-width);}main, header{padding:3rem 2rem 3rem calc(var(--sidebar-width) + 3rem);width:calc(54rem + var(--sidebar-width));max-width:100%;}header + main{margin-top:-4rem;}#navtoggle{display:none;}}#togglestate{position:absolute;height:0;opacity:0;}nav.pdoc{--pad:clamp(0.5rem, 2vw, 1.75rem);--indent:1.5rem;background-color:var(--accent);border-right:1px solid var(--accent2);box-shadow:0 0 20px rgba(50, 50, 50, .2) inset;padding:0 0 0 var(--pad);overflow-wrap:anywhere;scrollbar-width:thin; scrollbar-color:var(--accent2) transparent; z-index:1}nav.pdoc::-webkit-scrollbar{width:.4rem; }nav.pdoc::-webkit-scrollbar-thumb{background-color:var(--accent2); }nav.pdoc > div{padding:var(--pad) 0;}nav.pdoc .module-list-button{display:inline-flex;align-items:center;color:var(--text);border-color:var(--muted);margin-bottom:1rem;}nav.pdoc .module-list-button:hover{border-color:var(--text);}nav.pdoc input[type=search]{display:block;outline-offset:0;width:calc(100% - var(--pad));}nav.pdoc .logo{max-width:calc(100% - var(--pad));max-height:35vh;display:block;margin:0 auto 1rem;transform:translate(calc(-.5 * var(--pad)), 0);}nav.pdoc ul{list-style:none;padding-left:0;}nav.pdoc > div > ul{margin-left:calc(0px - var(--pad));}nav.pdoc li a{padding:.2rem 0 .2rem calc(var(--pad) + var(--indent));}nav.pdoc > div > ul > li > a{padding-left:var(--pad);}nav.pdoc li{transition:all 100ms;}nav.pdoc li:hover{background-color:var(--nav-hover);}nav.pdoc a, nav.pdoc a:hover{color:var(--text);}nav.pdoc a{display:block;}nav.pdoc > h2:first-of-type{margin-top:1.5rem;}nav.pdoc .class:before{content:"class ";color:var(--muted);}nav.pdoc .function:after{content:"()";color:var(--muted);}nav.pdoc footer:before{content:"";display:block;width:calc(100% - var(--pad));border-top:solid var(--accent2) 1px;margin-top:1.5rem;padding-top:.5rem;}nav.pdoc footer{font-size:small;}</style>
|
|
<style>/*! content.css */.pdoc{color:var(--text);box-sizing:border-box;line-height:1.5;background:none;}.pdoc .pdoc-button{cursor:pointer;display:inline-block;border:solid black 1px;border-radius:2px;font-size:.75rem;padding:calc(0.5em - 1px) 1em;transition:100ms all;}.pdoc .pdoc-alert{padding:1rem 1rem 1rem calc(1.5rem + 24px);border:1px solid transparent;border-radius:.25rem;background-repeat:no-repeat;background-position:1rem center;margin-bottom:1rem;}.pdoc .pdoc-alert > *:last-child{margin-bottom:0;}.pdoc .pdoc-alert-note {color:#084298;background-color:#cfe2ff;border-color:#b6d4fe;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23084298%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8%2016A8%208%200%201%200%208%200a8%208%200%200%200%200%2016zm.93-9.412-1%204.705c-.07.34.029.533.304.533.194%200%20.487-.07.686-.246l-.088.416c-.287.346-.92.598-1.465.598-.703%200-1.002-.422-.808-1.319l.738-3.468c.064-.293.006-.399-.287-.47l-.451-.081.082-.381%202.29-.287zM8%205.5a1%201%200%201%201%200-2%201%201%200%200%201%200%202z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-warning{color:#664d03;background-color:#fff3cd;border-color:#ffecb5;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23664d03%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M8.982%201.566a1.13%201.13%200%200%200-1.96%200L.165%2013.233c-.457.778.091%201.767.98%201.767h13.713c.889%200%201.438-.99.98-1.767L8.982%201.566zM8%205c.535%200%20.954.462.9.995l-.35%203.507a.552.552%200%200%201-1.1%200L7.1%205.995A.905.905%200%200%201%208%205zm.002%206a1%201%200%201%201%200%202%201%201%200%200%201%200-2z%22/%3E%3C/svg%3E");}.pdoc .pdoc-alert-danger{color:#842029;background-color:#f8d7da;border-color:#f5c2c7;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22%23842029%22%20viewBox%3D%220%200%2016%2016%22%3E%3Cpath%20d%3D%22M5.52.359A.5.5%200%200%201%206%200h4a.5.5%200%200%201%20.474.658L8.694%206H12.5a.5.5%200%200%201%20.395.807l-7%209a.5.5%200%200%201-.873-.454L6.823%209.5H3.5a.5.5%200%200%201-.48-.641l2.5-8.5z%22/%3E%3C/svg%3E");}.pdoc .visually-hidden{position:absolute !important;width:1px !important;height:1px !important;padding:0 !important;margin:-1px !important;overflow:hidden !important;clip:rect(0, 0, 0, 0) !important;white-space:nowrap !important;border:0 !important;}.pdoc h1, .pdoc h2, .pdoc h3{font-weight:300;margin:.3em 0;padding:.2em 0;}.pdoc > section:not(.module-info) h1{font-size:1.5rem;font-weight:500;}.pdoc > section:not(.module-info) h2{font-size:1.4rem;font-weight:500;}.pdoc > section:not(.module-info) h3{font-size:1.3rem;font-weight:500;}.pdoc > section:not(.module-info) h4{font-size:1.2rem;}.pdoc > section:not(.module-info) h5{font-size:1.1rem;}.pdoc a{text-decoration:none;color:var(--link);}.pdoc a:hover{color:var(--link-hover);}.pdoc blockquote{margin-left:2rem;}.pdoc pre{border-top:1px solid var(--accent2);border-bottom:1px solid var(--accent2);margin-top:0;margin-bottom:1em;padding:.5rem 0 .5rem .5rem;overflow-x:auto;background-color:var(--code);}.pdoc code{color:var(--text);padding:.2em .4em;margin:0;font-size:85%;background-color:var(--accent);border-radius:6px;}.pdoc a > code{color:inherit;}.pdoc pre > code{display:inline-block;font-size:inherit;background:none;border:none;padding:0;}.pdoc > section:not(.module-info){margin-bottom:1.5rem;}.pdoc .modulename{margin-top:0;font-weight:bold;}.pdoc .modulename a{color:var(--link);transition:100ms all;}.pdoc .git-button{float:right;border:solid var(--link) 1px;}.pdoc .git-button:hover{background-color:var(--link);color:var(--pdoc-background);}.view-source-toggle-state,.view-source-toggle-state ~ .pdoc-code{display:none;}.view-source-toggle-state:checked ~ .pdoc-code{display:block;}.view-source-button{display:inline-block;float:right;font-size:.75rem;line-height:1.5rem;color:var(--muted);padding:0 .4rem 0 1.3rem;cursor:pointer;text-indent:-2px;}.view-source-button > span{visibility:hidden;}.module-info .view-source-button{float:none;display:flex;justify-content:flex-end;margin:-1.2rem .4rem -.2rem 0;}.view-source-button::before{position:absolute;content:"View Source";display:list-item;list-style-type:disclosure-closed;}.view-source-toggle-state:checked ~ .attr .view-source-button::before,.view-source-toggle-state:checked ~ .view-source-button::before{list-style-type:disclosure-open;}.pdoc .docstring{margin-bottom:1.5rem;}.pdoc section:not(.module-info) .docstring{margin-left:clamp(0rem, 5vw - 2rem, 1rem);}.pdoc .docstring .pdoc-code{margin-left:1em;margin-right:1em;}.pdoc h1:target,.pdoc h2:target,.pdoc h3:target,.pdoc h4:target,.pdoc h5:target,.pdoc h6:target,.pdoc .pdoc-code > pre > span:target{background-color:var(--active);box-shadow:-1rem 0 0 0 var(--active);}.pdoc .pdoc-code > pre > span:target{display:block;}.pdoc div:target > .attr,.pdoc section:target > .attr,.pdoc dd:target > a{background-color:var(--active);}.pdoc *{scroll-margin:2rem;}.pdoc .pdoc-code .linenos{user-select:none;}.pdoc .attr:hover{filter:contrast(0.95);}.pdoc section, .pdoc .classattr{position:relative;}.pdoc .headerlink{--width:clamp(1rem, 3vw, 2rem);position:absolute;top:0;left:calc(0rem - var(--width));transition:all 100ms ease-in-out;opacity:0;}.pdoc .headerlink::before{content:"#";display:block;text-align:center;width:var(--width);height:2.3rem;line-height:2.3rem;font-size:1.5rem;}.pdoc .attr:hover ~ .headerlink,.pdoc *:target > .headerlink,.pdoc .headerlink:hover{opacity:1;}.pdoc .attr{display:block;margin:.5rem 0 .5rem;padding:.4rem .4rem .4rem 1rem;background-color:var(--accent);overflow-x:auto;}.pdoc .classattr{margin-left:2rem;}.pdoc .name{color:var(--name);font-weight:bold;}.pdoc .def{color:var(--def);font-weight:bold;}.pdoc .signature{background-color:transparent;}.pdoc .param, .pdoc .return-annotation{white-space:pre;}.pdoc .signature.multiline .param{display:block;}.pdoc .signature.condensed .param{display:inline-block;}.pdoc .annotation{color:var(--annotation);}.pdoc .view-value-toggle-state,.pdoc .view-value-toggle-state ~ .default_value{display:none;}.pdoc .view-value-toggle-state:checked ~ .default_value{display:inherit;}.pdoc .view-value-button{font-size:.5rem;vertical-align:middle;border-style:dashed;margin-top:-0.1rem;}.pdoc .view-value-button:hover{background:white;}.pdoc .view-value-button::before{content:"show";text-align:center;width:2.2em;display:inline-block;}.pdoc .view-value-toggle-state:checked ~ .view-value-button::before{content:"hide";}.pdoc .inherited{margin-left:2rem;}.pdoc .inherited dt{font-weight:700;}.pdoc .inherited dt, .pdoc .inherited dd{display:inline;margin-left:0;margin-bottom:.5rem;}.pdoc .inherited dd:not(:last-child):after{content:", ";}.pdoc .inherited .class:before{content:"class ";}.pdoc .inherited .function a:after{content:"()";}.pdoc .search-result .docstring{overflow:auto;max-height:25vh;}.pdoc .search-result.focused > .attr{background-color:var(--active);}.pdoc .attribution{margin-top:2rem;display:block;opacity:0.5;transition:all 200ms;filter:grayscale(100%);}.pdoc .attribution:hover{opacity:1;filter:grayscale(0%);}.pdoc .attribution img{margin-left:5px;height:35px;vertical-align:middle;width:70px;transition:all 200ms;}.pdoc table{display:block;width:max-content;max-width:100%;overflow:auto;margin-bottom:1rem;}.pdoc table th{font-weight:600;}.pdoc table th, .pdoc table td{padding:6px 13px;border:1px solid var(--accent2);}</style>
|
|
<style>/*! custom.css */</style><script>
|
|
window.MathJax = {
|
|
tex: {
|
|
inlineMath: [['$', '$'], ['\\(', '\\)']]
|
|
}
|
|
};
|
|
</script>
|
|
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
|
|
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
|
|
<script>
|
|
/* Re-invoke MathJax when DOM content changes, for example during search. */
|
|
document.addEventListener("DOMContentLoaded", () => {
|
|
new MutationObserver(() => MathJax.typeset()).observe(
|
|
document.querySelector("main.pdoc").parentNode,
|
|
{childList: true}
|
|
);
|
|
})
|
|
</script>
|
|
<style>
|
|
mjx-container {
|
|
overflow-x: auto;
|
|
overflow-y: hidden;
|
|
}
|
|
</style></head>
|
|
<body>
|
|
<nav class="pdoc">
|
|
<label id="navtoggle" for="togglestate" class="pdoc-button"><svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'><path stroke-linecap='round' stroke="currentColor" stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/></svg></label>
|
|
<input id="togglestate" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div> <a class="pdoc-button module-list-button" href="../pyerrors.html">
|
|
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-box-arrow-in-left" viewBox="0 0 16 16">
|
|
<path fill-rule="evenodd" d="M10 3.5a.5.5 0 0 0-.5-.5h-8a.5.5 0 0 0-.5.5v9a.5.5 0 0 0 .5.5h8a.5.5 0 0 0 .5-.5v-2a.5.5 0 0 1 1 0v2A1.5 1.5 0 0 1 9.5 14h-8A1.5 1.5 0 0 1 0 12.5v-9A1.5 1.5 0 0 1 1.5 2h8A1.5 1.5 0 0 1 11 3.5v2a.5.5 0 0 1-1 0v-2z"/>
|
|
<path fill-rule="evenodd" d="M4.146 8.354a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L5.707 7.5H14.5a.5.5 0 0 1 0 1H5.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3z"/>
|
|
</svg> pyerrors</a>
|
|
|
|
|
|
<input type="search" placeholder="Search..." role="searchbox" aria-label="search"
|
|
pattern=".+" required>
|
|
|
|
|
|
|
|
<h2>API Documentation</h2>
|
|
<ul class="memberlist">
|
|
<li>
|
|
<a class="function" href="#beta">beta</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#betainc">betainc</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#betaln">betaln</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#polygamma">polygamma</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#psi">psi</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#digamma">digamma</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#gamma">gamma</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#gammaln">gammaln</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#gammainc">gammainc</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#gammaincc">gammaincc</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#gammasgn">gammasgn</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#rgamma">rgamma</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#multigammaln">multigammaln</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#kn">kn</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#j0">j0</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#y0">y0</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#j1">j1</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#y1">y1</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#jn">jn</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#yn">yn</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#i0">i0</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#i1">i1</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#iv">iv</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#ive">ive</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#erf">erf</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#erfc">erfc</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#erfinv">erfinv</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#erfcinv">erfcinv</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#logit">logit</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#expit">expit</a>
|
|
</li>
|
|
<li>
|
|
<a class="function" href="#logsumexp">logsumexp</a>
|
|
</li>
|
|
</ul>
|
|
|
|
|
|
|
|
<a class="attribution" title="pdoc: Python API documentation generator" href="https://pdoc.dev" target="_blank">
|
|
built with <span class="visually-hidden">pdoc</span><img
|
|
alt="pdoc logo"
|
|
src="data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20role%3D%22img%22%20aria-label%3D%22pdoc%20logo%22%20width%3D%22300%22%20height%3D%22150%22%20viewBox%3D%22-1%200%2060%2030%22%3E%3Ctitle%3Epdoc%3C/title%3E%3Cpath%20d%3D%22M29.621%2021.293c-.011-.273-.214-.475-.511-.481a.5.5%200%200%200-.489.503l-.044%201.393c-.097.551-.695%201.215-1.566%201.704-.577.428-1.306.486-2.193.182-1.426-.617-2.467-1.654-3.304-2.487l-.173-.172a3.43%203.43%200%200%200-.365-.306.49.49%200%200%200-.286-.196c-1.718-1.06-4.931-1.47-7.353.191l-.219.15c-1.707%201.187-3.413%202.131-4.328%201.03-.02-.027-.49-.685-.141-1.763.233-.721.546-2.408.772-4.076.042-.09.067-.187.046-.288.166-1.347.277-2.625.241-3.351%201.378-1.008%202.271-2.586%202.271-4.362%200-.976-.272-1.935-.788-2.774-.057-.094-.122-.18-.184-.268.033-.167.052-.339.052-.516%200-1.477-1.202-2.679-2.679-2.679-.791%200-1.496.352-1.987.9a6.3%206.3%200%200%200-1.001.029c-.492-.564-1.207-.929-2.012-.929-1.477%200-2.679%201.202-2.679%202.679A2.65%202.65%200%200%200%20.97%206.554c-.383.747-.595%201.572-.595%202.41%200%202.311%201.507%204.29%203.635%205.107-.037.699-.147%202.27-.423%203.294l-.137.461c-.622%202.042-2.515%208.257%201.727%2010.643%201.614.908%203.06%201.248%204.317%201.248%202.665%200%204.492-1.524%205.322-2.401%201.476-1.559%202.886-1.854%206.491.82%201.877%201.393%203.514%201.753%204.861%201.068%202.223-1.713%202.811-3.867%203.399-6.374.077-.846.056-1.469.054-1.537zm-4.835%204.313c-.054.305-.156.586-.242.629-.034-.007-.131-.022-.307-.157-.145-.111-.314-.478-.456-.908.221.121.432.25.675.355.115.039.219.051.33.081zm-2.251-1.238c-.05.33-.158.648-.252.694-.022.001-.125-.018-.307-.157-.217-.166-.488-.906-.639-1.573.358.344.754.693%201.198%201.036zm-3.887-2.337c-.006-.116-.018-.231-.041-.342.635.145%201.189.368%201.599.625.097.231.166.481.174.642-.03.049-.055.101-.067.158-.046.013-.128.026-.298.004-.278-.037-.901-.57-1.367-1.087zm-1.127-.497c.116.306.176.625.12.71-.019.014-.117.045-.345.016-.206-.027-.604-.332-.986-.695.41-.051.816-.056%201.211-.031zm-4.535%201.535c.209.22.379.47.358.598-.006.041-.088.138-.351.234-.144.055-.539-.063-.979-.259a11.66%2011.66%200%200%200%20.972-.573zm.983-.664c.359-.237.738-.418%201.126-.554.25.237.479.548.457.694-.006.042-.087.138-.351.235-.174.064-.694-.105-1.232-.375zm-3.381%201.794c-.022.145-.061.29-.149.401-.133.166-.358.248-.69.251h-.002c-.133%200-.306-.26-.45-.621.417.091.854.07%201.291-.031zm-2.066-8.077a4.78%204.78%200%200%201-.775-.584c.172-.115.505-.254.88-.378l-.105.962zm-.331%202.302a10.32%2010.32%200%200%201-.828-.502c.202-.143.576-.328.984-.49l-.156.992zm-.45%202.157l-.701-.403c.214-.115.536-.249.891-.376a11.57%2011.57%200%200%201-.19.779zm-.181%201.716c.064.398.194.702.298.893-.194-.051-.435-.162-.736-.398.061-.119.224-.3.438-.495zM8.87%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zm-.735-.389a1.15%201.15%200%200%200-.314.783%201.16%201.16%200%200%200%201.162%201.162c.457%200%20.842-.27%201.032-.653.026.117.042.238.042.362a1.68%201.68%200%200%201-1.679%201.679%201.68%201.68%200%200%201-1.679-1.679c0-.843.626-1.535%201.436-1.654zM5.059%205.406A1.68%201.68%200%200%201%203.38%207.085a1.68%201.68%200%200%201-1.679-1.679c0-.037.009-.072.011-.109.21.3.541.508.935.508a1.16%201.16%200%200%200%201.162-1.162%201.14%201.14%200%200%200-.474-.912c.015%200%20.03-.005.045-.005.926.001%201.679.754%201.679%201.68zM3.198%204.141c0%20.152-.123.276-.276.276s-.275-.124-.275-.276.123-.276.276-.276.275.124.275.276zM1.375%208.964c0-.52.103-1.035.288-1.52.466.394%201.06.64%201.717.64%201.144%200%202.116-.725%202.499-1.738.383%201.012%201.355%201.738%202.499%201.738.867%200%201.631-.421%202.121-1.062.307.605.478%201.267.478%201.942%200%202.486-2.153%204.51-4.801%204.51s-4.801-2.023-4.801-4.51zm24.342%2019.349c-.985.498-2.267.168-3.813-.979-3.073-2.281-5.453-3.199-7.813-.705-1.315%201.391-4.163%203.365-8.423.97-3.174-1.786-2.239-6.266-1.261-9.479l.146-.492c.276-1.02.395-2.457.444-3.268a6.11%206.11%200%200%200%201.18.115%206.01%206.01%200%200%200%202.536-.562l-.006.175c-.802.215-1.848.612-2.021%201.25-.079.295.021.601.274.837.219.203.415.364.598.501-.667.304-1.243.698-1.311%201.179-.02.144-.022.507.393.787.213.144.395.26.564.365-1.285.521-1.361.96-1.381%201.126-.018.142-.011.496.427.746l.854.489c-.473.389-.971.914-.999%201.429-.018.278.095.532.316.713.675.556%201.231.721%201.653.721.059%200%20.104-.014.158-.02.207.707.641%201.64%201.513%201.64h.013c.8-.008%201.236-.345%201.462-.626.173-.216.268-.457.325-.692.424.195.93.374%201.372.374.151%200%20.294-.021.423-.068.732-.27.944-.704.993-1.021.009-.061.003-.119.002-.179.266.086.538.147.789.147.15%200%20.294-.021.423-.069.542-.2.797-.489.914-.754.237.147.478.258.704.288.106.014.205.021.296.021.356%200%20.595-.101.767-.229.438.435%201.094.992%201.656%201.067.106.014.205.021.296.021a1.56%201.56%200%200%200%20.323-.035c.17.575.453%201.289.866%201.605.358.273.665.362.914.362a.99.99%200%200%200%20.421-.093%201.03%201.03%200%200%200%20.245-.164c.168.428.39.846.68%201.068.358.273.665.362.913.362a.99.99%200%200%200%20.421-.093c.317-.148.512-.448.639-.762.251.157.495.257.726.257.127%200%20.25-.024.37-.071.427-.17.706-.617.841-1.314.022-.015.047-.022.068-.038.067-.051.133-.104.196-.159-.443%201.486-1.107%202.761-2.086%203.257zM8.66%209.925a.5.5%200%201%200-1%200c0%20.653-.818%201.205-1.787%201.205s-1.787-.552-1.787-1.205a.5.5%200%201%200-1%200c0%201.216%201.25%202.205%202.787%202.205s2.787-.989%202.787-2.205zm4.4%2015.965l-.208.097c-2.661%201.258-4.708%201.436-6.086.527-1.542-1.017-1.88-3.19-1.844-4.198a.4.4%200%200%200-.385-.414c-.242-.029-.406.164-.414.385-.046%201.249.367%203.686%202.202%204.896.708.467%201.547.7%202.51.7%201.248%200%202.706-.392%204.362-1.174l.185-.086a.4.4%200%200%200%20.205-.527c-.089-.204-.326-.291-.527-.206zM9.547%202.292c.093.077.205.114.317.114a.5.5%200%200%200%20.318-.886L8.817.397a.5.5%200%200%200-.703.068.5.5%200%200%200%20.069.703l1.364%201.124zm-7.661-.065c.086%200%20.173-.022.253-.068l1.523-.893a.5.5%200%200%200-.506-.863l-1.523.892a.5.5%200%200%200-.179.685c.094.158.261.247.432.247z%22%20transform%3D%22matrix%28-1%200%200%201%2058%200%29%22%20fill%3D%22%233bb300%22/%3E%3Cpath%20d%3D%22M.3%2021.86V10.18q0-.46.02-.68.04-.22.18-.5.28-.54%201.34-.54%201.06%200%201.42.28.38.26.44.78.76-1.04%202.38-1.04%201.64%200%203.1%201.54%201.46%201.54%201.46%203.58%200%202.04-1.46%203.58-1.44%201.54-3.08%201.54-1.64%200-2.38-.92v4.04q0%20.46-.04.68-.02.22-.18.5-.14.3-.5.42-.36.12-.98.12-.62%200-1-.12-.36-.12-.52-.4-.14-.28-.18-.5-.02-.22-.02-.68zm3.96-9.42q-.46.54-.46%201.18%200%20.64.46%201.18.48.52%201.2.52.74%200%201.24-.52.52-.52.52-1.18%200-.66-.48-1.18-.48-.54-1.26-.54-.76%200-1.22.54zm14.741-8.36q.16-.3.54-.42.38-.12%201-.12.64%200%201.02.12.38.12.52.42.16.3.18.54.04.22.04.68v11.94q0%20.46-.04.7-.02.22-.18.5-.3.54-1.7.54-1.38%200-1.54-.98-.84.96-2.34.96-1.8%200-3.28-1.56-1.48-1.58-1.48-3.66%200-2.1%201.48-3.68%201.5-1.58%203.28-1.58%201.48%200%202.3%201v-4.2q0-.46.02-.68.04-.24.18-.52zm-3.24%2010.86q.52.54%201.26.54.74%200%201.22-.54.5-.54.5-1.18%200-.66-.48-1.22-.46-.56-1.26-.56-.8%200-1.28.56-.48.54-.48%201.2%200%20.66.52%201.2zm7.833-1.2q0-2.4%201.68-3.96%201.68-1.56%203.84-1.56%202.16%200%203.82%201.56%201.66%201.54%201.66%203.94%200%201.66-.86%202.96-.86%201.28-2.1%201.9-1.22.6-2.54.6-1.32%200-2.56-.64-1.24-.66-2.1-1.92-.84-1.28-.84-2.88zm4.18%201.44q.64.48%201.3.48.66%200%201.32-.5.66-.5.66-1.48%200-.98-.62-1.46-.62-.48-1.34-.48-.72%200-1.34.5-.62.5-.62%201.48%200%20.96.64%201.46zm11.412-1.44q0%20.84.56%201.32.56.46%201.18.46.64%200%201.18-.36.56-.38.9-.38.6%200%201.46%201.06.46.58.46%201.04%200%20.76-1.1%201.42-1.14.8-2.8.8-1.86%200-3.58-1.34-.82-.64-1.34-1.7-.52-1.08-.52-2.36%200-1.3.52-2.34.52-1.06%201.34-1.7%201.66-1.32%203.54-1.32.76%200%201.48.22.72.2%201.06.4l.32.2q.36.24.56.38.52.4.52.92%200%20.5-.42%201.14-.72%201.1-1.38%201.1-.38%200-1.08-.44-.36-.34-1.04-.34-.66%200-1.24.48-.58.48-.58%201.34z%22%20fill%3D%22green%22/%3E%3C/svg%3E"/>
|
|
</a>
|
|
</div>
|
|
</nav>
|
|
<main class="pdoc">
|
|
<section class="module-info">
|
|
<h1 class="modulename">
|
|
<a href="./../pyerrors.html">pyerrors</a><wbr>.special </h1>
|
|
|
|
|
|
<input id="mod-special-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
|
|
<label class="view-source-button" for="mod-special-view-source"><span>View Source</span></label>
|
|
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="L-1"><a href="#L-1"><span class="linenos"> 1</span></a><span class="kn">import</span> <span class="nn">scipy</span>
|
|
</span><span id="L-2"><a href="#L-2"><span class="linenos"> 2</span></a><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
</span><span id="L-3"><a href="#L-3"><span class="linenos"> 3</span></a><span class="kn">from</span> <span class="nn">autograd.extend</span> <span class="kn">import</span> <span class="n">primitive</span><span class="p">,</span> <span class="n">defvjp</span>
|
|
</span><span id="L-4"><a href="#L-4"><span class="linenos"> 4</span></a><span class="kn">from</span> <span class="nn">autograd.scipy.special</span> <span class="kn">import</span> <span class="n">j0</span><span class="p">,</span> <span class="n">y0</span><span class="p">,</span> <span class="n">j1</span><span class="p">,</span> <span class="n">y1</span><span class="p">,</span> <span class="n">jn</span><span class="p">,</span> <span class="n">yn</span><span class="p">,</span> <span class="n">i0</span><span class="p">,</span> <span class="n">i1</span><span class="p">,</span> <span class="n">iv</span><span class="p">,</span> <span class="n">ive</span><span class="p">,</span> <span class="n">beta</span><span class="p">,</span> <span class="n">betainc</span><span class="p">,</span> <span class="n">betaln</span>
|
|
</span><span id="L-5"><a href="#L-5"><span class="linenos"> 5</span></a><span class="kn">from</span> <span class="nn">autograd.scipy.special</span> <span class="kn">import</span> <span class="n">polygamma</span><span class="p">,</span> <span class="n">psi</span><span class="p">,</span> <span class="n">digamma</span><span class="p">,</span> <span class="n">gamma</span><span class="p">,</span> <span class="n">gammaln</span><span class="p">,</span> <span class="n">gammainc</span><span class="p">,</span> <span class="n">gammaincc</span><span class="p">,</span> <span class="n">gammasgn</span><span class="p">,</span> <span class="n">rgamma</span><span class="p">,</span> <span class="n">multigammaln</span>
|
|
</span><span id="L-6"><a href="#L-6"><span class="linenos"> 6</span></a><span class="kn">from</span> <span class="nn">autograd.scipy.special</span> <span class="kn">import</span> <span class="n">erf</span><span class="p">,</span> <span class="n">erfc</span><span class="p">,</span> <span class="n">erfinv</span><span class="p">,</span> <span class="n">erfcinv</span><span class="p">,</span> <span class="n">logit</span><span class="p">,</span> <span class="n">expit</span><span class="p">,</span> <span class="n">logsumexp</span>
|
|
</span><span id="L-7"><a href="#L-7"><span class="linenos"> 7</span></a>
|
|
</span><span id="L-8"><a href="#L-8"><span class="linenos"> 8</span></a>
|
|
</span><span id="L-9"><a href="#L-9"><span class="linenos"> 9</span></a><span class="n">__all__</span> <span class="o">=</span> <span class="p">[</span><span class="s2">"beta"</span><span class="p">,</span> <span class="s2">"betainc"</span><span class="p">,</span> <span class="s2">"betaln"</span><span class="p">,</span>
|
|
</span><span id="L-10"><a href="#L-10"><span class="linenos">10</span></a> <span class="s2">"polygamma"</span><span class="p">,</span> <span class="s2">"psi"</span><span class="p">,</span> <span class="s2">"digamma"</span><span class="p">,</span> <span class="s2">"gamma"</span><span class="p">,</span> <span class="s2">"gammaln"</span><span class="p">,</span> <span class="s2">"gammainc"</span><span class="p">,</span> <span class="s2">"gammaincc"</span><span class="p">,</span> <span class="s2">"gammasgn"</span><span class="p">,</span> <span class="s2">"rgamma"</span><span class="p">,</span> <span class="s2">"multigammaln"</span><span class="p">,</span>
|
|
</span><span id="L-11"><a href="#L-11"><span class="linenos">11</span></a> <span class="s2">"kn"</span><span class="p">,</span> <span class="s2">"j0"</span><span class="p">,</span> <span class="s2">"y0"</span><span class="p">,</span> <span class="s2">"j1"</span><span class="p">,</span> <span class="s2">"y1"</span><span class="p">,</span> <span class="s2">"jn"</span><span class="p">,</span> <span class="s2">"yn"</span><span class="p">,</span> <span class="s2">"i0"</span><span class="p">,</span> <span class="s2">"i1"</span><span class="p">,</span> <span class="s2">"iv"</span><span class="p">,</span> <span class="s2">"ive"</span><span class="p">,</span>
|
|
</span><span id="L-12"><a href="#L-12"><span class="linenos">12</span></a> <span class="s2">"erf"</span><span class="p">,</span> <span class="s2">"erfc"</span><span class="p">,</span> <span class="s2">"erfinv"</span><span class="p">,</span> <span class="s2">"erfcinv"</span><span class="p">,</span> <span class="s2">"logit"</span><span class="p">,</span> <span class="s2">"expit"</span><span class="p">,</span> <span class="s2">"logsumexp"</span><span class="p">]</span>
|
|
</span><span id="L-13"><a href="#L-13"><span class="linenos">13</span></a>
|
|
</span><span id="L-14"><a href="#L-14"><span class="linenos">14</span></a>
|
|
</span><span id="L-15"><a href="#L-15"><span class="linenos">15</span></a><span class="nd">@primitive</span>
|
|
</span><span id="L-16"><a href="#L-16"><span class="linenos">16</span></a><span class="k">def</span> <span class="nf">kn</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">x</span><span class="p">):</span>
|
|
</span><span id="L-17"><a href="#L-17"><span class="linenos">17</span></a><span class="w"> </span><span class="sd">"""Modified Bessel function of the second kind of integer order n"""</span>
|
|
</span><span id="L-18"><a href="#L-18"><span class="linenos">18</span></a> <span class="k">if</span> <span class="nb">int</span><span class="p">(</span><span class="n">n</span><span class="p">)</span> <span class="o">!=</span> <span class="n">n</span><span class="p">:</span>
|
|
</span><span id="L-19"><a href="#L-19"><span class="linenos">19</span></a> <span class="k">raise</span> <span class="ne">TypeError</span><span class="p">(</span><span class="s2">"The order 'n' needs to be an integer."</span><span class="p">)</span>
|
|
</span><span id="L-20"><a href="#L-20"><span class="linenos">20</span></a> <span class="k">return</span> <span class="n">scipy</span><span class="o">.</span><span class="n">special</span><span class="o">.</span><span class="n">kn</span><span class="p">(</span><span class="n">n</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
|
</span><span id="L-21"><a href="#L-21"><span class="linenos">21</span></a>
|
|
</span><span id="L-22"><a href="#L-22"><span class="linenos">22</span></a>
|
|
</span><span id="L-23"><a href="#L-23"><span class="linenos">23</span></a><span class="n">defvjp</span><span class="p">(</span><span class="n">kn</span><span class="p">,</span> <span class="kc">None</span><span class="p">,</span> <span class="k">lambda</span> <span class="n">ans</span><span class="p">,</span> <span class="n">n</span><span class="p">,</span> <span class="n">x</span><span class="p">:</span> <span class="k">lambda</span> <span class="n">g</span><span class="p">:</span> <span class="o">-</span> <span class="n">g</span> <span class="o">*</span> <span class="mf">0.5</span> <span class="o">*</span> <span class="p">(</span><span class="n">kn</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">abs</span><span class="p">(</span><span class="n">n</span> <span class="o">-</span> <span class="mi">1</span><span class="p">),</span> <span class="n">x</span><span class="p">)</span> <span class="o">+</span> <span class="n">kn</span><span class="p">(</span><span class="n">n</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">x</span><span class="p">)))</span>
|
|
</span></pre></div>
|
|
|
|
|
|
</section>
|
|
<section id="beta">
|
|
<input id="beta-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">beta</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="beta-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#beta"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="beta-36"><a href="#beta-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="beta-37"><a href="#beta-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="beta-38"><a href="#beta-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="beta-39"><a href="#beta-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="beta-40"><a href="#beta-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="beta-41"><a href="#beta-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="beta-42"><a href="#beta-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="beta-43"><a href="#beta-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="beta-44"><a href="#beta-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="beta-45"><a href="#beta-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="beta-46"><a href="#beta-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="beta-47"><a href="#beta-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="beta-48"><a href="#beta-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="beta-49"><a href="#beta-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>beta(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>beta(a, b, out=None)</p>
|
|
|
|
<p>Beta function.</p>
|
|
|
|
<p>This function is defined in <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> as</p>
|
|
|
|
<p>$$B(a, b) = \int_0^1 t^{a-1}(1-t)^{b-1}dt
|
|
= \frac{\Gamma(a)\Gamma(b)}{\Gamma(a+b)},$$</p>
|
|
|
|
<p>where \( \Gamma \) is the gamma function.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>a, b</strong> (array_like):
|
|
Real-valued arguments</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function result</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Value of the beta function</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#gamma">gamma</a></code>: the gamma function <br />
|
|
<code><a href="#betainc">betainc</a></code>: the regularized incomplete beta function <br />
|
|
<code><a href="#betaln">betaln</a></code>: the natural logarithm of the absolute
|
|
value of the beta function </p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>The beta function relates to the gamma function by the
|
|
definition given above:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
|
<span class="go">0.08333333333333333</span>
|
|
<span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">(</span><span class="mi">2</span><span class="p">)</span><span class="o">*</span><span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">(</span><span class="mi">3</span><span class="p">)</span><span class="o">/</span><span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">(</span><span class="mi">2</span> <span class="o">+</span> <span class="mi">3</span><span class="p">)</span>
|
|
<span class="go">0.08333333333333333</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>As this relationship demonstrates, the beta function
|
|
is symmetric:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="mf">1.7</span><span class="p">,</span> <span class="mf">2.4</span><span class="p">)</span>
|
|
<span class="go">0.16567527689031739</span>
|
|
<span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="mf">2.4</span><span class="p">,</span> <span class="mf">1.7</span><span class="p">)</span>
|
|
<span class="go">0.16567527689031739</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>This function satisfies \( B(1, b) = 1/b \):</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
|
|
<span class="go">0.25</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>NIST Digital Library of Mathematical Functions,
|
|
Eq. 5.12.1. <a href="https://dlmf.nist.gov/5.12">https://dlmf.nist.gov/5.12</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="betainc">
|
|
<input id="betainc-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">betainc</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="betainc-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#betainc"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="betainc-36"><a href="#betainc-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="betainc-37"><a href="#betainc-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="betainc-38"><a href="#betainc-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="betainc-39"><a href="#betainc-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="betainc-40"><a href="#betainc-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="betainc-41"><a href="#betainc-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="betainc-42"><a href="#betainc-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="betainc-43"><a href="#betainc-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="betainc-44"><a href="#betainc-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="betainc-45"><a href="#betainc-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="betainc-46"><a href="#betainc-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="betainc-47"><a href="#betainc-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="betainc-48"><a href="#betainc-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="betainc-49"><a href="#betainc-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>betainc(x1, x2, x3, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>betainc(a, b, x, out=None)</p>
|
|
|
|
<p>Regularized incomplete beta function.</p>
|
|
|
|
<p>Computes the regularized incomplete beta function, defined as <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>:</p>
|
|
|
|
<p>$$I_x(a, b) = \frac{\Gamma(a+b)}{\Gamma(a)\Gamma(b)} \int_0^x
|
|
t^{a-1}(1-t)^{b-1}dt,$$</p>
|
|
|
|
<p>for \( 0 \leq x \leq 1 \).</p>
|
|
|
|
<p>This function is the cumulative distribution function for the beta
|
|
distribution; its range is [0, 1].</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>a, b</strong> (array_like):
|
|
Positive, real-valued parameters</li>
|
|
<li><strong>x</strong> (array_like):
|
|
Real-valued such that \( 0 \leq x \leq 1 \),
|
|
the upper limit of integration</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Value of the regularized incomplete beta function</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#beta">beta</a></code>: beta function <br />
|
|
<code>betaincinv</code>: inverse of the regularized incomplete beta function <br />
|
|
<code>betaincc</code>: complement of the regularized incomplete beta function <br />
|
|
<code>scipy.stats.beta</code>: beta distribution </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The term <em>regularized</em> in the name of this function refers to the
|
|
scaling of the function by the gamma function terms shown in the
|
|
formula. When not qualified as <em>regularized</em>, the name <em>incomplete
|
|
beta function</em> often refers to just the integral expression,
|
|
without the gamma terms. One can use the function <code><a href="#beta">beta</a></code> from
|
|
<code>scipy.special</code> to get this "nonregularized" incomplete beta
|
|
function by multiplying the result of <code>betainc(a, b, x)</code> by
|
|
<code>beta(a, b)</code>.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Let \( B(a, b) \) be the <code><a href="#beta">beta</a></code> function.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>The coefficient in terms of <code><a href="#gamma">gamma</a></code> is equal to
|
|
\( 1/B(a, b) \). Also, when \( x=1 \)
|
|
the integral is equal to \( B(a, b) \).
|
|
Therefore, \( I_{x=1}(a, b) = 1 \) for any \( a, b \).</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">betainc</span><span class="p">(</span><span class="mf">0.2</span><span class="p">,</span> <span class="mf">3.5</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">)</span>
|
|
<span class="go">1.0</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It satisfies
|
|
\( I_x(a, b) = x^a F(a, 1-b, a+1, x)/ (aB(a, b)) \),
|
|
where \( F \) is the hypergeometric function <code>hyp2f1</code>:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">x</span> <span class="o">=</span> <span class="mf">1.4</span><span class="p">,</span> <span class="mf">3.1</span><span class="p">,</span> <span class="mf">0.5</span>
|
|
<span class="gp">>>> </span><span class="n">x</span><span class="o">**</span><span class="n">a</span> <span class="o">*</span> <span class="n">sc</span><span class="o">.</span><span class="n">hyp2f1</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="mi">1</span> <span class="o">-</span> <span class="n">b</span><span class="p">,</span> <span class="n">a</span> <span class="o">+</span> <span class="mi">1</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span><span class="o">/</span><span class="p">(</span><span class="n">a</span> <span class="o">*</span> <span class="n">sc</span><span class="o">.</span><span class="n">beta</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">))</span>
|
|
<span class="go">0.8148904036225295</span>
|
|
<span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">betainc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
|
<span class="go">0.8148904036225296</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>This functions satisfies the relationship
|
|
\( I_x(a, b) = 1 - I_{1-x}(b, a) \):</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">betainc</span><span class="p">(</span><span class="mf">2.2</span><span class="p">,</span> <span class="mf">3.1</span><span class="p">,</span> <span class="mf">0.4</span><span class="p">)</span>
|
|
<span class="go">0.49339638807619446</span>
|
|
<span class="gp">>>> </span><span class="mi">1</span> <span class="o">-</span> <span class="n">sc</span><span class="o">.</span><span class="n">betainc</span><span class="p">(</span><span class="mf">3.1</span><span class="p">,</span> <span class="mf">2.2</span><span class="p">,</span> <span class="mi">1</span> <span class="o">-</span> <span class="mf">0.4</span><span class="p">)</span>
|
|
<span class="go">0.49339638807619446</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/8.17">https://dlmf.nist.gov/8.17</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="betaln">
|
|
<input id="betaln-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">betaln</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="betaln-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#betaln"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="betaln-36"><a href="#betaln-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="betaln-37"><a href="#betaln-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="betaln-38"><a href="#betaln-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="betaln-39"><a href="#betaln-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="betaln-40"><a href="#betaln-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="betaln-41"><a href="#betaln-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="betaln-42"><a href="#betaln-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="betaln-43"><a href="#betaln-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="betaln-44"><a href="#betaln-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="betaln-45"><a href="#betaln-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="betaln-46"><a href="#betaln-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="betaln-47"><a href="#betaln-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="betaln-48"><a href="#betaln-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="betaln-49"><a href="#betaln-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>betaln(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>betaln(a, b, out=None)</p>
|
|
|
|
<p>Natural logarithm of absolute value of beta function.</p>
|
|
|
|
<p>Computes <code>ln(abs(beta(a, b)))</code>.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>a, b</strong> (array_like):
|
|
Positive, real-valued parameters</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Value of the betaln function</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#gamma">gamma</a></code>: the gamma function <br />
|
|
<code><a href="#betainc">betainc</a></code>: the regularized incomplete beta function <br />
|
|
<code><a href="#beta">beta</a></code>: the beta function </p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">betaln</span><span class="p">,</span> <span class="n">beta</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Verify that, for moderate values of <code>a</code> and <code>b</code>, <code>betaln(a, b)</code>
|
|
is the same as <code>log(beta(a, b))</code>:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">betaln</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">)</span>
|
|
<span class="go">-4.0943445622221</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">beta</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">))</span>
|
|
<span class="go">-4.0943445622221</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>In the following <code>beta(a, b)</code> underflows to 0, so we can't compute
|
|
the logarithm of the actual value.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mi">400</span>
|
|
<span class="gp">>>> </span><span class="n">b</span> <span class="o">=</span> <span class="mi">900</span>
|
|
<span class="gp">>>> </span><span class="n">beta</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
|
|
<span class="go">0.0</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>We can compute the logarithm of <code>beta(a, b)</code> by using <code><a href="#betaln">betaln</a></code>:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">betaln</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="p">)</span>
|
|
<span class="go">-804.3069951764146</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="polygamma">
|
|
<input id="polygamma-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">polygamma</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="polygamma-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#polygamma"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="polygamma-36"><a href="#polygamma-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="polygamma-37"><a href="#polygamma-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="polygamma-38"><a href="#polygamma-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="polygamma-39"><a href="#polygamma-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="polygamma-40"><a href="#polygamma-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="polygamma-41"><a href="#polygamma-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="polygamma-42"><a href="#polygamma-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="polygamma-43"><a href="#polygamma-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="polygamma-44"><a href="#polygamma-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="polygamma-45"><a href="#polygamma-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="polygamma-46"><a href="#polygamma-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="polygamma-47"><a href="#polygamma-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="polygamma-48"><a href="#polygamma-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="polygamma-49"><a href="#polygamma-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>Polygamma functions.</p>
|
|
|
|
<p>Defined as \( \psi^{(n)}(x) \) where \( \psi \) is the
|
|
<code><a href="#digamma">digamma</a></code> function. See [dlmf]_ for details.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>n</strong> (array_like):
|
|
The order of the derivative of the digamma function; must be
|
|
integral</li>
|
|
<li><strong>x</strong> (array_like):
|
|
Real valued input</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>ndarray</strong>: Function results</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#digamma">digamma</a></code> </p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<p>.. [dlmf] NIST, Digital Library of Mathematical Functions,
|
|
<a href="https://dlmf.nist.gov/5.15">https://dlmf.nist.gov/5.15</a></p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="n">special</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mf">25.5</span><span class="p">]</span>
|
|
<span class="gp">>>> </span><span class="n">special</span><span class="o">.</span><span class="n">polygamma</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
|
<span class="go">array([ 0.64493407, 0.39493407, 0.03999467])</span>
|
|
<span class="gp">>>> </span><span class="n">special</span><span class="o">.</span><span class="n">polygamma</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span> <span class="o">==</span> <span class="n">special</span><span class="o">.</span><span class="n">psi</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="go">array([ True, True, True], dtype=bool)</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="psi">
|
|
<input id="psi-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">psi</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="psi-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#psi"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="psi-36"><a href="#psi-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="psi-37"><a href="#psi-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="psi-38"><a href="#psi-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="psi-39"><a href="#psi-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="psi-40"><a href="#psi-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="psi-41"><a href="#psi-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="psi-42"><a href="#psi-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="psi-43"><a href="#psi-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="psi-44"><a href="#psi-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="psi-45"><a href="#psi-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="psi-46"><a href="#psi-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="psi-47"><a href="#psi-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="psi-48"><a href="#psi-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="psi-49"><a href="#psi-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>psi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>psi(z, out=None)</p>
|
|
|
|
<p>The digamma function.</p>
|
|
|
|
<p>The logarithmic derivative of the gamma function evaluated at <code>z</code>.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>z</strong> (array_like):
|
|
Real or complex argument.</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Array for the computed values of <code><a href="#psi">psi</a></code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>digamma</strong> (scalar or ndarray):
|
|
Computed values of <code><a href="#psi">psi</a></code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>For large values not close to the negative real axis, <code><a href="#psi">psi</a></code> is
|
|
computed using the asymptotic series (5.11.2) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>. For small
|
|
arguments not close to the negative real axis, the recurrence
|
|
relation (5.5.2) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">2</a></sup> is used until the argument is large
|
|
enough to use the asymptotic series. For values close to the
|
|
negative real axis, the reflection formula (5.5.4) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">3</a></sup> is
|
|
used first. Note that <code><a href="#psi">psi</a></code> has a family of zeros on the
|
|
negative real axis which occur between the poles at nonpositive
|
|
integers. Around the zeros the reflection formula suffers from
|
|
cancellation and the implementation loses precision. The sole
|
|
positive zero and the first negative zero, however, are handled
|
|
separately by precomputing series expansions using <sup class="footnote-ref" id="fnref-2"><a href="#fn-2">4</a></sup>, so the
|
|
function should maintain full accuracy around the origin.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">psi</span>
|
|
<span class="gp">>>> </span><span class="n">z</span> <span class="o">=</span> <span class="mi">3</span> <span class="o">+</span> <span class="mi">4</span><span class="n">j</span>
|
|
<span class="gp">>>> </span><span class="n">psi</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
|
|
<span class="go">(1.55035981733341+1.0105022091860445j)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Verify psi(z) = psi(z + 1) - 1/z:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">psi</span><span class="p">(</span><span class="n">z</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">z</span>
|
|
<span class="go">(1.55035981733341+1.0105022091860445j)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
|
|
<li id="fn-1">
|
|
<p>NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 2 in the text.">↩</a></p>
|
|
</li>
|
|
|
|
<li id="fn-1">
|
|
<p>NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 3 in the text.">↩</a></p>
|
|
</li>
|
|
|
|
<li id="fn-2">
|
|
<p>Fredrik Johansson and others.
|
|
"mpmath: a Python library for arbitrary-precision floating-point arithmetic"
|
|
(Version 0.19) <a href="http://mpmath.org/">http://mpmath.org/</a> <a href="#fnref-2" class="footnoteBackLink" title="Jump back to footnote 4 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="digamma">
|
|
<input id="digamma-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">digamma</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="digamma-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#digamma"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="digamma-36"><a href="#digamma-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="digamma-37"><a href="#digamma-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="digamma-38"><a href="#digamma-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="digamma-39"><a href="#digamma-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="digamma-40"><a href="#digamma-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="digamma-41"><a href="#digamma-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="digamma-42"><a href="#digamma-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="digamma-43"><a href="#digamma-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="digamma-44"><a href="#digamma-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="digamma-45"><a href="#digamma-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="digamma-46"><a href="#digamma-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="digamma-47"><a href="#digamma-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="digamma-48"><a href="#digamma-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="digamma-49"><a href="#digamma-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>psi(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>psi(z, out=None)</p>
|
|
|
|
<p>The digamma function.</p>
|
|
|
|
<p>The logarithmic derivative of the gamma function evaluated at <code>z</code>.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>z</strong> (array_like):
|
|
Real or complex argument.</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Array for the computed values of <code><a href="#psi">psi</a></code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>digamma</strong> (scalar or ndarray):
|
|
Computed values of <code><a href="#psi">psi</a></code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>For large values not close to the negative real axis, <code><a href="#psi">psi</a></code> is
|
|
computed using the asymptotic series (5.11.2) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>. For small
|
|
arguments not close to the negative real axis, the recurrence
|
|
relation (5.5.2) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">2</a></sup> is used until the argument is large
|
|
enough to use the asymptotic series. For values close to the
|
|
negative real axis, the reflection formula (5.5.4) from <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">3</a></sup> is
|
|
used first. Note that <code><a href="#psi">psi</a></code> has a family of zeros on the
|
|
negative real axis which occur between the poles at nonpositive
|
|
integers. Around the zeros the reflection formula suffers from
|
|
cancellation and the implementation loses precision. The sole
|
|
positive zero and the first negative zero, however, are handled
|
|
separately by precomputing series expansions using <sup class="footnote-ref" id="fnref-2"><a href="#fn-2">4</a></sup>, so the
|
|
function should maintain full accuracy around the origin.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">psi</span>
|
|
<span class="gp">>>> </span><span class="n">z</span> <span class="o">=</span> <span class="mi">3</span> <span class="o">+</span> <span class="mi">4</span><span class="n">j</span>
|
|
<span class="gp">>>> </span><span class="n">psi</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
|
|
<span class="go">(1.55035981733341+1.0105022091860445j)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Verify psi(z) = psi(z + 1) - 1/z:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">psi</span><span class="p">(</span><span class="n">z</span> <span class="o">+</span> <span class="mi">1</span><span class="p">)</span> <span class="o">-</span> <span class="mi">1</span><span class="o">/</span><span class="n">z</span>
|
|
<span class="go">(1.55035981733341+1.0105022091860445j)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
|
|
<li id="fn-1">
|
|
<p>NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 2 in the text.">↩</a></p>
|
|
</li>
|
|
|
|
<li id="fn-1">
|
|
<p>NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 3 in the text.">↩</a></p>
|
|
</li>
|
|
|
|
<li id="fn-2">
|
|
<p>Fredrik Johansson and others.
|
|
"mpmath: a Python library for arbitrary-precision floating-point arithmetic"
|
|
(Version 0.19) <a href="http://mpmath.org/">http://mpmath.org/</a> <a href="#fnref-2" class="footnoteBackLink" title="Jump back to footnote 4 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="gamma">
|
|
<input id="gamma-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">gamma</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="gamma-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#gamma"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="gamma-36"><a href="#gamma-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="gamma-37"><a href="#gamma-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="gamma-38"><a href="#gamma-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="gamma-39"><a href="#gamma-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="gamma-40"><a href="#gamma-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="gamma-41"><a href="#gamma-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="gamma-42"><a href="#gamma-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gamma-43"><a href="#gamma-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gamma-44"><a href="#gamma-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gamma-45"><a href="#gamma-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gamma-46"><a href="#gamma-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="gamma-47"><a href="#gamma-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="gamma-48"><a href="#gamma-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="gamma-49"><a href="#gamma-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>gamma(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>gamma(z, out=None)</p>
|
|
|
|
<p>gamma function.</p>
|
|
|
|
<p>The gamma function is defined as</p>
|
|
|
|
<p>$$\Gamma(z) = \int_0^\infty t^{z-1} e^{-t} dt$$</p>
|
|
|
|
<p>for \( \Re(z) > 0 \) and is extended to the rest of the complex
|
|
plane by analytic continuation. See [dlmf]_ for more details.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>z</strong> (array_like):
|
|
Real or complex valued argument</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Values of the gamma function</li>
|
|
</ul>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The gamma function is often referred to as the generalized
|
|
factorial since \( \Gamma(n + 1) = n! \) for natural numbers
|
|
\( n \). More generally it satisfies the recurrence relation
|
|
\( \Gamma(z + 1) = z \cdot \Gamma(z) \) for complex \( z \),
|
|
which, combined with the fact that \( \Gamma(1) = 1 \), implies
|
|
the above identity for \( z = n \).</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<p>.. [dlmf] NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/5.2#E1">https://dlmf.nist.gov/5.2#E1</a></p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">gamma</span><span class="p">,</span> <span class="n">factorial</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">gamma</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">5</span><span class="p">])</span>
|
|
<span class="go">array([ inf, 1.77245385, 1. , 24. ])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">z</span> <span class="o">=</span> <span class="mf">2.5</span> <span class="o">+</span> <span class="mi">1</span><span class="n">j</span>
|
|
<span class="gp">>>> </span><span class="n">gamma</span><span class="p">(</span><span class="n">z</span><span class="p">)</span>
|
|
<span class="go">(0.77476210455108352+0.70763120437959293j)</span>
|
|
<span class="gp">>>> </span><span class="n">gamma</span><span class="p">(</span><span class="n">z</span><span class="o">+</span><span class="mi">1</span><span class="p">),</span> <span class="n">z</span><span class="o">*</span><span class="n">gamma</span><span class="p">(</span><span class="n">z</span><span class="p">)</span> <span class="c1"># Recurrence property</span>
|
|
<span class="go">((1.2292740569981171+2.5438401155000685j),</span>
|
|
<span class="go"> (1.2292740569981158+2.5438401155000658j))</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">gamma</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span><span class="o">**</span><span class="mi">2</span> <span class="c1"># gamma(0.5) = sqrt(pi)</span>
|
|
<span class="go">3.1415926535897927</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot gamma(x) for real x</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">3.5</span><span class="p">,</span> <span class="mf">5.5</span><span class="p">,</span> <span class="mi">2251</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">gamma</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">,</span> <span class="s1">'b'</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span> <span class="n">label</span><span class="o">=</span><span class="s1">'gamma(x)'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">k</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mi">7</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">k</span><span class="p">,</span> <span class="n">factorial</span><span class="p">(</span><span class="n">k</span><span class="o">-</span><span class="mi">1</span><span class="p">),</span> <span class="s1">'k*'</span><span class="p">,</span> <span class="n">alpha</span><span class="o">=</span><span class="mf">0.6</span><span class="p">,</span>
|
|
<span class="gp">... </span> <span class="n">label</span><span class="o">=</span><span class="s1">'(x-1)!, x = 1, 2, ...'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mf">3.5</span><span class="p">,</span> <span class="mf">5.5</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">10</span><span class="p">,</span> <span class="mi">25</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'x'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">legend</span><span class="p">(</span><span class="n">loc</span><span class="o">=</span><span class="s1">'lower right'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="gammaln">
|
|
<input id="gammaln-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">gammaln</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="gammaln-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#gammaln"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="gammaln-36"><a href="#gammaln-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="gammaln-37"><a href="#gammaln-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="gammaln-38"><a href="#gammaln-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="gammaln-39"><a href="#gammaln-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="gammaln-40"><a href="#gammaln-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="gammaln-41"><a href="#gammaln-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="gammaln-42"><a href="#gammaln-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gammaln-43"><a href="#gammaln-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gammaln-44"><a href="#gammaln-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gammaln-45"><a href="#gammaln-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gammaln-46"><a href="#gammaln-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="gammaln-47"><a href="#gammaln-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="gammaln-48"><a href="#gammaln-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="gammaln-49"><a href="#gammaln-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>gammaln(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>gammaln(x, out=None)</p>
|
|
|
|
<p>Logarithm of the absolute value of the gamma function.</p>
|
|
|
|
<p>Defined as</p>
|
|
|
|
<p>$$\ln(\lvert\Gamma(x)\rvert)$$</p>
|
|
|
|
<p>where \( \Gamma \) is the gamma function. For more details on
|
|
the gamma function, see [dlmf]_.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (array_like):
|
|
Real argument</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function results</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Values of the log of the absolute value of gamma</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#gammasgn">gammasgn</a></code>: sign of the gamma function <br />
|
|
<code>loggamma</code>: principal branch of the logarithm of the gamma function </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>It is the same function as the Python standard library function
|
|
<code>math.lgamma()</code>.</p>
|
|
|
|
<p>When used in conjunction with <code><a href="#gammasgn">gammasgn</a></code>, this function is useful
|
|
for working in logspace on the real axis without having to deal
|
|
with complex numbers via the relation <code>exp(gammaln(x)) =
|
|
gammasgn(x) * gamma(x)</code>.</p>
|
|
|
|
<p>For complex-valued log-gamma, use <code>loggamma</code> instead of <code><a href="#gammaln">gammaln</a></code>.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<p>.. [dlmf] NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/5">https://dlmf.nist.gov/5</a></p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It has two positive zeros.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaln</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">])</span>
|
|
<span class="go">array([0., 0.])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It has poles at nonpositive integers.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaln</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="o">-</span><span class="mi">4</span><span class="p">])</span>
|
|
<span class="go">array([inf, inf, inf, inf, inf])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It asymptotically approaches <code>x * log(x)</code> (Stirling's formula).</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">1e10</span><span class="p">,</span> <span class="mf">1e20</span><span class="p">,</span> <span class="mf">1e40</span><span class="p">,</span> <span class="mf">1e80</span><span class="p">])</span>
|
|
<span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaln</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="go">array([2.20258509e+11, 4.50517019e+21, 9.11034037e+41, 1.83206807e+82])</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="go">array([2.30258509e+11, 4.60517019e+21, 9.21034037e+41, 1.84206807e+82])</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="gammainc">
|
|
<input id="gammainc-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">gammainc</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="gammainc-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#gammainc"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="gammainc-36"><a href="#gammainc-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="gammainc-37"><a href="#gammainc-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="gammainc-38"><a href="#gammainc-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="gammainc-39"><a href="#gammainc-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="gammainc-40"><a href="#gammainc-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="gammainc-41"><a href="#gammainc-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="gammainc-42"><a href="#gammainc-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gammainc-43"><a href="#gammainc-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gammainc-44"><a href="#gammainc-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gammainc-45"><a href="#gammainc-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gammainc-46"><a href="#gammainc-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="gammainc-47"><a href="#gammainc-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="gammainc-48"><a href="#gammainc-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="gammainc-49"><a href="#gammainc-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>gammainc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>gammainc(a, x, out=None)</p>
|
|
|
|
<p>Regularized lower incomplete gamma function.</p>
|
|
|
|
<p>It is defined as</p>
|
|
|
|
<p>$$P(a, x) = \frac{1}{\Gamma(a)} \int_0^x t^{a - 1}e^{-t} dt$$</p>
|
|
|
|
<p>for \( a > 0 \) and \( x \geq 0 \). See [dlmf]_ for details.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>a</strong> (array_like):
|
|
Positive parameter</li>
|
|
<li><strong>x</strong> (array_like):
|
|
Nonnegative argument</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Values of the lower incomplete gamma function</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#gammaincc">gammaincc</a></code>: regularized upper incomplete gamma function <br />
|
|
<code>gammaincinv</code>: inverse of the regularized lower incomplete gamma function <br />
|
|
<code>gammainccinv</code>: inverse of the regularized upper incomplete gamma function </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The function satisfies the relation <code>gammainc(a, x) +
|
|
gammaincc(a, x) = 1</code> where <code><a href="#gammaincc">gammaincc</a></code> is the regularized upper
|
|
incomplete gamma function.</p>
|
|
|
|
<p>The implementation largely follows that of [boost]_.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<p>.. [dlmf] NIST Digital Library of Mathematical functions
|
|
<a href="https://dlmf.nist.gov/8.2#E4">https://dlmf.nist.gov/8.2#E4</a>
|
|
.. [boost] Maddock et. al., "Incomplete Gamma Functions",
|
|
<a href="https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html">https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html</a></p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It is the CDF of the gamma distribution, so it starts at 0 and
|
|
monotonically increases to 1.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammainc</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">])</span>
|
|
<span class="go">array([0. , 0.84270079, 0.99999226, 1. ])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It is equal to one minus the upper incomplete gamma function.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">a</span><span class="p">,</span> <span class="n">x</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.4</span>
|
|
<span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammainc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
|
<span class="go">0.6289066304773024</span>
|
|
<span class="gp">>>> </span><span class="mi">1</span> <span class="o">-</span> <span class="n">sc</span><span class="o">.</span><span class="n">gammaincc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
|
<span class="go">0.6289066304773024</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="gammaincc">
|
|
<input id="gammaincc-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">gammaincc</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="gammaincc-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#gammaincc"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="gammaincc-36"><a href="#gammaincc-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="gammaincc-37"><a href="#gammaincc-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="gammaincc-38"><a href="#gammaincc-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="gammaincc-39"><a href="#gammaincc-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="gammaincc-40"><a href="#gammaincc-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="gammaincc-41"><a href="#gammaincc-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="gammaincc-42"><a href="#gammaincc-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gammaincc-43"><a href="#gammaincc-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gammaincc-44"><a href="#gammaincc-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gammaincc-45"><a href="#gammaincc-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gammaincc-46"><a href="#gammaincc-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="gammaincc-47"><a href="#gammaincc-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="gammaincc-48"><a href="#gammaincc-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="gammaincc-49"><a href="#gammaincc-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>gammaincc(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>gammaincc(a, x, out=None)</p>
|
|
|
|
<p>Regularized upper incomplete gamma function.</p>
|
|
|
|
<p>It is defined as</p>
|
|
|
|
<p>$$Q(a, x) = \frac{1}{\Gamma(a)} \int_x^\infty t^{a - 1}e^{-t} dt$$</p>
|
|
|
|
<p>for \( a > 0 \) and \( x \geq 0 \). See [dlmf]_ for details.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>a</strong> (array_like):
|
|
Positive parameter</li>
|
|
<li><strong>x</strong> (array_like):
|
|
Nonnegative argument</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Values of the upper incomplete gamma function</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#gammainc">gammainc</a></code>: regularized lower incomplete gamma function <br />
|
|
<code>gammaincinv</code>: inverse of the regularized lower incomplete gamma function <br />
|
|
<code>gammainccinv</code>: inverse of the regularized upper incomplete gamma function </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The function satisfies the relation <code>gammainc(a, x) +
|
|
gammaincc(a, x) = 1</code> where <code><a href="#gammainc">gammainc</a></code> is the regularized lower
|
|
incomplete gamma function.</p>
|
|
|
|
<p>The implementation largely follows that of [boost]_.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<p>.. [dlmf] NIST Digital Library of Mathematical functions
|
|
<a href="https://dlmf.nist.gov/8.2#E4">https://dlmf.nist.gov/8.2#E4</a>
|
|
.. [boost] Maddock et. al., "Incomplete Gamma Functions",
|
|
<a href="https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html">https://www.boost.org/doc/libs/1_61_0/libs/math/doc/html/math_toolkit/sf_gamma/igamma.html</a></p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It is the survival function of the gamma distribution, so it
|
|
starts at 1 and monotonically decreases to 0.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaincc</span><span class="p">(</span><span class="mf">0.5</span><span class="p">,</span> <span class="p">[</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">1000</span><span class="p">])</span>
|
|
<span class="go">array([1.00000000e+00, 1.57299207e-01, 7.74421643e-06, 2.08848758e-45,</span>
|
|
<span class="go"> 0.00000000e+00])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It is equal to one minus the lower incomplete gamma function.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">a</span><span class="p">,</span> <span class="n">x</span> <span class="o">=</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.4</span>
|
|
<span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammaincc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
|
<span class="go">0.37109336952269756</span>
|
|
<span class="gp">>>> </span><span class="mi">1</span> <span class="o">-</span> <span class="n">sc</span><span class="o">.</span><span class="n">gammainc</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">x</span><span class="p">)</span>
|
|
<span class="go">0.37109336952269756</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="gammasgn">
|
|
<input id="gammasgn-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">gammasgn</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="gammasgn-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#gammasgn"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="gammasgn-36"><a href="#gammasgn-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="gammasgn-37"><a href="#gammasgn-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="gammasgn-38"><a href="#gammasgn-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="gammasgn-39"><a href="#gammasgn-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="gammasgn-40"><a href="#gammasgn-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="gammasgn-41"><a href="#gammasgn-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="gammasgn-42"><a href="#gammasgn-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gammasgn-43"><a href="#gammasgn-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gammasgn-44"><a href="#gammasgn-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="gammasgn-45"><a href="#gammasgn-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="gammasgn-46"><a href="#gammasgn-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="gammasgn-47"><a href="#gammasgn-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="gammasgn-48"><a href="#gammasgn-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="gammasgn-49"><a href="#gammasgn-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>gammasgn(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>gammasgn(x, out=None)</p>
|
|
|
|
<p>Sign of the gamma function.</p>
|
|
|
|
<p>It is defined as</p>
|
|
|
|
<p>$$\text{gammasgn}(x) =
|
|
\begin{cases}
|
|
+1 & \Gamma(x) > 0 \
|
|
-1 & \Gamma(x) < 0
|
|
\end{cases}$$</p>
|
|
|
|
<p>where \( \Gamma \) is the gamma function; see <code><a href="#gamma">gamma</a></code>. This
|
|
definition is complete since the gamma function is never zero;
|
|
see the discussion after [dlmf]_.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (array_like):
|
|
Real argument</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Sign of the gamma function</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#gamma">gamma</a></code>: the gamma function <br />
|
|
<code><a href="#gammaln">gammaln</a></code>: log of the absolute value of the gamma function <br />
|
|
<code>loggamma</code>: analytic continuation of the log of the gamma function </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The gamma function can be computed as <code>gammasgn(x) *
|
|
np.exp(gammaln(x))</code>.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<p>.. [dlmf] NIST Digital Library of Mathematical Functions
|
|
<a href="https://dlmf.nist.gov/5.2#E1">https://dlmf.nist.gov/5.2#E1</a></p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It is 1 for <code>x > 0</code>.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammasgn</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">])</span>
|
|
<span class="go">array([1., 1., 1., 1.])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It alternates between -1 and 1 for negative integers.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammasgn</span><span class="p">([</span><span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">2.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">3.5</span><span class="p">])</span>
|
|
<span class="go">array([-1., 1., -1., 1.])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It can be used to compute the gamma function.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="p">[</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">0.5</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.5</span><span class="p">]</span>
|
|
<span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gammasgn</span><span class="p">(</span><span class="n">x</span><span class="p">)</span> <span class="o">*</span> <span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">sc</span><span class="o">.</span><span class="n">gammaln</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
|
|
<span class="go">array([ 0.88622693, 1.77245385, -3.5449077 , 2.3632718 ])</span>
|
|
<span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="go">array([ 0.88622693, 1.77245385, -3.5449077 , 2.3632718 ])</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="rgamma">
|
|
<input id="rgamma-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">rgamma</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="rgamma-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#rgamma"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="rgamma-36"><a href="#rgamma-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="rgamma-37"><a href="#rgamma-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="rgamma-38"><a href="#rgamma-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="rgamma-39"><a href="#rgamma-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="rgamma-40"><a href="#rgamma-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="rgamma-41"><a href="#rgamma-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="rgamma-42"><a href="#rgamma-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="rgamma-43"><a href="#rgamma-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="rgamma-44"><a href="#rgamma-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="rgamma-45"><a href="#rgamma-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="rgamma-46"><a href="#rgamma-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="rgamma-47"><a href="#rgamma-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="rgamma-48"><a href="#rgamma-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="rgamma-49"><a href="#rgamma-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>rgamma(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>rgamma(z, out=None)</p>
|
|
|
|
<p>Reciprocal of the gamma function.</p>
|
|
|
|
<p>Defined as \( 1 / \Gamma(z) \), where \( \Gamma \) is the
|
|
gamma function. For more on the gamma function see <code><a href="#gamma">gamma</a></code>.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>z</strong> (array_like):
|
|
Real or complex valued input</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function results</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Function results</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code>gamma,</code>, <code>gammaln,</code>, <code>loggamma</code> </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The gamma function has no zeros and has simple poles at
|
|
nonpositive integers, so <code><a href="#rgamma">rgamma</a></code> is an entire function with zeros
|
|
at the nonpositive integers. See the discussion in [dlmf]_ for
|
|
more details.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<p>.. [dlmf] Nist, Digital Library of Mathematical functions,
|
|
<a href="https://dlmf.nist.gov/5.2#i">https://dlmf.nist.gov/5.2#i</a></p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">scipy.special</span> <span class="k">as</span> <span class="nn">sc</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It is the reciprocal of the gamma function.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">rgamma</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">])</span>
|
|
<span class="go">array([1. , 1. , 0.5 , 0.16666667])</span>
|
|
<span class="gp">>>> </span><span class="mi">1</span> <span class="o">/</span> <span class="n">sc</span><span class="o">.</span><span class="n">gamma</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">4</span><span class="p">])</span>
|
|
<span class="go">array([1. , 1. , 0.5 , 0.16666667])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It is zero at nonpositive integers.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">rgamma</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="o">-</span><span class="mi">2</span><span class="p">,</span> <span class="o">-</span><span class="mi">3</span><span class="p">])</span>
|
|
<span class="go">array([0., 0., 0., 0.])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>It rapidly underflows to zero along the positive real axis.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">sc</span><span class="o">.</span><span class="n">rgamma</span><span class="p">([</span><span class="mi">10</span><span class="p">,</span> <span class="mi">100</span><span class="p">,</span> <span class="mi">179</span><span class="p">])</span>
|
|
<span class="go">array([2.75573192e-006, 1.07151029e-156, 0.00000000e+000])</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="multigammaln">
|
|
<input id="multigammaln-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">multigammaln</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="multigammaln-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#multigammaln"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="multigammaln-36"><a href="#multigammaln-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="multigammaln-37"><a href="#multigammaln-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="multigammaln-38"><a href="#multigammaln-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="multigammaln-39"><a href="#multigammaln-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="multigammaln-40"><a href="#multigammaln-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="multigammaln-41"><a href="#multigammaln-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="multigammaln-42"><a href="#multigammaln-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="multigammaln-43"><a href="#multigammaln-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="multigammaln-44"><a href="#multigammaln-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="multigammaln-45"><a href="#multigammaln-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="multigammaln-46"><a href="#multigammaln-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="multigammaln-47"><a href="#multigammaln-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="multigammaln-48"><a href="#multigammaln-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="multigammaln-49"><a href="#multigammaln-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>Returns the log of multivariate gamma, also sometimes called the
|
|
generalized gamma.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>a</strong> (ndarray):
|
|
The multivariate gamma is computed for each item of <code>a</code>.</li>
|
|
<li><strong>d</strong> (int):
|
|
The dimension of the space of integration.</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>res</strong> (ndarray):
|
|
The values of the log multivariate gamma at the given points <code>a</code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The formal definition of the multivariate gamma of dimension d for a real
|
|
<code>a</code> is</p>
|
|
|
|
<p>$$\Gamma_d(a) = \int_{A>0} e^{-tr(A)} |A|^{a - (d+1)/2} dA$$</p>
|
|
|
|
<p>with the condition \( a > (d-1)/2 \), and \( A > 0 \) being the set of
|
|
all the positive definite matrices of dimension <code>d</code>. Note that <code>a</code> is a
|
|
scalar: the integrand only is multivariate, the argument is not (the
|
|
function is defined over a subset of the real set).</p>
|
|
|
|
<p>This can be proven to be equal to the much friendlier equation</p>
|
|
|
|
<p>$$\Gamma_d(a) = \pi^{d(d-1)/4} \prod_{i=1}^{d} \Gamma(a - (i-1)/2).$$</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<p>R. J. Muirhead, Aspects of multivariate statistical theory (Wiley Series in
|
|
probability and mathematical statistics).</p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">multigammaln</span><span class="p">,</span> <span class="n">gammaln</span>
|
|
<span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="mf">23.5</span>
|
|
<span class="gp">>>> </span><span class="n">d</span> <span class="o">=</span> <span class="mi">10</span>
|
|
<span class="gp">>>> </span><span class="n">multigammaln</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">d</span><span class="p">)</span>
|
|
<span class="go">454.1488605074416</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Verify that the result agrees with the logarithm of the equation
|
|
shown above:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">d</span><span class="o">*</span><span class="p">(</span><span class="n">d</span><span class="o">-</span><span class="mi">1</span><span class="p">)</span><span class="o">/</span><span class="mi">4</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">pi</span><span class="p">)</span> <span class="o">+</span> <span class="n">gammaln</span><span class="p">(</span><span class="n">a</span> <span class="o">-</span> <span class="mf">0.5</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">d</span><span class="p">))</span><span class="o">.</span><span class="n">sum</span><span class="p">()</span>
|
|
<span class="go">454.1488605074416</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="kn">
|
|
<input id="kn-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">kn</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="kn-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#kn"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="kn-36"><a href="#kn-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="kn-37"><a href="#kn-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="kn-38"><a href="#kn-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="kn-39"><a href="#kn-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="kn-40"><a href="#kn-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="kn-41"><a href="#kn-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="kn-42"><a href="#kn-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="kn-43"><a href="#kn-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="kn-44"><a href="#kn-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="kn-45"><a href="#kn-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="kn-46"><a href="#kn-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="kn-47"><a href="#kn-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="kn-48"><a href="#kn-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="kn-49"><a href="#kn-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>Modified Bessel function of the second kind of integer order n</p>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="j0">
|
|
<input id="j0-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">j0</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="j0-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#j0"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="j0-36"><a href="#j0-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="j0-37"><a href="#j0-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="j0-38"><a href="#j0-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="j0-39"><a href="#j0-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="j0-40"><a href="#j0-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="j0-41"><a href="#j0-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="j0-42"><a href="#j0-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="j0-43"><a href="#j0-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="j0-44"><a href="#j0-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="j0-45"><a href="#j0-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="j0-46"><a href="#j0-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="j0-47"><a href="#j0-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="j0-48"><a href="#j0-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="j0-49"><a href="#j0-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>j0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>j0(x, out=None)</p>
|
|
|
|
<p>Bessel function of the first kind of order 0.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (array_like):
|
|
Argument (float).</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>J</strong> (scalar or ndarray):
|
|
Value of the Bessel function of the first kind of order 0 at <code>x</code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code>jv</code>: Bessel function of real order and complex argument. <br />
|
|
<code>spherical_jn</code>: spherical Bessel functions. </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The domain is divided into the intervals [0, 5] and (5, infinity). In the
|
|
first interval the following rational approximation is used:</p>
|
|
|
|
<p>$$J_0(x) \approx (w - r_1^2)(w - r_2^2) \frac{P_3(w)}{Q_8(w)},$$</p>
|
|
|
|
<p>where \( w = x^2 \) and \( r_1 \), \( r_2 \) are the zeros of
|
|
\( J_0 \), and \( P_3 \) and \( Q_8 \) are polynomials of degrees 3
|
|
and 8, respectively.</p>
|
|
|
|
<p>In the second interval, the Hankel asymptotic expansion is employed with
|
|
two rational functions of degree 6/6 and 7/7.</p>
|
|
|
|
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#j0">j0</a></code>.
|
|
It should not be confused with the spherical Bessel functions (see
|
|
<code>spherical_jn</code>).</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Calculate the function at one point:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">j0</span>
|
|
<span class="gp">>>> </span><span class="n">j0</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">0.7651976865579665</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Calculate the function at several points:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="n">j0</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">4.</span><span class="p">]))</span>
|
|
<span class="go">array([ 0.22389078, 1. , -0.39714981])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the function from -20 to 20.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">20.</span><span class="p">,</span> <span class="mf">20.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">j0</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Cephes Mathematical Functions Library,
|
|
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="y0">
|
|
<input id="y0-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">y0</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="y0-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#y0"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="y0-36"><a href="#y0-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="y0-37"><a href="#y0-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="y0-38"><a href="#y0-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="y0-39"><a href="#y0-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="y0-40"><a href="#y0-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="y0-41"><a href="#y0-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="y0-42"><a href="#y0-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="y0-43"><a href="#y0-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="y0-44"><a href="#y0-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="y0-45"><a href="#y0-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="y0-46"><a href="#y0-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="y0-47"><a href="#y0-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="y0-48"><a href="#y0-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="y0-49"><a href="#y0-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>y0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>y0(x, out=None)</p>
|
|
|
|
<p>Bessel function of the second kind of order 0.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (array_like):
|
|
Argument (float).</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function results</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>Y</strong> (scalar or ndarray):
|
|
Value of the Bessel function of the second kind of order 0 at <code>x</code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#j0">j0</a></code>: Bessel function of the first kind of order 0 <br />
|
|
<code>yv</code>: Bessel function of the first kind </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The domain is divided into the intervals [0, 5] and (5, infinity). In the
|
|
first interval a rational approximation \( R(x) \) is employed to
|
|
compute,</p>
|
|
|
|
<p>$$Y_0(x) = R(x) + \frac{2 \log(x) J_0(x)}{\pi},$$</p>
|
|
|
|
<p>where \( J_0 \) is the Bessel function of the first kind of order 0.</p>
|
|
|
|
<p>In the second interval, the Hankel asymptotic expansion is employed with
|
|
two rational functions of degree 6/6 and 7/7.</p>
|
|
|
|
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#y0">y0</a></code>.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Calculate the function at one point:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">y0</span>
|
|
<span class="gp">>>> </span><span class="n">y0</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">0.08825696421567697</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Calculate at several points:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="n">y0</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">2.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">]))</span>
|
|
<span class="go">array([-0.44451873, 0.51037567, 0.37685001])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the function from 0 to 10.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">y0</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Cephes Mathematical Functions Library,
|
|
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="j1">
|
|
<input id="j1-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">j1</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="j1-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#j1"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="j1-36"><a href="#j1-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="j1-37"><a href="#j1-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="j1-38"><a href="#j1-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="j1-39"><a href="#j1-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="j1-40"><a href="#j1-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="j1-41"><a href="#j1-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="j1-42"><a href="#j1-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="j1-43"><a href="#j1-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="j1-44"><a href="#j1-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="j1-45"><a href="#j1-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="j1-46"><a href="#j1-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="j1-47"><a href="#j1-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="j1-48"><a href="#j1-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="j1-49"><a href="#j1-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>j1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>j1(x, out=None)</p>
|
|
|
|
<p>Bessel function of the first kind of order 1.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (array_like):
|
|
Argument (float).</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>J</strong> (scalar or ndarray):
|
|
Value of the Bessel function of the first kind of order 1 at <code>x</code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code>jv</code>: Bessel function of the first kind <br />
|
|
<code>spherical_jn</code>: spherical Bessel functions. </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The domain is divided into the intervals [0, 8] and (8, infinity). In the
|
|
first interval a 24 term Chebyshev expansion is used. In the second, the
|
|
asymptotic trigonometric representation is employed using two rational
|
|
functions of degree 5/5.</p>
|
|
|
|
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#j1">j1</a></code>.
|
|
It should not be confused with the spherical Bessel functions (see
|
|
<code>spherical_jn</code>).</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Calculate the function at one point:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">j1</span>
|
|
<span class="gp">>>> </span><span class="n">j1</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">0.44005058574493355</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Calculate the function at several points:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="n">j1</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">4.</span><span class="p">]))</span>
|
|
<span class="go">array([-0.57672481, 0. , -0.06604333])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the function from -20 to 20.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">20.</span><span class="p">,</span> <span class="mf">20.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">j1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Cephes Mathematical Functions Library,
|
|
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="y1">
|
|
<input id="y1-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">y1</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="y1-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#y1"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="y1-36"><a href="#y1-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="y1-37"><a href="#y1-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="y1-38"><a href="#y1-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="y1-39"><a href="#y1-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="y1-40"><a href="#y1-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="y1-41"><a href="#y1-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="y1-42"><a href="#y1-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="y1-43"><a href="#y1-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="y1-44"><a href="#y1-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="y1-45"><a href="#y1-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="y1-46"><a href="#y1-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="y1-47"><a href="#y1-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="y1-48"><a href="#y1-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="y1-49"><a href="#y1-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>y1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>y1(x, out=None)</p>
|
|
|
|
<p>Bessel function of the second kind of order 1.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (array_like):
|
|
Argument (float).</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function results</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>Y</strong> (scalar or ndarray):
|
|
Value of the Bessel function of the second kind of order 1 at <code>x</code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#j1">j1</a></code>: Bessel function of the first kind of order 1 <br />
|
|
<code><a href="#yn">yn</a></code>: Bessel function of the second kind <br />
|
|
<code>yv</code>: Bessel function of the second kind </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The domain is divided into the intervals [0, 8] and (8, infinity). In the
|
|
first interval a 25 term Chebyshev expansion is used, and computing
|
|
\( J_1 \) (the Bessel function of the first kind) is required. In the
|
|
second, the asymptotic trigonometric representation is employed using two
|
|
rational functions of degree 5/5.</p>
|
|
|
|
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#y1">y1</a></code>.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Calculate the function at one point:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">y1</span>
|
|
<span class="gp">>>> </span><span class="n">y1</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">-0.7812128213002888</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Calculate at several points:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="n">y1</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">2.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">]))</span>
|
|
<span class="go">array([-1.47147239, -0.10703243, 0.32467442])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the function from 0 to 10.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">y1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Cephes Mathematical Functions Library,
|
|
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="jn">
|
|
<input id="jn-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">jn</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="jn-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#jn"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="jn-36"><a href="#jn-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="jn-37"><a href="#jn-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="jn-38"><a href="#jn-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="jn-39"><a href="#jn-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="jn-40"><a href="#jn-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="jn-41"><a href="#jn-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="jn-42"><a href="#jn-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="jn-43"><a href="#jn-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="jn-44"><a href="#jn-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="jn-45"><a href="#jn-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="jn-46"><a href="#jn-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="jn-47"><a href="#jn-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="jn-48"><a href="#jn-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="jn-49"><a href="#jn-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>jv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>jv(v, z, out=None)</p>
|
|
|
|
<p>Bessel function of the first kind of real order and complex argument.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>v</strong> (array_like):
|
|
Order (float).</li>
|
|
<li><strong>z</strong> (array_like):
|
|
Argument (float or complex).</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>J</strong> (scalar or ndarray):
|
|
Value of the Bessel function, \( J_v(z) \).</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code>jve</code>: \( J_v \) with leading exponential behavior stripped off. <br />
|
|
<code>spherical_jn</code>: spherical Bessel functions. <br />
|
|
<code><a href="#j0">j0</a></code>: faster version of this function for order 0. <br />
|
|
<code><a href="#j1">j1</a></code>: faster version of this function for order 1. </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>For positive <code>v</code> values, the computation is carried out using the AMOS
|
|
<sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> <code>zbesj</code> routine, which exploits the connection to the modified
|
|
Bessel function \( I_v \),</p>
|
|
|
|
<p>$$J_v(z) = \exp(v\pi\imath/2) I_v(-\imath z)\qquad (\Im z > 0)</p>
|
|
|
|
<p>J_v(z) = \exp(-v\pi\imath/2) I_v(\imath z)\qquad (\Im z < 0)$$</p>
|
|
|
|
<p>For negative <code>v</code> values the formula,</p>
|
|
|
|
<p>$$J_{-v}(z) = J_v(z) \cos(\pi v) - Y_v(z) \sin(\pi v)$$</p>
|
|
|
|
<p>is used, where \( Y_v(z) \) is the Bessel function of the second
|
|
kind, computed using the AMOS routine <code>zbesy</code>. Note that the second
|
|
term is exactly zero for integer <code>v</code>; to improve accuracy the second
|
|
term is explicitly omitted for <code>v</code> values such that <code>v = floor(v)</code>.</p>
|
|
|
|
<p>Not to be confused with the spherical Bessel functions (see <code>spherical_jn</code>).</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Evaluate the function of order 0 at one point.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">jv</span>
|
|
<span class="gp">>>> </span><span class="n">jv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">0.7651976865579666</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Evaluate the function at one point for different orders.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">jv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">jv</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">jv</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">(0.7651976865579666, 0.44005058574493355, 0.24029783912342725)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>The evaluation for different orders can be carried out in one call by
|
|
providing a list or NumPy array as argument for the <code>v</code> parameter:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">jv</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">],</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">array([0.76519769, 0.44005059, 0.24029784])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Evaluate the function at several points for order 0 by providing an
|
|
array for <code>z</code>.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="n">points</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">])</span>
|
|
<span class="gp">>>> </span><span class="n">jv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
|
|
<span class="go">array([ 0.22389078, 1. , -0.26005195])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>If <code>z</code> is an array, the order parameter <code>v</code> must be broadcastable to
|
|
the correct shape if different orders shall be computed in one call.
|
|
To calculate the orders 0 and 1 for an 1D array:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">orders</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
|
|
<span class="gp">>>> </span><span class="n">orders</span><span class="o">.</span><span class="n">shape</span>
|
|
<span class="go">(2, 1)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">jv</span><span class="p">(</span><span class="n">orders</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
|
|
<span class="go">array([[ 0.22389078, 1. , -0.26005195],</span>
|
|
<span class="go"> [-0.57672481, 0. , 0.33905896]])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the functions of order 0 to 3 from -10 to 10.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">10.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
|
|
<span class="gp">... </span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">jv</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s1">'$J_</span><span class="si">{</span><span class="n">i</span><span class="si">!r}</span><span class="s1">$'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
|
|
of a Complex Argument and Nonnegative Order",
|
|
<a href="http://netlib.org/amos/">http://netlib.org/amos/</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="yn">
|
|
<input id="yn-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">yn</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="yn-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#yn"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="yn-36"><a href="#yn-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="yn-37"><a href="#yn-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="yn-38"><a href="#yn-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="yn-39"><a href="#yn-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="yn-40"><a href="#yn-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="yn-41"><a href="#yn-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="yn-42"><a href="#yn-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="yn-43"><a href="#yn-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="yn-44"><a href="#yn-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="yn-45"><a href="#yn-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="yn-46"><a href="#yn-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="yn-47"><a href="#yn-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="yn-48"><a href="#yn-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="yn-49"><a href="#yn-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>yn(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>yn(n, x, out=None)</p>
|
|
|
|
<p>Bessel function of the second kind of integer order and real argument.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>n</strong> (array_like):
|
|
Order (integer).</li>
|
|
<li><strong>x</strong> (array_like):
|
|
Argument (float).</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function results</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>Y</strong> (scalar or ndarray):
|
|
Value of the Bessel function, \( Y_n(x) \).</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code>yv</code>: For real order and real or complex argument. <br />
|
|
<code><a href="#y0">y0</a></code>: faster implementation of this function for order 0 <br />
|
|
<code><a href="#y1">y1</a></code>: faster implementation of this function for order 1 </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>Wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#yn">yn</a></code>.</p>
|
|
|
|
<p>The function is evaluated by forward recurrence on <code>n</code>, starting with
|
|
values computed by the Cephes routines <code><a href="#y0">y0</a></code> and <code><a href="#y1">y1</a></code>. If <code>n = 0</code> or 1,
|
|
the routine for <code><a href="#y0">y0</a></code> or <code><a href="#y1">y1</a></code> is called directly.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Evaluate the function of order 0 at one point.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">yn</span>
|
|
<span class="gp">>>> </span><span class="n">yn</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">0.08825696421567697</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Evaluate the function at one point for different orders.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">yn</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">yn</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">yn</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">(0.08825696421567697, -0.7812128213002888, -1.6506826068162546)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>The evaluation for different orders can be carried out in one call by
|
|
providing a list or NumPy array as argument for the <code>v</code> parameter:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">yn</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">],</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">array([ 0.08825696, -0.78121282, -1.65068261])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Evaluate the function at several points for order 0 by providing an
|
|
array for <code>z</code>.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="n">points</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="mf">0.5</span><span class="p">,</span> <span class="mf">3.</span><span class="p">,</span> <span class="mf">8.</span><span class="p">])</span>
|
|
<span class="gp">>>> </span><span class="n">yn</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
|
|
<span class="go">array([-0.44451873, 0.37685001, 0.22352149])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>If <code>z</code> is an array, the order parameter <code>v</code> must be broadcastable to
|
|
the correct shape if different orders shall be computed in one call.
|
|
To calculate the orders 0 and 1 for an 1D array:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">orders</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
|
|
<span class="gp">>>> </span><span class="n">orders</span><span class="o">.</span><span class="n">shape</span>
|
|
<span class="go">(2, 1)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">yn</span><span class="p">(</span><span class="n">orders</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
|
|
<span class="go">array([[-0.44451873, 0.37685001, 0.22352149],</span>
|
|
<span class="go"> [-1.47147239, 0.32467442, -0.15806046]])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the functions of order 0 to 3 from 0 to 10.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
|
|
<span class="gp">... </span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">yn</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s1">'$Y_</span><span class="si">{</span><span class="n">i</span><span class="si">!r}</span><span class="s1">$'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">set_ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Cephes Mathematical Functions Library,
|
|
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="i0">
|
|
<input id="i0-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">i0</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="i0-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#i0"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="i0-36"><a href="#i0-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="i0-37"><a href="#i0-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="i0-38"><a href="#i0-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="i0-39"><a href="#i0-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="i0-40"><a href="#i0-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="i0-41"><a href="#i0-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="i0-42"><a href="#i0-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="i0-43"><a href="#i0-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="i0-44"><a href="#i0-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="i0-45"><a href="#i0-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="i0-46"><a href="#i0-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="i0-47"><a href="#i0-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="i0-48"><a href="#i0-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="i0-49"><a href="#i0-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>i0(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>i0(x, out=None)</p>
|
|
|
|
<p>Modified Bessel function of order 0.</p>
|
|
|
|
<p>Defined as,</p>
|
|
|
|
<p>$$I_0(x) = \sum_{k=0}^\infty \frac{(x^2/4)^k}{(k!)^2} = J_0(\imath x),$$</p>
|
|
|
|
<p>where \( J_0 \) is the Bessel function of the first kind of order 0.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (array_like):
|
|
Argument (float)</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>I</strong> (scalar or ndarray):
|
|
Value of the modified Bessel function of order 0 at <code>x</code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#iv">iv</a></code>: Modified Bessel function of any order <br />
|
|
<code>i0e</code>: Exponentially scaled modified Bessel function of order 0 </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The range is partitioned into the two intervals [0, 8] and (8, infinity).
|
|
Chebyshev polynomial expansions are employed in each interval.</p>
|
|
|
|
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#i0">i0</a></code>.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Calculate the function at one point:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">i0</span>
|
|
<span class="gp">>>> </span><span class="n">i0</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">1.2660658777520082</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Calculate at several points:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="n">i0</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">3.5</span><span class="p">]))</span>
|
|
<span class="go">array([2.2795853 , 1. , 7.37820343])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the function from -10 to 10.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">10.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">i0</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Cephes Mathematical Functions Library,
|
|
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="i1">
|
|
<input id="i1-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">i1</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="i1-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#i1"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="i1-36"><a href="#i1-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="i1-37"><a href="#i1-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="i1-38"><a href="#i1-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="i1-39"><a href="#i1-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="i1-40"><a href="#i1-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="i1-41"><a href="#i1-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="i1-42"><a href="#i1-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="i1-43"><a href="#i1-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="i1-44"><a href="#i1-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="i1-45"><a href="#i1-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="i1-46"><a href="#i1-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="i1-47"><a href="#i1-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="i1-48"><a href="#i1-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="i1-49"><a href="#i1-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>i1(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>i1(x, out=None)</p>
|
|
|
|
<p>Modified Bessel function of order 1.</p>
|
|
|
|
<p>Defined as,</p>
|
|
|
|
<p>$$I_1(x) = \frac{1}{2}x \sum_{k=0}^\infty \frac{(x^2/4)^k}{k! (k + 1)!}
|
|
= -\imath J_1(\imath x),$$</p>
|
|
|
|
<p>where \( J_1 \) is the Bessel function of the first kind of order 1.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (array_like):
|
|
Argument (float)</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>I</strong> (scalar or ndarray):
|
|
Value of the modified Bessel function of order 1 at <code>x</code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#iv">iv</a></code>: Modified Bessel function of the first kind <br />
|
|
<code>i1e</code>: Exponentially scaled modified Bessel function of order 1 </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The range is partitioned into the two intervals [0, 8] and (8, infinity).
|
|
Chebyshev polynomial expansions are employed in each interval.</p>
|
|
|
|
<p>This function is a wrapper for the Cephes <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> routine <code><a href="#i1">i1</a></code>.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Calculate the function at one point:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">i1</span>
|
|
<span class="gp">>>> </span><span class="n">i1</span><span class="p">(</span><span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">0.5651591039924851</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Calculate the function at several points:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="n">i1</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">6.</span><span class="p">]))</span>
|
|
<span class="go">array([-1.59063685, 0. , 61.34193678])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the function between -10 and 10.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">10.</span><span class="p">,</span> <span class="mf">10.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">i1</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Cephes Mathematical Functions Library,
|
|
<a href="http://www.netlib.org/cephes/">http://www.netlib.org/cephes/</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="iv">
|
|
<input id="iv-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">iv</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="iv-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#iv"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="iv-36"><a href="#iv-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="iv-37"><a href="#iv-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="iv-38"><a href="#iv-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="iv-39"><a href="#iv-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="iv-40"><a href="#iv-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="iv-41"><a href="#iv-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="iv-42"><a href="#iv-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="iv-43"><a href="#iv-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="iv-44"><a href="#iv-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="iv-45"><a href="#iv-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="iv-46"><a href="#iv-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="iv-47"><a href="#iv-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="iv-48"><a href="#iv-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="iv-49"><a href="#iv-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>iv(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>iv(v, z, out=None)</p>
|
|
|
|
<p>Modified Bessel function of the first kind of real order.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>v</strong> (array_like):
|
|
Order. If <code>z</code> is of real type and negative, <code>v</code> must be integer
|
|
valued.</li>
|
|
<li><strong>z</strong> (array_like of float or complex):
|
|
Argument.</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Values of the modified Bessel function.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#ive">ive</a></code>: This function with leading exponential behavior stripped off. <br />
|
|
<code><a href="#i0">i0</a></code>: Faster version of this function for order 0. <br />
|
|
<code><a href="#i1">i1</a></code>: Faster version of this function for order 1. </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>For real <code>z</code> and \( v \in [-50, 50] \), the evaluation is carried out
|
|
using Temme's method <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup>. For larger orders, uniform asymptotic
|
|
expansions are applied.</p>
|
|
|
|
<p>For complex <code>z</code> and positive <code>v</code>, the AMOS <sup class="footnote-ref" id="fnref-2"><a href="#fn-2">2</a></sup> <code>zbesi</code> routine is
|
|
called. It uses a power series for small <code>z</code>, the asymptotic expansion
|
|
for large <code>abs(z)</code>, the Miller algorithm normalized by the Wronskian
|
|
and a Neumann series for intermediate magnitudes, and the uniform
|
|
asymptotic expansions for \( I_v(z) \) and \( J_v(z) \) for large
|
|
orders. Backward recurrence is used to generate sequences or reduce
|
|
orders when necessary.</p>
|
|
|
|
<p>The calculations above are done in the right half plane and continued
|
|
into the left half plane by the formula,</p>
|
|
|
|
<p>$$I_v(z \exp(\pm\imath\pi)) = \exp(\pm\pi v) I_v(z)$$</p>
|
|
|
|
<p>(valid when the real part of <code>z</code> is positive). For negative <code>v</code>, the
|
|
formula</p>
|
|
|
|
<p>$$I_{-v}(z) = I_v(z) + \frac{2}{\pi} \sin(\pi v) K_v(z)$$</p>
|
|
|
|
<p>is used, where \( K_v(z) \) is the modified Bessel function of the
|
|
second kind, evaluated using the AMOS routine <code>zbesk</code>.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>Evaluate the function of order 0 at one point.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">iv</span>
|
|
<span class="gp">>>> </span><span class="n">iv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">1.2660658777520084</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Evaluate the function at one point for different orders.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">iv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">iv</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span> <span class="mf">1.</span><span class="p">),</span> <span class="n">iv</span><span class="p">(</span><span class="mf">1.5</span><span class="p">,</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">(1.2660658777520084, 0.565159103992485, 0.2935253263474798)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>The evaluation for different orders can be carried out in one call by
|
|
providing a list or NumPy array as argument for the <code>v</code> parameter:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">iv</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">],</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">array([1.26606588, 0.5651591 , 0.29352533])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Evaluate the function at several points for order 0 by providing an
|
|
array for <code>z</code>.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="n">points</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">])</span>
|
|
<span class="gp">>>> </span><span class="n">iv</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
|
|
<span class="go">array([2.2795853 , 1. , 4.88079259])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>If <code>z</code> is an array, the order parameter <code>v</code> must be broadcastable to
|
|
the correct shape if different orders shall be computed in one call.
|
|
To calculate the orders 0 and 1 for an 1D array:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">orders</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">]])</span>
|
|
<span class="gp">>>> </span><span class="n">orders</span><span class="o">.</span><span class="n">shape</span>
|
|
<span class="go">(2, 1)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">iv</span><span class="p">(</span><span class="n">orders</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
|
|
<span class="go">array([[ 2.2795853 , 1. , 4.88079259],</span>
|
|
<span class="go"> [-1.59063685, 0. , 3.95337022]])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the functions of order 0 to 3 from -5 to 5.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">5.</span><span class="p">,</span> <span class="mf">5.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
|
|
<span class="gp">... </span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">iv</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="sa">f</span><span class="s1">'$I_</span><span class="si">{</span><span class="n">i</span><span class="si">!r}</span><span class="s1">$'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Temme, Journal of Computational Physics, vol 21, 343 (1976) <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
|
|
<li id="fn-2">
|
|
<p>Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
|
|
of a Complex Argument and Nonnegative Order",
|
|
<a href="http://netlib.org/amos/">http://netlib.org/amos/</a> <a href="#fnref-2" class="footnoteBackLink" title="Jump back to footnote 2 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="ive">
|
|
<input id="ive-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">ive</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="ive-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#ive"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="ive-36"><a href="#ive-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="ive-37"><a href="#ive-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="ive-38"><a href="#ive-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="ive-39"><a href="#ive-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="ive-40"><a href="#ive-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="ive-41"><a href="#ive-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="ive-42"><a href="#ive-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="ive-43"><a href="#ive-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="ive-44"><a href="#ive-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="ive-45"><a href="#ive-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="ive-46"><a href="#ive-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="ive-47"><a href="#ive-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="ive-48"><a href="#ive-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="ive-49"><a href="#ive-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>ive(x1, x2, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>ive(v, z, out=None)</p>
|
|
|
|
<p>Exponentially scaled modified Bessel function of the first kind.</p>
|
|
|
|
<p>Defined as::</p>
|
|
|
|
<pre><code>ive(v, z) = iv(v, z) * exp(-abs(z.real))
|
|
</code></pre>
|
|
|
|
<p>For imaginary numbers without a real part, returns the unscaled
|
|
Bessel function of the first kind <code><a href="#iv">iv</a></code>.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>v</strong> (array_like of float):
|
|
Order.</li>
|
|
<li><strong>z</strong> (array_like of float or complex):
|
|
Argument.</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Values of the exponentially scaled modified Bessel function.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#iv">iv</a></code>: Modified Bessel function of the first kind <br />
|
|
<code>i0e</code>: Faster implementation of this function for order 0 <br />
|
|
<code>i1e</code>: Faster implementation of this function for order 1 </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>For positive <code>v</code>, the AMOS <sup class="footnote-ref" id="fnref-1"><a href="#fn-1">1</a></sup> <code>zbesi</code> routine is called. It uses a
|
|
power series for small <code>z</code>, the asymptotic expansion for large
|
|
<code>abs(z)</code>, the Miller algorithm normalized by the Wronskian and a
|
|
Neumann series for intermediate magnitudes, and the uniform asymptotic
|
|
expansions for \( I_v(z) \) and \( J_v(z) \) for large orders.
|
|
Backward recurrence is used to generate sequences or reduce orders when
|
|
necessary.</p>
|
|
|
|
<p>The calculations above are done in the right half plane and continued
|
|
into the left half plane by the formula,</p>
|
|
|
|
<p>$$I_v(z \exp(\pm\imath\pi)) = \exp(\pm\pi v) I_v(z)$$</p>
|
|
|
|
<p>(valid when the real part of <code>z</code> is positive). For negative <code>v</code>, the
|
|
formula</p>
|
|
|
|
<p>$$I_{-v}(z) = I_v(z) + \frac{2}{\pi} \sin(\pi v) K_v(z)$$</p>
|
|
|
|
<p>is used, where \( K_v(z) \) is the modified Bessel function of the
|
|
second kind, evaluated using the AMOS routine <code>zbesk</code>.</p>
|
|
|
|
<p><code><a href="#ive">ive</a></code> is useful for large arguments <code>z</code>: for these, <code><a href="#iv">iv</a></code> easily overflows,
|
|
while <code><a href="#ive">ive</a></code> does not due to the exponential scaling.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<p>In the following example <code><a href="#iv">iv</a></code> returns infinity whereas <code><a href="#ive">ive</a></code> still returns
|
|
a finite number.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">iv</span><span class="p">,</span> <span class="n">ive</span>
|
|
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">iv</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mf">1000.</span><span class="p">),</span> <span class="n">ive</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span> <span class="mf">1000.</span><span class="p">)</span>
|
|
<span class="go">(inf, 0.01256056218254712)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Evaluate the function at one point for different orders by
|
|
providing a list or NumPy array as argument for the <code>v</code> parameter:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">ive</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">],</span> <span class="mf">1.</span><span class="p">)</span>
|
|
<span class="go">array([0.46575961, 0.20791042, 0.10798193])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Evaluate the function at several points for order 0 by providing an
|
|
array for <code>z</code>.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">points</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="o">-</span><span class="mf">2.</span><span class="p">,</span> <span class="mf">0.</span><span class="p">,</span> <span class="mf">3.</span><span class="p">])</span>
|
|
<span class="gp">>>> </span><span class="n">ive</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="n">points</span><span class="p">)</span>
|
|
<span class="go">array([0.30850832, 1. , 0.24300035])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Evaluate the function at several points for different orders by
|
|
providing arrays for both <code>v</code> for <code>z</code>. Both arrays have to be
|
|
broadcastable to the correct shape. To calculate the orders 0, 1
|
|
and 2 for a 1D array of points:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">ive</span><span class="p">([[</span><span class="mi">0</span><span class="p">],</span> <span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="p">[</span><span class="mi">2</span><span class="p">]],</span> <span class="n">points</span><span class="p">)</span>
|
|
<span class="go">array([[ 0.30850832, 1. , 0.24300035],</span>
|
|
<span class="go"> [-0.21526929, 0. , 0.19682671],</span>
|
|
<span class="go"> [ 0.09323903, 0. , 0.11178255]])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the functions of order 0 to 3 from -5 to 5.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">5.</span><span class="p">,</span> <span class="mf">5.</span><span class="p">,</span> <span class="mi">1000</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="k">for</span> <span class="n">i</span> <span class="ow">in</span> <span class="nb">range</span><span class="p">(</span><span class="mi">4</span><span class="p">):</span>
|
|
<span class="gp">... </span> <span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">ive</span><span class="p">(</span><span class="n">i</span><span class="p">,</span> <span class="n">x</span><span class="p">),</span> <span class="n">label</span><span class="o">=</span><span class="sa">fr</span><span class="s1">'$I_</span><span class="si">{</span><span class="n">i</span><span class="si">!r}</span><span class="s1">(z)\cdot e^</span><span class="se">{{</span><span class="s1">-|z|</span><span class="se">}}</span><span class="s1">$'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">legend</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="sa">r</span><span class="s2">"$z$"</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
<li id="fn-1">
|
|
<p>Donald E. Amos, "AMOS, A Portable Package for Bessel Functions
|
|
of a Complex Argument and Nonnegative Order",
|
|
<a href="http://netlib.org/amos/">http://netlib.org/amos/</a> <a href="#fnref-1" class="footnoteBackLink" title="Jump back to footnote 1 in the text.">↩</a></p>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="erf">
|
|
<input id="erf-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">erf</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="erf-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#erf"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="erf-36"><a href="#erf-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="erf-37"><a href="#erf-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="erf-38"><a href="#erf-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="erf-39"><a href="#erf-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="erf-40"><a href="#erf-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="erf-41"><a href="#erf-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="erf-42"><a href="#erf-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="erf-43"><a href="#erf-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="erf-44"><a href="#erf-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="erf-45"><a href="#erf-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="erf-46"><a href="#erf-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="erf-47"><a href="#erf-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="erf-48"><a href="#erf-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="erf-49"><a href="#erf-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>erf(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>erf(z, out=None)</p>
|
|
|
|
<p>Returns the error function of complex argument.</p>
|
|
|
|
<p>It is defined as <code>2/sqrt(pi)*integral(exp(-t**2), t=0..z)</code>.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (ndarray):
|
|
Input array.</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>res</strong> (scalar or ndarray):
|
|
The values of the error function at the given points <code>x</code>.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code>erfc,</code>, <code>erfinv,</code>, <code>erfcinv,</code>, <code>wofz,</code>, <code>erfcx,</code>, <code>erfi</code> </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>The cumulative of the unit normal distribution is given by
|
|
<code>Phi(z) = 1/2[1 + erf(z/sqrt(2))]</code>.</p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="n">special</span>
|
|
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">special</span><span class="o">.</span><span class="n">erf</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'$x$'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'$erf(x)$'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="erfc">
|
|
<input id="erfc-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">erfc</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="erfc-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#erfc"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="erfc-36"><a href="#erfc-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="erfc-37"><a href="#erfc-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="erfc-38"><a href="#erfc-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="erfc-39"><a href="#erfc-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="erfc-40"><a href="#erfc-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="erfc-41"><a href="#erfc-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="erfc-42"><a href="#erfc-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="erfc-43"><a href="#erfc-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="erfc-44"><a href="#erfc-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="erfc-45"><a href="#erfc-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="erfc-46"><a href="#erfc-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="erfc-47"><a href="#erfc-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="erfc-48"><a href="#erfc-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="erfc-49"><a href="#erfc-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>erfc(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>erfc(x, out=None)</p>
|
|
|
|
<p>Complementary error function, <code>1 - erf(x)</code>.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (array_like):
|
|
Real or complex valued argument</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function results</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: Values of the complementary error function</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code>erf,</code>, <code>erfi,</code>, <code>erfcx,</code>, <code>dawsn,</code>, <code>wofz</code> </p>
|
|
|
|
<h6 id="references">References</h6>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy</span> <span class="kn">import</span> <span class="n">special</span>
|
|
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">3</span><span class="p">,</span> <span class="mi">3</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">special</span><span class="o">.</span><span class="n">erfc</span><span class="p">(</span><span class="n">x</span><span class="p">))</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'$x$'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">ylabel</span><span class="p">(</span><span class="s1">'$erfc(x)$'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="footnotes">
|
|
<hr />
|
|
<ol>
|
|
</ol>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="erfinv">
|
|
<input id="erfinv-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">erfinv</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="erfinv-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#erfinv"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="erfinv-36"><a href="#erfinv-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="erfinv-37"><a href="#erfinv-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="erfinv-38"><a href="#erfinv-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="erfinv-39"><a href="#erfinv-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="erfinv-40"><a href="#erfinv-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="erfinv-41"><a href="#erfinv-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="erfinv-42"><a href="#erfinv-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="erfinv-43"><a href="#erfinv-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="erfinv-44"><a href="#erfinv-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="erfinv-45"><a href="#erfinv-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="erfinv-46"><a href="#erfinv-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="erfinv-47"><a href="#erfinv-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="erfinv-48"><a href="#erfinv-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="erfinv-49"><a href="#erfinv-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>erfinv(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>erfinv(y, out=None)</p>
|
|
|
|
<p>Inverse of the error function.</p>
|
|
|
|
<p>Computes the inverse of the error function.</p>
|
|
|
|
<p>In the complex domain, there is no unique complex number w satisfying
|
|
erf(w)=z. This indicates a true inverse function would be multivalued.
|
|
When the domain restricts to the real, -1 < x < 1, there is a unique real
|
|
number satisfying erf(erfinv(x)) = x.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>y</strong> (ndarray):
|
|
Argument at which to evaluate. Domain: [-1, 1]</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>erfinv</strong> (scalar or ndarray):
|
|
The inverse of erf of y, element-wise</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#erf">erf</a></code>: Error function of a complex argument <br />
|
|
<code><a href="#erfc">erfc</a></code>: Complementary error function, <code>1 - erf(x)</code> <br />
|
|
<code><a href="#erfcinv">erfcinv</a></code>: Inverse of the complementary error function </p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">erfinv</span><span class="p">,</span> <span class="n">erf</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">erfinv</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
|
|
<span class="go">0.4769362762044699</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mf">1.0</span><span class="p">,</span> <span class="mf">1.0</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="mi">9</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">erfinv</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">x</span>
|
|
<span class="go">array([ -inf, -0.81341985, -0.47693628, -0.22531206, 0. ,</span>
|
|
<span class="go"> 0.22531206, 0.47693628, 0.81341985, inf])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Verify that <code>erf(erfinv(y))</code> is <code>y</code>.</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">erf</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="go">array([-1. , -0.75, -0.5 , -0.25, 0. , 0.25, 0.5 , 0.75, 1. ])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the function:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">1</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">erfinv</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'y'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'erfinv(y)'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="erfcinv">
|
|
<input id="erfcinv-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">erfcinv</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="erfcinv-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#erfcinv"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="erfcinv-36"><a href="#erfcinv-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="erfcinv-37"><a href="#erfcinv-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="erfcinv-38"><a href="#erfcinv-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="erfcinv-39"><a href="#erfcinv-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="erfcinv-40"><a href="#erfcinv-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="erfcinv-41"><a href="#erfcinv-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="erfcinv-42"><a href="#erfcinv-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="erfcinv-43"><a href="#erfcinv-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="erfcinv-44"><a href="#erfcinv-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="erfcinv-45"><a href="#erfcinv-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="erfcinv-46"><a href="#erfcinv-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="erfcinv-47"><a href="#erfcinv-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="erfcinv-48"><a href="#erfcinv-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="erfcinv-49"><a href="#erfcinv-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>erfcinv(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>erfcinv(y, out=None)</p>
|
|
|
|
<p>Inverse of the complementary error function.</p>
|
|
|
|
<p>Computes the inverse of the complementary error function.</p>
|
|
|
|
<p>In the complex domain, there is no unique complex number w satisfying
|
|
erfc(w)=z. This indicates a true inverse function would be multivalued.
|
|
When the domain restricts to the real, 0 < x < 2, there is a unique real
|
|
number satisfying erfc(erfcinv(x)) = erfcinv(erfc(x)).</p>
|
|
|
|
<p>It is related to inverse of the error function by erfcinv(1-x) = erfinv(x)</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>y</strong> (ndarray):
|
|
Argument at which to evaluate. Domain: [0, 2]</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>erfcinv</strong> (scalar or ndarray):
|
|
The inverse of erfc of y, element-wise</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#erf">erf</a></code>: Error function of a complex argument <br />
|
|
<code><a href="#erfc">erfc</a></code>: Complementary error function, <code>1 - erf(x)</code> <br />
|
|
<code><a href="#erfinv">erfinv</a></code>: Inverse of the error function </p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">erfcinv</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">erfcinv</span><span class="p">(</span><span class="mf">0.5</span><span class="p">)</span>
|
|
<span class="go">0.4769362762044699</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mf">0.0</span><span class="p">,</span> <span class="mf">2.0</span><span class="p">,</span> <span class="n">num</span><span class="o">=</span><span class="mi">11</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">erfcinv</span><span class="p">(</span><span class="n">y</span><span class="p">)</span>
|
|
<span class="go">array([ inf, 0.9061938 , 0.59511608, 0.37080716, 0.17914345,</span>
|
|
<span class="go"> -0. , -0.17914345, -0.37080716, -0.59511608, -0.9061938 ,</span>
|
|
<span class="go"> -inf])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot the function:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">200</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">fig</span><span class="p">,</span> <span class="n">ax</span> <span class="o">=</span> <span class="n">plt</span><span class="o">.</span><span class="n">subplots</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">y</span><span class="p">,</span> <span class="n">erfcinv</span><span class="p">(</span><span class="n">y</span><span class="p">))</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">grid</span><span class="p">(</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">set_xlabel</span><span class="p">(</span><span class="s1">'y'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">ax</span><span class="o">.</span><span class="n">set_title</span><span class="p">(</span><span class="s1">'erfcinv(y)'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="logit">
|
|
<input id="logit-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">logit</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="logit-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#logit"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="logit-36"><a href="#logit-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="logit-37"><a href="#logit-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="logit-38"><a href="#logit-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="logit-39"><a href="#logit-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="logit-40"><a href="#logit-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="logit-41"><a href="#logit-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="logit-42"><a href="#logit-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="logit-43"><a href="#logit-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="logit-44"><a href="#logit-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="logit-45"><a href="#logit-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="logit-46"><a href="#logit-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="logit-47"><a href="#logit-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="logit-48"><a href="#logit-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="logit-49"><a href="#logit-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>logit(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>logit(x, out=None)</p>
|
|
|
|
<p>Logit ufunc for ndarrays.</p>
|
|
|
|
<p>The logit function is defined as logit(p) = log(p/(1-p)).
|
|
Note that logit(0) = -inf, logit(1) = inf, and logit(p)
|
|
for p<0 or p>1 yields nan.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (ndarray):
|
|
The ndarray to apply logit to element-wise.</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function results</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: An ndarray of the same shape as x. Its entries
|
|
are logit of the corresponding entry of x.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#expit">expit</a></code> </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>As a ufunc logit takes a number of optional
|
|
keyword arguments. For more information
|
|
see <a href="https://docs.scipy.org/doc/numpy/reference/ufuncs.html">ufuncs </a></p>
|
|
|
|
<p><em>New in version 0.10.0.</em></p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">logit</span><span class="p">,</span> <span class="n">expit</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">logit</span><span class="p">([</span><span class="mi">0</span><span class="p">,</span> <span class="mf">0.25</span><span class="p">,</span> <span class="mf">0.5</span><span class="p">,</span> <span class="mf">0.75</span><span class="p">,</span> <span class="mi">1</span><span class="p">])</span>
|
|
<span class="go">array([ -inf, -1.09861229, 0. , 1.09861229, inf])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p><code><a href="#expit">expit</a></code> is the inverse of <code><a href="#logit">logit</a></code>:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">expit</span><span class="p">(</span><span class="n">logit</span><span class="p">([</span><span class="mf">0.1</span><span class="p">,</span> <span class="mf">0.75</span><span class="p">,</span> <span class="mf">0.999</span><span class="p">]))</span>
|
|
<span class="go">array([ 0.1 , 0.75 , 0.999])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot logit(x) for x in [0, 1]:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">501</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">logit</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">ylim</span><span class="p">(</span><span class="o">-</span><span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'x'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'logit(x)'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="expit">
|
|
<input id="expit-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">expit</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="expit-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#expit"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="expit-36"><a href="#expit-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="expit-37"><a href="#expit-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="expit-38"><a href="#expit-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="expit-39"><a href="#expit-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="expit-40"><a href="#expit-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="expit-41"><a href="#expit-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="expit-42"><a href="#expit-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="expit-43"><a href="#expit-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="expit-44"><a href="#expit-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="expit-45"><a href="#expit-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="expit-46"><a href="#expit-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="expit-47"><a href="#expit-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="expit-48"><a href="#expit-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="expit-49"><a href="#expit-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>expit(x, /, out=None, *, where=True, casting='same_kind', order='K', dtype=None, subok=True[, signature, extobj])</p>
|
|
|
|
<p>expit(x, out=None)</p>
|
|
|
|
<p>Expit (a.k.a. logistic sigmoid) ufunc for ndarrays.</p>
|
|
|
|
<p>The expit function, also known as the logistic sigmoid function, is
|
|
defined as <code>expit(x) = 1/(1+exp(-x))</code>. It is the inverse of the
|
|
logit function.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>x</strong> (ndarray):
|
|
The ndarray to apply expit to element-wise.</li>
|
|
<li><strong>out</strong> (ndarray, optional):
|
|
Optional output array for the function values</li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>scalar or ndarray</strong>: An ndarray of the same shape as x. Its entries
|
|
are <code><a href="#expit">expit</a></code> of the corresponding entry of x.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code><a href="#logit">logit</a></code> </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>As a ufunc expit takes a number of optional
|
|
keyword arguments. For more information
|
|
see <a href="https://docs.scipy.org/doc/numpy/reference/ufuncs.html">ufuncs </a></p>
|
|
|
|
<p><em>New in version 0.10.0.</em></p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">expit</span><span class="p">,</span> <span class="n">logit</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">expit</span><span class="p">([</span><span class="o">-</span><span class="n">np</span><span class="o">.</span><span class="n">inf</span><span class="p">,</span> <span class="o">-</span><span class="mf">1.5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mf">1.5</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">inf</span><span class="p">])</span>
|
|
<span class="go">array([ 0. , 0.18242552, 0.5 , 0.81757448, 1. ])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p><code><a href="#logit">logit</a></code> is the inverse of <code><a href="#expit">expit</a></code>:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">logit</span><span class="p">(</span><span class="n">expit</span><span class="p">([</span><span class="o">-</span><span class="mf">2.5</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="mf">3.1</span><span class="p">,</span> <span class="mf">5.0</span><span class="p">]))</span>
|
|
<span class="go">array([-2.5, 0. , 3.1, 5. ])</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Plot expit(x) for x in [-6, 6]:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">matplotlib.pyplot</span> <span class="k">as</span> <span class="nn">plt</span>
|
|
<span class="gp">>>> </span><span class="n">x</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">linspace</span><span class="p">(</span><span class="o">-</span><span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">,</span> <span class="mi">121</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">y</span> <span class="o">=</span> <span class="n">expit</span><span class="p">(</span><span class="n">x</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">plot</span><span class="p">(</span><span class="n">x</span><span class="p">,</span> <span class="n">y</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">grid</span><span class="p">()</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">xlim</span><span class="p">(</span><span class="o">-</span><span class="mi">6</span><span class="p">,</span> <span class="mi">6</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">xlabel</span><span class="p">(</span><span class="s1">'x'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">title</span><span class="p">(</span><span class="s1">'expit(x)'</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">plt</span><span class="o">.</span><span class="n">show</span><span class="p">()</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
<section id="logsumexp">
|
|
<input id="logsumexp-view-source" class="view-source-toggle-state" type="checkbox" aria-hidden="true" tabindex="-1">
|
|
<div class="attr function">
|
|
<div class="decorator">@wraps(f_raw)</div>
|
|
|
|
<span class="def">def</span>
|
|
<span class="name">logsumexp</span><span class="signature pdoc-code condensed">(<span class="param"><span class="o">*</span><span class="n">args</span>, </span><span class="param"><span class="o">**</span><span class="n">kwargs</span></span><span class="return-annotation">):</span></span>
|
|
|
|
<label class="view-source-button" for="logsumexp-view-source"><span>View Source</span></label>
|
|
|
|
</div>
|
|
<a class="headerlink" href="#logsumexp"></a>
|
|
<div class="pdoc-code codehilite"><pre><span></span><span id="logsumexp-36"><a href="#logsumexp-36"><span class="linenos">36</span></a> <span class="nd">@wraps</span><span class="p">(</span><span class="n">f_raw</span><span class="p">)</span>
|
|
</span><span id="logsumexp-37"><a href="#logsumexp-37"><span class="linenos">37</span></a> <span class="k">def</span> <span class="nf">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">):</span>
|
|
</span><span id="logsumexp-38"><a href="#logsumexp-38"><span class="linenos">38</span></a> <span class="n">boxed_args</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node_constructor</span> <span class="o">=</span> <span class="n">find_top_boxed_args</span><span class="p">(</span><span class="n">args</span><span class="p">)</span>
|
|
</span><span id="logsumexp-39"><a href="#logsumexp-39"><span class="linenos">39</span></a> <span class="k">if</span> <span class="n">boxed_args</span><span class="p">:</span>
|
|
</span><span id="logsumexp-40"><a href="#logsumexp-40"><span class="linenos">40</span></a> <span class="n">argvals</span> <span class="o">=</span> <span class="n">subvals</span><span class="p">(</span><span class="n">args</span><span class="p">,</span> <span class="p">[(</span><span class="n">argnum</span><span class="p">,</span> <span class="n">box</span><span class="o">.</span><span class="n">_value</span><span class="p">)</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">])</span>
|
|
</span><span id="logsumexp-41"><a href="#logsumexp-41"><span class="linenos">41</span></a> <span class="k">if</span> <span class="n">f_wrapped</span> <span class="ow">in</span> <span class="n">notrace_primitives</span><span class="p">[</span><span class="n">node_constructor</span><span class="p">]:</span>
|
|
</span><span id="logsumexp-42"><a href="#logsumexp-42"><span class="linenos">42</span></a> <span class="k">return</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="logsumexp-43"><a href="#logsumexp-43"><span class="linenos">43</span></a> <span class="n">parents</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">box</span><span class="o">.</span><span class="n">_node</span> <span class="k">for</span> <span class="n">_</span> <span class="p">,</span> <span class="n">box</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="logsumexp-44"><a href="#logsumexp-44"><span class="linenos">44</span></a> <span class="n">argnums</span> <span class="o">=</span> <span class="nb">tuple</span><span class="p">(</span><span class="n">argnum</span> <span class="k">for</span> <span class="n">argnum</span><span class="p">,</span> <span class="n">_</span> <span class="ow">in</span> <span class="n">boxed_args</span><span class="p">)</span>
|
|
</span><span id="logsumexp-45"><a href="#logsumexp-45"><span class="linenos">45</span></a> <span class="n">ans</span> <span class="o">=</span> <span class="n">f_wrapped</span><span class="p">(</span><span class="o">*</span><span class="n">argvals</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span><span id="logsumexp-46"><a href="#logsumexp-46"><span class="linenos">46</span></a> <span class="n">node</span> <span class="o">=</span> <span class="n">node_constructor</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">f_wrapped</span><span class="p">,</span> <span class="n">argvals</span><span class="p">,</span> <span class="n">kwargs</span><span class="p">,</span> <span class="n">argnums</span><span class="p">,</span> <span class="n">parents</span><span class="p">)</span>
|
|
</span><span id="logsumexp-47"><a href="#logsumexp-47"><span class="linenos">47</span></a> <span class="k">return</span> <span class="n">new_box</span><span class="p">(</span><span class="n">ans</span><span class="p">,</span> <span class="n">trace</span><span class="p">,</span> <span class="n">node</span><span class="p">)</span>
|
|
</span><span id="logsumexp-48"><a href="#logsumexp-48"><span class="linenos">48</span></a> <span class="k">else</span><span class="p">:</span>
|
|
</span><span id="logsumexp-49"><a href="#logsumexp-49"><span class="linenos">49</span></a> <span class="k">return</span> <span class="n">f_raw</span><span class="p">(</span><span class="o">*</span><span class="n">args</span><span class="p">,</span> <span class="o">**</span><span class="n">kwargs</span><span class="p">)</span>
|
|
</span></pre></div>
|
|
|
|
|
|
<div class="docstring"><p>Compute the log of the sum of exponentials of input elements.</p>
|
|
|
|
<h6 id="parameters">Parameters</h6>
|
|
|
|
<ul>
|
|
<li><strong>a</strong> (array_like):
|
|
Input array.</li>
|
|
<li><p><strong>axis</strong> (None or int or tuple of ints, optional):
|
|
Axis or axes over which the sum is taken. By default <code>axis</code> is None,
|
|
and all elements are summed.</p>
|
|
|
|
<p><em>New in version 0.11.0.</em></p></li>
|
|
<li><p><strong>b</strong> (array-like, optional):
|
|
Scaling factor for exp(<code>a</code>) must be of the same shape as <code>a</code> or
|
|
broadcastable to <code>a</code>. These values may be negative in order to
|
|
implement subtraction.</p>
|
|
|
|
<p><em>New in version 0.12.0.</em></p></li>
|
|
<li><p><strong>keepdims</strong> (bool, optional):
|
|
If this is set to True, the axes which are reduced are left in the
|
|
result as dimensions with size one. With this option, the result
|
|
will broadcast correctly against the original array.</p>
|
|
|
|
<p><em>New in version 0.15.0.</em></p></li>
|
|
<li><p><strong>return_sign</strong> (bool, optional):
|
|
If this is set to True, the result will be a pair containing sign
|
|
information; if False, results that are negative will be returned
|
|
as NaN. Default is False (no sign information).</p>
|
|
|
|
<p><em>New in version 0.16.0.</em></p></li>
|
|
</ul>
|
|
|
|
<h6 id="returns">Returns</h6>
|
|
|
|
<ul>
|
|
<li><strong>res</strong> (ndarray):
|
|
The result, <code>np.log(np.sum(np.exp(a)))</code> calculated in a numerically
|
|
more stable way. If <code>b</code> is given then <code>np.log(np.sum(b*np.exp(a)))</code>
|
|
is returned. If <code>return_sign</code> is True, <code>res</code> contains the log of
|
|
the absolute value of the argument.</li>
|
|
<li><strong>sgn</strong> (ndarray):
|
|
If <code>return_sign</code> is True, this will be an array of floating-point
|
|
numbers matching res containing +1, 0, -1 (for real-valued inputs)
|
|
or a complex phase (for complex inputs). This gives the sign of the
|
|
argument of the logarithm in <code>res</code>.
|
|
If <code>return_sign</code> is False, only one result is returned.</li>
|
|
</ul>
|
|
|
|
<h6 id="see-also">See Also</h6>
|
|
|
|
<p><code>numpy.logaddexp,</code>, <code>numpy.logaddexp2</code> </p>
|
|
|
|
<h6 id="notes">Notes</h6>
|
|
|
|
<p>NumPy has a logaddexp function which is very similar to <code><a href="#logsumexp">logsumexp</a></code>, but
|
|
only handles two arguments. <code>logaddexp.reduce</code> is similar to this
|
|
function, but may be less stable.</p>
|
|
|
|
<h6 id="examples">Examples</h6>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="kn">import</span> <span class="nn">numpy</span> <span class="k">as</span> <span class="nn">np</span>
|
|
<span class="gp">>>> </span><span class="kn">from</span> <span class="nn">scipy.special</span> <span class="kn">import</span> <span class="n">logsumexp</span>
|
|
<span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">logsumexp</span><span class="p">(</span><span class="n">a</span><span class="p">)</span>
|
|
<span class="go">9.4586297444267107</span>
|
|
<span class="gp">>>> </span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">a</span><span class="p">)))</span>
|
|
<span class="go">9.4586297444267107</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>With weights</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">b</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">arange</span><span class="p">(</span><span class="mi">10</span><span class="p">,</span> <span class="mi">0</span><span class="p">,</span> <span class="o">-</span><span class="mi">1</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">logsumexp</span><span class="p">(</span><span class="n">a</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="n">b</span><span class="p">)</span>
|
|
<span class="go">9.9170178533034665</span>
|
|
<span class="gp">>>> </span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="n">np</span><span class="o">.</span><span class="n">sum</span><span class="p">(</span><span class="n">b</span><span class="o">*</span><span class="n">np</span><span class="o">.</span><span class="n">exp</span><span class="p">(</span><span class="n">a</span><span class="p">)))</span>
|
|
<span class="go">9.9170178533034647</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Returning a sign flag</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">logsumexp</span><span class="p">([</span><span class="mi">1</span><span class="p">,</span><span class="mi">2</span><span class="p">],</span><span class="n">b</span><span class="o">=</span><span class="p">[</span><span class="mi">1</span><span class="p">,</span><span class="o">-</span><span class="mi">1</span><span class="p">],</span><span class="n">return_sign</span><span class="o">=</span><span class="kc">True</span><span class="p">)</span>
|
|
<span class="go">(1.5413248546129181, -1.0)</span>
|
|
</code></pre>
|
|
</div>
|
|
|
|
<p>Notice that <code><a href="#logsumexp">logsumexp</a></code> does not directly support masked arrays. To use it
|
|
on a masked array, convert the mask into zero weights:</p>
|
|
|
|
<div class="pdoc-code codehilite">
|
|
<pre><span></span><code><span class="gp">>>> </span><span class="n">a</span> <span class="o">=</span> <span class="n">np</span><span class="o">.</span><span class="n">ma</span><span class="o">.</span><span class="n">array</span><span class="p">([</span><span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">2</span><span class="p">),</span> <span class="mi">2</span><span class="p">,</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">3</span><span class="p">)],</span>
|
|
<span class="gp">... </span> <span class="n">mask</span><span class="o">=</span><span class="p">[</span><span class="kc">False</span><span class="p">,</span> <span class="kc">True</span><span class="p">,</span> <span class="kc">False</span><span class="p">])</span>
|
|
<span class="gp">>>> </span><span class="n">b</span> <span class="o">=</span> <span class="p">(</span><span class="o">~</span><span class="n">a</span><span class="o">.</span><span class="n">mask</span><span class="p">)</span><span class="o">.</span><span class="n">astype</span><span class="p">(</span><span class="nb">int</span><span class="p">)</span>
|
|
<span class="gp">>>> </span><span class="n">logsumexp</span><span class="p">(</span><span class="n">a</span><span class="o">.</span><span class="n">data</span><span class="p">,</span> <span class="n">b</span><span class="o">=</span><span class="n">b</span><span class="p">),</span> <span class="n">np</span><span class="o">.</span><span class="n">log</span><span class="p">(</span><span class="mi">5</span><span class="p">)</span>
|
|
<span class="go">1.6094379124341005, 1.6094379124341005</span>
|
|
</code></pre>
|
|
</div>
|
|
</div>
|
|
|
|
|
|
</section>
|
|
</main>
|
|
<script>
|
|
function escapeHTML(html) {
|
|
return document.createElement('div').appendChild(document.createTextNode(html)).parentNode.innerHTML;
|
|
}
|
|
|
|
const originalContent = document.querySelector("main.pdoc");
|
|
let currentContent = originalContent;
|
|
|
|
function setContent(innerHTML) {
|
|
let elem;
|
|
if (innerHTML) {
|
|
elem = document.createElement("main");
|
|
elem.classList.add("pdoc");
|
|
elem.innerHTML = innerHTML;
|
|
} else {
|
|
elem = originalContent;
|
|
}
|
|
if (currentContent !== elem) {
|
|
currentContent.replaceWith(elem);
|
|
currentContent = elem;
|
|
}
|
|
}
|
|
|
|
function getSearchTerm() {
|
|
return (new URL(window.location)).searchParams.get("search");
|
|
}
|
|
|
|
const searchBox = document.querySelector(".pdoc input[type=search]");
|
|
searchBox.addEventListener("input", function () {
|
|
let url = new URL(window.location);
|
|
if (searchBox.value.trim()) {
|
|
url.hash = "";
|
|
url.searchParams.set("search", searchBox.value);
|
|
} else {
|
|
url.searchParams.delete("search");
|
|
}
|
|
history.replaceState("", "", url.toString());
|
|
onInput();
|
|
});
|
|
window.addEventListener("popstate", onInput);
|
|
|
|
|
|
let search, searchErr;
|
|
|
|
async function initialize() {
|
|
try {
|
|
search = await new Promise((resolve, reject) => {
|
|
const script = document.createElement("script");
|
|
script.type = "text/javascript";
|
|
script.async = true;
|
|
script.onload = () => resolve(window.pdocSearch);
|
|
script.onerror = (e) => reject(e);
|
|
script.src = "../search.js";
|
|
document.getElementsByTagName("head")[0].appendChild(script);
|
|
});
|
|
} catch (e) {
|
|
console.error("Cannot fetch pdoc search index");
|
|
searchErr = "Cannot fetch search index.";
|
|
}
|
|
onInput();
|
|
|
|
document.querySelector("nav.pdoc").addEventListener("click", e => {
|
|
if (e.target.hash) {
|
|
searchBox.value = "";
|
|
searchBox.dispatchEvent(new Event("input"));
|
|
}
|
|
});
|
|
}
|
|
|
|
function onInput() {
|
|
setContent((() => {
|
|
const term = getSearchTerm();
|
|
if (!term) {
|
|
return null
|
|
}
|
|
if (searchErr) {
|
|
return `<h3>Error: ${searchErr}</h3>`
|
|
}
|
|
if (!search) {
|
|
return "<h3>Searching...</h3>"
|
|
}
|
|
|
|
window.scrollTo({top: 0, left: 0, behavior: 'auto'});
|
|
|
|
const results = search(term);
|
|
|
|
let html;
|
|
if (results.length === 0) {
|
|
html = `No search results for '${escapeHTML(term)}'.`
|
|
} else {
|
|
html = `<h4>${results.length} search result${results.length > 1 ? "s" : ""} for '${escapeHTML(term)}'.</h4>`;
|
|
}
|
|
for (let result of results.slice(0, 10)) {
|
|
let doc = result.doc;
|
|
let url = `../${doc.modulename.replaceAll(".", "/")}.html`;
|
|
if (doc.qualname) {
|
|
url += `#${doc.qualname}`;
|
|
}
|
|
|
|
let heading;
|
|
switch (result.doc.kind) {
|
|
case "function":
|
|
if (doc.fullname.endsWith(".__init__")) {
|
|
heading = `<span class="name">${doc.fullname.replace(/\.__init__$/, "")}</span>${doc.signature}`;
|
|
} else {
|
|
heading = `<span class="def">${doc.funcdef}</span> <span class="name">${doc.fullname}</span>${doc.signature}`;
|
|
}
|
|
break;
|
|
case "class":
|
|
heading = `<span class="def">class</span> <span class="name">${doc.fullname}</span>`;
|
|
if (doc.bases)
|
|
heading += `<wbr>(<span class="base">${doc.bases}</span>)`;
|
|
heading += `:`;
|
|
break;
|
|
case "variable":
|
|
heading = `<span class="name">${doc.fullname}</span>`;
|
|
if (doc.annotation)
|
|
heading += `<span class="annotation">${doc.annotation}</span>`;
|
|
if (doc.default_value)
|
|
heading += `<span class="default_value"> = ${doc.default_value}</span>`;
|
|
break;
|
|
default:
|
|
heading = `<span class="name">${doc.fullname}</span>`;
|
|
break;
|
|
}
|
|
html += `
|
|
<section class="search-result">
|
|
<a href="${url}" class="attr ${doc.kind}">${heading}</a>
|
|
<div class="docstring">${doc.doc}</div>
|
|
</section>
|
|
`;
|
|
|
|
}
|
|
return html;
|
|
})());
|
|
}
|
|
|
|
if (getSearchTerm()) {
|
|
initialize();
|
|
searchBox.value = getSearchTerm();
|
|
onInput();
|
|
} else {
|
|
searchBox.addEventListener("focus", initialize, {once: true});
|
|
}
|
|
|
|
searchBox.addEventListener("keydown", e => {
|
|
if (["ArrowDown", "ArrowUp", "Enter"].includes(e.key)) {
|
|
let focused = currentContent.querySelector(".search-result.focused");
|
|
if (!focused) {
|
|
currentContent.querySelector(".search-result").classList.add("focused");
|
|
} else if (
|
|
e.key === "ArrowDown"
|
|
&& focused.nextElementSibling
|
|
&& focused.nextElementSibling.classList.contains("search-result")
|
|
) {
|
|
focused.classList.remove("focused");
|
|
focused.nextElementSibling.classList.add("focused");
|
|
focused.nextElementSibling.scrollIntoView({
|
|
behavior: "smooth",
|
|
block: "nearest",
|
|
inline: "nearest"
|
|
});
|
|
} else if (
|
|
e.key === "ArrowUp"
|
|
&& focused.previousElementSibling
|
|
&& focused.previousElementSibling.classList.contains("search-result")
|
|
) {
|
|
focused.classList.remove("focused");
|
|
focused.previousElementSibling.classList.add("focused");
|
|
focused.previousElementSibling.scrollIntoView({
|
|
behavior: "smooth",
|
|
block: "nearest",
|
|
inline: "nearest"
|
|
});
|
|
} else if (
|
|
e.key === "Enter"
|
|
) {
|
|
focused.querySelector("a").click();
|
|
}
|
|
}
|
|
});
|
|
</script></body>
|
|
</html> |