2 * Introduction to orthogonal polynomials::
3 * Functions and Variables for orthogonal polynomials::
6 @node Introduction to orthogonal polynomials, Functions and Variables for orthogonal polynomials, orthopoly, orthopoly
7 @section Introduction to orthogonal polynomials
10 Chebyshev, Laguerre, Hermite, Jacobi, Legendre, 超球(Gegenbauer)
11 多項式を含むいくつかの種類の直交多項式のシンボリックな評価と数値評価のためのパッケージです。
12 さらに、@code{orthopoly}には球Bessel, 球Hankel, 球調和関数のサポートが含まれます。
16 Abramowitz and Stegunの@i{Handbook of Mathematical Functions}, Chapter 22 (10th printing, December 1972)の慣例に従います;
18 Gradshteyn and Ryzhikの@i{Table of Integrals, Series, and Products} (1980 corrected and enlarged edition)と
19 Eugen Merzbacherの@i{Quantum Mechanics} (2nd edition, 1970)を使います。
21 @c INSTALLATION INSTRUCTIONS NO LONGER RELEVANT
22 @c BUT MAYBE SOME OF THESE FILES SHOULD BE MENTIONED IN ANOTHER CONTEXT
23 @c This will create a directory @code{orthopoly_x} (again x is the release
24 @c identifier) that contains the source file @code{orthopoly.lisp}, user
25 @c documentation in html and texi formats, a sample maxima initialization file
26 @c @code{orthopoly-init.lisp}, a README file, a testing routine
27 @c @code{test_orthopoly.mac}, and two demonstration files.
29 @c Start Maxima and compile orthopoly. To do this, use the command
31 @c (c1) compile_file("orthopoly.lisp");
33 University of Nebraska at Kearney (UNK)のBarton Willisが
34 @code{orthopoly}パッケージとドキュメンテーションを書きました。
35 パッケージはGNU General Public License (GPL)の下で公開されています。
38 @category{Orthogonal polynomials}
39 @category{Share packages}
40 @category{Package orthopoly}
43 @subsection Getting Started with orthopoly
45 @code{load ("orthopoly")}は@code{orthopoly}パッケージをロードします。
47 3次のLegendre多項式を見つけるには、
53 (%i1) legendre_p (3, x);
56 (%o1) - ---------- + ----------- - 6 (1 - x) + 1
60 これを@var{x}の冪の和として表すには、
61 @var{ratsimp}か@var{rat}を結果に適用してください。
63 @c CONTINUING PREVIOUS EXAMPLE HERE
65 @c [ratsimp (%), rat (%)];
68 (%i2) [ratsimp (%), rat (%)];
71 (%o2)/R/ [----------, ----------]
76 @code{legendre_p}の第二引数 (「主」変数)を正準有理形(CRE)にしてください。
79 @c legendre_p (3, rat (x));
82 (%i1) legendre_p (3, rat (x));
90 @code{orthopoly}はランニング誤差解析を使って
95 @c jacobi_p (150, 2, 3, 0.2);
98 (%i1) jacobi_p (150, 2, 3, 0.2);
99 (%o1) interval(- 0.062017037936715, 1.533267919277521E-11)
102 区間(interval)は形式form @code{interval (@var{c}, @var{r})}を取ります。
103 ここで、@var{c}は中央値、@var{r}は区間の半径です。
104 Maximaは区間上の算術をサポートしていないので、
106 誤差を抑制し、区間の中央値だけ出力したいでしょう。
107 これをするには、オプション変数@code{orthopoly_returns_intervals}を
108 @code{false}に設定してください。
111 @c orthopoly_returns_intervals : false;
112 @c jacobi_p (150, 2, 3, 0.2);
115 (%i1) orthopoly_returns_intervals : false;
117 (%i2) jacobi_p (150, 2, 3, 0.2);
118 (%o2) - 0.062017037936715
121 更に知るにはセクション@pxref{Floating point Evaluation}を参照してください。
123 @code{orthopoly}のほとんどの関数は@code{gradef}プロパティを持ちます;
127 @c diff (hermite (n, x), x);
128 @c diff (gen_laguerre (n, a, x), x);
131 (%i1) diff (hermite (n, x), x);
134 (%i2) diff (gen_laguerre (n, a, x), x);
136 n L (x) - (n + a) L (x) unit_step(n)
138 (%o2) ------------------------------------------
144 @var{n}が0で評価することによって、そうでなければ生じる誤差を抑制します。
146 @c CONTINUING PREVIOUS EXAMPLE HERE
155 @code{gradef}プロパティは「主」変数にのみ適用されます;
156 他の引数に関する導関数は、普通、エラーメッセージに帰着します;
160 @c diff (hermite (n, x), x);
161 @c diff (hermite (n, x), n);
164 (%i1) diff (hermite (n, x), x);
167 (%i2) diff (hermite (n, x), n);
169 Maxima doesn't know the derivative of hermite with respect the first
171 -- an error. Quitting. To debug this try debugmode(true);
174 一般に、@code{orthopoly}の関数はリストや行列上に写像します。
176 オプション変数@code{doallmxops}と@code{listarith}はともに
177 @code{true}(デフォルト値)でなければいけません。
178 行列上への写像を見るには、以下を考えてください。
182 @c m : matrix ([0, x], [y, 0]);
186 (%i1) hermite (2, x);
189 (%i2) m : matrix ([0, x], [y, 0]);
193 (%i3) hermite (2, m);
195 [ - 2 - 2 (1 - 2 x ) ]
198 [ - 2 (1 - 2 y ) - 2 ]
201 二番目の例では、値の@code{i, j}要素は@code{hermite (2, m[i,j])}です;
203 計算@code{-2 + 4 m . m}と同じではありません。
205 @c CONTINUING PREVIOUS EXAMPLE HERE
207 @c -2 * matrix ([1, 0], [0, 1]) + 4 * m . m;
210 (%i4) -2 * matrix ([1, 0], [0, 1]) + 4 * m . m;
217 一般に、@code{orthopoly}は未評価関数を返します。
221 @c legendre_p (2/3, x);
224 (%i1) legendre_p (2/3, x);
229 @code{orthopoly}はTexへの翻訳をサポートします;
233 @c spherical_harmonic (l, m, theta, phi);
235 @c jacobi_p (n, a, a - b, x/2);
239 (%i1) spherical_harmonic (l, m, theta, phi);
244 $$Y_@{l@}^@{m@}\left(\vartheta,\varphi\right)$$
246 (%i3) jacobi_p (n, a, a - b, x/2);
251 $$P_@{n@}^@{\left(a,a-b\right)@}\left(@{@{x@}\over@{2@}@}\right)$$
255 @subsection Limitations
257 式がいくつかの直交多項式を記号順で含む時、
259 まだMaximaはそれを零に整理することができません。
260 もしそんな量で割るなら、困ったことになるでしょう。
263 1より大きな整数 @var{n}で零になりますが、
264 まだMaximaはそれを零に整理することができません。
267 @c (2*n - 1) * legendre_p (n - 1, x) * x - n * legendre_p (n, x)
268 @c + (1 - n) * legendre_p (n - 2, x);
271 (%i1) (2*n - 1) * legendre_p (n - 1, x) * x - n * legendre_p (n, x)
272 + (1 - n) * legendre_p (n - 2, x);
273 (%o1) (2 n - 1) P (x) x - n P (x) + (1 - n) P (x)
277 特定の @var{n}では式を零に換算できます。
279 @c CONTINUING PREVIOUS EXAMPLE HERE
281 @c ev (% ,n = 10, ratsimp);
284 (%i2) ev (% ,n = 10, ratsimp);
292 @c ACTUALLY NEEDS load("orthopoly"); BEFORE ANYTHING ELSE
294 @c p : jacobi_p (100, 2, 3, x)$
295 @c subst (0.2, x, p);
296 @c jacobi_p (100, 2, 3, 0.2);
297 @c float(jacobi_p (100, 2, 3, 2/10));
300 (%i1) p : jacobi_p (100, 2, 3, x)$
302 (%i2) subst (0.2, x, p);
303 (%o2) 3.4442767023833592E+35
304 (%i3) jacobi_p (100, 2, 3, 0.2);
305 (%o3) interval(0.18413609135169, 6.8990300925815987E-12)
306 (%i4) float(jacobi_p (100, 2, 3, 2/10));
307 (%o4) 0.18413609135169
313 多項式を展開し評価すると、よりよい結果を与えます。
314 @c CONTINUING PREVIOUS EXAMPLE HERE
317 @c subst (0.2, x, p);
321 (%i6) subst (0.2, x, p);
322 (%o6) 0.18413609766122982
327 数値評価により適した式を生じるわけではありません。
329 断然、1つ以上の関数引数を浮動小数点数にすることです。
331 特別な浮動小数点アルゴリズムが評価に使われます。
333 Maximaの @code{float}関数は幾分でたらめです;
335 @code{float}を記号次数や順序パラメータを持つ直交多項式を含む式に適用するなら、
342 @c assoc_legendre_p (n, 1, x);
344 @c ev (%, n=2, x=0.9);
347 (%i1) assoc_legendre_p (n, 1, x);
355 (%i3) ev (%, n=2, x=0.9);
361 (%o3)の式は浮動小数点に評価されません;
363 整数を要求するところで浮動小数点値を認識しません。
366 recognize floating point values where it requires an integer. Similarly,
367 numerical evaluation of the
368 @code{pochhammer_max_index}を越える位数の
369 @code{pochhammer}関数は迷惑かもしれません;
373 @c x : pochhammer (1, 10), pochhammer_max_index : 5;
376 (%i1) x : pochhammer (1, 10), pochhammer_max_index : 5;
382 @var{x}を浮動小数点に評価しません。
384 @c CONTINUING PREVIOUS EXAMPLE HERE
394 @var{x}を浮動小数点に評価するには、
395 @code{pochhammer_max_index}を11以上にバインドして、
396 @code{float}を @var{x}に適用する必要があります。
398 @c CONTINUING PREVIOUS EXAMPLE HERE
400 @c float (x), pochhammer_max_index : 11;
403 (%i3) float (x), pochhammer_max_index : 11;
407 @code{pochhammer_max_index}のデフォルト値は100です;
408 @code{orthopoly}をロードした後、値を変えてください。
410 最後に、参考書は直交多項式の定義を変えることを承知してください;
411 一般的にAbramowitz and Stegunの慣例を使っています。
415 あなたの定義が@code{orthopoly}が使っているものと一致しているかを明らかにしてください。
419 @math{(-1, 1)}以外の区間上で直交な族を作る関数の「シフト」版を使います。
421 @math{(0, 1)}上で直交するLegendre多項式を定義するのに、
425 @c shifted_legendre_p (n, x) := legendre_p (n, 2*x - 1)$
426 @c shifted_legendre_p (2, rat (x));
427 @c legendre_p (2, rat (x));
430 (%i1) shifted_legendre_p (n, x) := legendre_p (n, 2*x - 1)$
432 (%i2) shifted_legendre_p (2, rat (x));
434 (%o2)/R/ 6 x - 6 x + 1
435 (%i3) legendre_p (2, rat (x));
442 @anchor{Floating point Evaluation}
443 @subsection Floating point Evaluation
445 @code{orthopoly}の関数のほとんどは
448 例外は球Bessel関数と第二種Legendreの陪多項式です。
450 球Bessel関数はSLATEC関数をコールします。
451 第二種Legendreの陪多項式の数値評価のために特別な方法は使われません。
454 (丸め単位としても知られている)計算機イプシロンの二次か高次の
457 (ありそうにありませんが、)実際の誤差は推定を越える可能性があります。
459 区間は形式 @code{interval (@var{c}, @var{r})}を持ちます。
470 @c y0 : jacobi_p (100, 2, 3, 0.2);
471 @c y1 : bfloat (jacobi_p (100, 2, 3, 1/5));
477 (%i2) y0 : jacobi_p (100, 2, 3, 0.2);
478 (%o2) interval(0.1841360913516871, 6.8990300925815987E-12)
479 (%i3) y1 : bfloat (jacobi_p (100, 2, 3, 1/5));
480 (%o3) 1.8413609135168563091370224958913493690868904463668b-1
483 実際の誤差が誤差推定よりも小さいことをテストしましょう。
485 @c CONTINUING PREVIOUS EXAMPLE HERE
487 @c is (abs (part (y0, 1) - y1) < part (y0, 2));
490 (%i4) is (abs (part (y0, 1) - y1) < part (y0, 2));
497 Maximaは区間の算術をサポートしていません。
500 @c legendre_p (7, 0.1) + legendre_p (8, 0.1);
503 (%i1) legendre_p (7, 0.1) + legendre_p (8, 0.1);
504 (%o1) interval(0.18032072148437508, 3.1477135311021797E-15)
505 + interval(- 0.19949294375000004, 3.3769353084291579E-15)
508 ユーザーは区間算数を行う計算をする演算子を定義できます。
514 @c "@+"(x,y) := interval (part (x, 1) + part (y, 1), part (x, 2)
516 @c legendre_p (7, 0.1) @+ legendre_p (8, 0.1);
521 (%i2) "@@+"(x,y) := interval (part (x, 1) + part (y, 1), part (x, 2)
524 (%i3) legendre_p (7, 0.1) @@+ legendre_p (8, 0.1);
525 (%o3) interval(- 0.019172222265624955, 6.5246488395313372E-15)
528 引数が複素数の時、特殊な浮動小数点ルーチンがコールされます。
532 @c legendre_p (10, 2 + 3.0*%i);
535 (%i1) legendre_p (10, 2 + 3.0*%i);
536 (%o1) interval(- 3.876378825E+7 %i - 6.0787748E+7,
537 1.2089173052721777E-6)
543 @c float (expand (legendre_p (10, 2 + 3*%i)));
546 (%i1) float (expand (legendre_p (10, 2 + 3*%i)));
547 (%o1) - 3.876378825E+7 %i - 6.0787748E+7
552 特殊な浮動小数点ルーチンがコールされます;
554 倍精度浮動小数点に変換され、最終結果は倍精度です。
557 @c ultraspherical (150, 0.5b0, 0.9b0);
560 (%i1) ultraspherical (150, 0.5b0, 0.9b0);
561 (%o1) interval(- 0.043009481257265, 3.3750051301228864E-14)
564 @subsection Graphics and @code{orthopoly}
570 オプション変数 @code{orthopoly_returns_intervals}を @code{false}に設定する。
572 @code{orthopoly}関数のすべてのコールをクォートする。
574 もし関数コールがクォートされていないなら、
575 Maximaはプロットする前にそれらを多項式に評価します;
577 特殊な浮動小数点コードはコールされません。
578 以下は、Legendre多項式を含む式をどうやってプロットするかの例です。
581 @c plot2d ('(legendre_p (5, x)), [x, 0, 1]),
582 @c orthopoly_returns_intervals : false;
585 (%i1) plot2d ('(legendre_p (5, x)), [x, 0, 1]),
586 orthopoly_returns_intervals : false;
591 @image{@value{figuresfolder}/orthopoly1,8cm}
594 式 @code{legendre_p (5, x)}@i{全体}をクォートします;
596 @code{'legendre_p (5, @var{x})}を使って関数名をクォートするだけとは違います。
603 @subsection Miscellaneous Functions
605 @code{orthopoly}パッケージは
606 Pochhammerシンボルと単位階段函数を定義します。
607 @code{orthopoly}は@code{gradef}文の中で
608 Kroneckerのデルタ函数と単位階段函数を使います。
610 Pochhammerシンボルをガンマ函数の商に変換するには、
611 @code{makegamma}を使ってください。
614 @c makegamma (pochhammer (x, n));
615 @c makegamma (pochhammer (1/2, 1/2));
618 (%i1) makegamma (pochhammer (x, n));
622 (%i2) makegamma (pochhammer (1/2, 1/2));
629 @code{psi}函数を使って与えられます。
632 @c diff (pochhammer (x, n), x);
633 @c diff (pochhammer (x, n), n);
636 (%i1) diff (pochhammer (x, n), x);
637 (%o1) (x) (psi (x + n) - psi (x))
639 (%i2) diff (pochhammer (x, n), n);
640 (%o2) (x) psi (x + n)
646 @code{@var{x} = -1, -2, .., -@var{n}}の時
650 導函数を@code{@var{n} - 1}次多項式にするように、
651 @code{pochhammer (@var{x}, @var{n})}の因子を相殺します。
659 @c q : makegamma (pochhammer (x, n));
660 @c sublis ([x=11/3, n= -6], q);
663 (%i1) q : makegamma (pochhammer (x, n));
667 (%i2) sublis ([x=11/3, n= -6], q);
673 代わりに、この結果を直接得ることができます。
676 @c pochhammer (11/3, -6);
679 (%i1) pochhammer (11/3, -6);
689 @c [unit_step (-1/10), unit_step (0), unit_step (1/10)];
692 (%i1) [unit_step (-1/10), unit_step (0), unit_step (1/10)];
696 もし零で左連続でも右連続でもない単位階段函数が必要なら、
697 @code{signum}を使って自分のものを定義してください;
701 @c xunit_step (x) := (1 + signum (x))/2$
702 @c [xunit_step (-1/10), xunit_step (0), xunit_step (1/10)];
705 (%i1) xunit_step (x) := (1 + signum (x))/2$
707 (%i2) [xunit_step (-1/10), xunit_step (0), xunit_step (1/10)];
713 @code{unit_step}自身を再定義しないでください;
714 @code{orthopoly}の中のあるコードは
715 単位階段函数が左連続であることを要求します。
718 @subsection Algorithms
722 直交多項式の超幾何表現を使うことで記号評価をします
724 (ドキュメント化されていない)関数 @code{hypergeo11}と @code{hypergeo21}を使って
726 例外は半整数Bessel函数と第二種Legendreの陪函数です。
727 半整数Bessel函数は明示的な表現を使って評価されます。
728 第二種Legendreの陪函数は再帰を使って評価されます。
731 函数のほとんどを超幾何形式に再び変換します;
732 順方向再帰を使って超幾何函数を評価します。
734 例外は半整数Bessel函数と第二種Legendreの陪函数です。
736 半整数Bessel函数はSLATECコードを使って評価されます。
739 @node Functions and Variables for orthogonal polynomials, , Introduction to orthogonal polynomials, orthopoly
740 @section Functions and Variables for orthogonal polynomials
742 @deffn {関数} assoc_legendre_p (@var{n}, @var{m}, @var{x})
743 次数 @var{n}と位数 @var{m}の第一種Legendre陪函数。
745 参考文献: Abramowitz and Stegun, equations 22.5.37, page 779, 8.6.6
746 (second equation), page 334, and 8.2.5, page 333.
749 @category{Package orthopoly}
754 @deffn {関数} assoc_legendre_q (@var{n}, @var{m}, @var{x})
755 次数 @var{n}と位数 @var{m}の第二種Legendre陪函数。
757 参考文献: Abramowitz and Stegun, equation 8.5.3 and 8.1.8.
760 @category{Package orthopoly}
765 @deffn {関数} chebyshev_t (@var{n}, @var{x})
768 参考文献: Abramowitz and Stegun, equation 22.5.47, page 779.
771 @category{Package orthopoly}
776 @deffn {関数} chebyshev_u (@var{n}, @var{x})
779 参考文献: Abramowitz and Stegun, equation 22.5.48, page 779.
782 @category{Package orthopoly}
787 @deffn {関数} gen_laguerre (@var{n}, @var{a}, @var{x})
788 次数 @var{n}の一般化Laguerre多項式。
790 参考文献: Abramowitz and Stegun, equation 22.5.54, page 780.
793 @category{Package orthopoly}
798 @deffn {関数} hermite (@var{n}, @var{x})
801 参考文献: Abramowitz and Stegun, equation 22.5.55, page 780.
804 @category{Package orthopoly}
809 @deffn {関数} intervalp (@var{e})
810 もし入力が区間なら @code{true}を、
811 そうでないなら @code{false}を返します。
814 @category{Package orthopoly}
815 @category{Predicate functions}
820 @deffn {関数} jacobi_p (@var{n}, @var{a}, @var{b}, @var{x})
824 @var{a}と @var{b}すべてに対して定義されます;
826 @code{(1 - @var{x})^@var{a} (1 + @var{x})^@var{b}}は
827 @code{@var{a} <= -1}か @code{@var{b} <= -1}で可積分でありません。
829 参考文献: Abramowitz and Stegun, equation 22.5.42, page 779.
832 @category{Package orthopoly}
837 @deffn {関数} laguerre (@var{n}, @var{x})
840 参考文献: Abramowitz and Stegun, equations 22.5.16 and 22.5.54, page 780.
843 @category{Package orthopoly}
848 @deffn {関数} legendre_p (@var{n}, @var{x})
851 参考文献: Abramowitz and Stegun, equations 22.5.50 and 22.5.51, page 779.
854 @category{Package orthopoly}
859 @deffn {関数} legendre_q (@var{n}, @var{x})
862 参考文献: Abramowitz and Stegun, equations 8.5.3 and 8.1.8.
865 @category{Package orthopoly}
870 @deffn {関数} orthopoly_recur (@var{f}, @var{args})
871 引数 @var{args}を持つ直交函数族 @var{f}の漸化式を返します。
875 @c orthopoly_recur (legendre_p, [n, x]);
878 (%i1) orthopoly_recur (legendre_p, [n, x]);
879 (2 n - 1) P (x) x + (1 - n) P (x)
881 (%o1) P (x) = -----------------------------------------
885 @code{orthopoly_recur}の二番目の引数は
886 関数 @var{f}の正しい数の引数のリストでなければいけません;
887 もしそうでないなら、Maximaはエラーをシグナルします。
890 @c orthopoly_recur (jacobi_p, [n, x]);
893 (%i1) orthopoly_recur (jacobi_p, [n, x]);
895 Function jacobi_p needs 4 arguments, instead it received 2
896 -- an error. Quitting. To debug this try debugmode(true);
900 @var{f}が直交多項式族の1つの名前でないなら、
904 @c orthopoly_recur (foo, [n, x]);
907 (%i1) orthopoly_recur (foo, [n, x]);
909 A recursion relation for foo isn't known to Maxima
910 -- an error. Quitting. To debug this try debugmode(true);
914 @category{Package orthopoly}
919 @defvr {変数} orthopoly_returns_intervals
922 @code{orthopoly_returns_intervals}が @code{true}の時、
923 浮動小数点の結果が形式 @code{interval (@var{c}, @var{r})}
931 @category{Package orthopoly}
936 @deffn {関数} orthopoly_weight (@var{f}, @var{args})
940 リスト @var{args}が与える引数を持つ直交多項式族 @var{f}の重みの公式です;
946 @c w : orthopoly_weight (hermite, [n, x]);
947 @c integrate (w[1] * hermite (3, x) * hermite (2, x), x, w[2], w[3]);
950 (%i1) w : orthopoly_weight (hermite, [n, x]);
953 (%o1) [%e , - inf, inf]
954 (%i2) integrate(w[1]*hermite(3, x)*hermite(2, x), x, w[2], w[3]);
958 @var{f}の主変数はシンボルでなければいけません;
959 そうでないなら、Maximaはエラーをシグナルします。
962 @category{Package orthopoly}
967 @deffn {関数} pochhammer (@var{n}, @var{x})
969 @code{@var{n} <= pochhammer_max_index}の非負整数 @var{n}に対して、
970 式 @code{pochhammer (@var{x}, @var{n})}は
971 @code{@var{n} > 0}の時、
972 積 @code{@var{x} (@var{x} + 1) (@var{x} + 2) ... (@var{x} + n - 1)}
974 @code{@var{n} = 0}の時は1です。
976 @code{pochhammer (@var{x}, @var{n})}は
977 @code{(-1)^@var{n} / pochhammer (1 - @var{x}, -@var{n})}として定義されます。
981 @c pochhammer (x, 3);
982 @c pochhammer (x, -3);
985 (%i1) pochhammer (x, 3);
986 (%o1) x (x + 1) (x + 2)
987 (%i2) pochhammer (x, -3);
989 (%o2) - -----------------------
990 (1 - x) (2 - x) (3 - x)
993 Pochhammerシンボルをガンマ函数の商に変換するには、
994 (Abramowitz and Stegun, equation 6.1.22を参照してください)
995 @code{makegamma}を使ってください;
999 @c makegamma (pochhammer (x, n));
1002 (%i1) makegamma (pochhammer (x, n));
1008 @var{n}が @code{pochhammer_max_index}を越えるか、
1010 @code{pochhammer}は名詞形を返します。
1013 @c pochhammer (x, n);
1016 (%i1) pochhammer (x, n);
1022 @category{Package orthopoly}
1023 @category{Gamma and factorial functions}
1028 @defvr {変数} pochhammer_max_index
1031 @code{pochhammer (@var{n}, @var{x})}は
1032 @code{@var{n} <= pochhammer_max_index}の時だけ
1038 @c pochhammer (x, 3), pochhammer_max_index : 3;
1039 @c pochhammer (x, 4), pochhammer_max_index : 3;
1042 (%i1) pochhammer (x, 3), pochhammer_max_index : 3;
1043 (%o1) x (x + 1) (x + 2)
1044 (%i2) pochhammer (x, 4), pochhammer_max_index : 3;
1049 参考文献: Abramowitz and Stegun, equation 6.1.16, page 256.
1052 @category{Package orthopoly}
1053 @category{Gamma and factorial functions}
1058 @deffn {関数} spherical_bessel_j (@var{n}, @var{x})
1061 参考文献: Abramowitz and Stegun, equations 10.1.8, page 437 and 10.1.15, page 439.
1064 @category{Package orthopoly}
1065 @category{Bessel functions}
1070 @deffn {関数} spherical_bessel_y (@var{n}, @var{x})
1073 参考文献: Abramowitz and Stegun, equations 10.1.9, page 437 and 10.1.15, page 439.
1076 @category{Package orthopoly}
1077 @category{Bessel functions}
1082 @deffn {関数} spherical_hankel1 (@var{n}, @var{x})
1085 参考文献: Abramowitz and Stegun, equation 10.1.36, page 439.
1088 @category{Package orthopoly}
1089 @category{Bessel functions}
1094 @deffn {関数} spherical_hankel2 (@var{n}, @var{x})
1097 参考文献: Abramowitz and Stegun, equation 10.1.17, page 439.
1100 @category{Package orthopoly}
1101 @category{Bessel functions}
1106 @deffn {関数} spherical_harmonic (@var{n}, @var{m}, @var{x}, @var{y})
1109 参考文献: Merzbacher 9.64.
1112 @category{Package orthopoly}
1117 @deffn {関数} unit_step (@var{x})
1119 @code{unit_step (@var{x})}は@code{@var{x} <= 0}で0であり、
1120 @code{@var{x} > 0}で1です。
1122 もし0で値1/2を取る単位階段函数が欲しいなら、
1123 @code{(1 + signum (@var{x}))/2}を使ってください。
1126 @category{Package orthopoly}
1127 @category{Mathematical functions}
1132 @deffn {関数} ultraspherical (@var{n}, @var{a}, @var{x})
1133 (Gegenbauer多項式としても知られている)超球多項式。
1135 参考文献: Abramowitz and Stegun, equation 22.5.46, page 779.
1138 @category{Package orthopoly}