Previous: Introduction to QUADPACK, Up: Integration   [Contents][Index]

19.4 Functions and Variables for QUADPACK

関数: quad_qag (f(x), x, a, b, key, [epsrel, epsabs, limit])
関数: quad_qag (f, x, a, b, key, [epsrel, epsabs, limit])

一般関数の有限の区間上の積分。 quad_qagは、Aind(Piessens, 1973)の戦略を使った 簡単な大域的適応積分器を実装しています。 呼び出し側は、ルール評価コンポーネントのための ガウスークロンロッドの求積公式の6つのペアの中から選ぶことができます。 強く振動する非積分関数には高次のルールが適切です。

quad_qagは積分 integrate (f(x), x, a, b) を計算します。

非積分関数は依存変数xf(x)であり、 関数は下限a上限bの間で積分されます。 keyは利用される積分器で、1から6までのいずれかの整数でなければなりません。 keyの値は、ガウスークロンロッドの積分ルールの次数を選びます。 高次のルールが、強く振動する非積分関数には適切です。

非積分関数は、MaximaもしくはLisp関数もしくは演算子の名前もしくMaximaのラムダ式か、 一般的なMaximaの式として指定されます。

数値積分は、望まれる精度が達成されるまで、 積分領域を部分区間に分割することによって適応的に実行されます。

キーワード引数はオプションで、どの次数においても指定できます。 それらは形式key=valを取ります。キーワード引数は:

epsrel

望まれる近似の相対誤差。デフォルトは1d-8。

epsabs

望まれる近似の絶対誤差。デフォルトは0。

limit

内部の作業配列のサイズ。limitは使用する部分区間の最大数。デフォルトは200。

quad_qagは4つの要素のリストを返します:

エラーコード(戻り値の4番目の要素)は以下の値を取ります:

0

問題が発生しなかった場合;

1

部分区間の数が上限を超えた場合;

2

丸め誤差が超過した場合;

3

非積分関数の振る舞いが極端に悪い場合;

6

入力が無効な場合;

例:

(%i1) quad_qag (x^(1/2)*log(1/x), x, 0, 1, 3, 'epsrel=5d-8);
(%o1)    [.4444444444492108, 3.1700968502883E-9, 961, 0]
(%i2) integrate (x^(1/2)*log(1/x), x, 0, 1);
                                4
(%o2)                           -
                                9
関数: quad_qags (f(x), x, a, b, [epsrel, epsabs, limit])
関数: quad_qags (f, x, a, b, [epsrel, epsabs, limit])

一般関数の有限の区間上の積分。 quad_qagsは、イプシロンアルゴリズム(Wynn, 1956)による外挿(de Doncker,1978)を 使った大域的適応積分器を実装しています。

quad_qagsは、積分

integrate (f(x), x, a, b) を計算します。

非積分関数は依存変数xf(x)であり、 関数は下限a上限bの間で積分されます。

非積分関数は、MaximaもしくはLisp関数もしくは演算子の名前もしくMaximaのラムダ式か、一般的なMaximaの式として指定されます。

キーワード引数はオプションで、どの次数においても指定できます。 それらは形式key=valを取ります。キーワード引数は:

epsrel

望まれる近似の相対誤差。デフォルトは1d-8。

epsabs

望まれる近似の絶対誤差。デフォルトは0。

limit

内部の作業配列のサイズ。limitは使用する部分区間の最大数。デフォルトは200。

quad_qagsは4つの要素のリストを返します:

エラーコード(戻り値の4番目の要素)は以下の値を取ります:

0

問題が発生しなかった場合;

1

部分区間の数が上限を超えた場合;

2

丸め誤差が超過した場合;

3

非積分関数の振る舞いが極端に悪い場合;

4

収束に失敗した場合;

5

積分が発散しているか収束が遅い場合;

6

入力が無効な場合;

例:

(%i1) quad_qags (x^(1/2)*log(1/x), x, 0, 1, 'epsrel=1d-10);
(%o1)   [.4444444444444448, 1.11022302462516E-15, 315, 0]

この積分に関しては、quad_qagsは、quad_qagよりも精確で 効率的であることに注意してください。

関数: quad_qagi (f(x), x, a, b, [epsrel, epsabs, limit])
関数: quad_qagi (f, x, a, b, [epsrel, epsabs, limit])

一般関数の無限のもしくは半無限の区間上の積分。 区間は、有限の区間上に写像され、quad_qagsの中で使われるのと同じ戦略が適用されます。

quad_qagiは、Quadpack QAGIルーチンを使って以下の積分の1つを評価します。

integrate (f(x), x, a, inf)

integrate (f(x), x, minf, a)

integrate (f(x), x, minf, inf)

被積分関数は、f(x)であり、 従属変数xを使って、 関数は無限範囲上で積分されます。

被積分関数は、MaximaまたはLispの関数または演算子の名前、 Maximaのラムダ式またはMaximaの一般式として指定されるかもしれません。

積分の境界の1つは、無限でなければいけません。 もしそうでなければ、 quad_qagiはただ名詞形を返します。

キーワード引数は随意で、任意の順序で指定できます。 それらすべては形式key=valを取ります。 キーワード引数は:

epsrel

望まれる近似の相対誤差。デフォルトは1d-8。

epsabs

望まれる近似の絶対誤差。デフォルトは0。

limit

内部の作業配列のサイズ。limitは使用する部分区間の最大数。デフォルトは200。

quad_qagiは、4つの要素のリストを返します:

エラーコード(戻り値の4番目の要素)は以下の値を取ります:

0

問題が発生しなかった場合;

1

部分区間の数が上限を超えた場合;

2

丸め誤差が超過した場合;

3

非積分関数の振る舞いが極端に悪い場合;

4

収束に失敗した場合;

5

積分が発散しているか収束が遅い場合;

6

入力が無効な場合;

例:

(%i1) quad_qagi (x^2*exp(-4*x), x, 0, inf, 'epsrel=1d-8);
(%o1)        [0.03125, 2.95916102995002E-11, 105, 0]
(%i2) integrate (x^2*exp(-4*x), x, 0, inf);
                               1
(%o2)                          --
                               32
関数: quad_qawc (f(x), x, c, a, b, [epsrel, epsabs, limit])
関数: quad_qawc (f, x, c, a, b, [epsrel, epsabs, limit])

f(x)/(x - c)のコーシーの主値を 有限の区間(a, b)上で指定されたcを用いて 計算します。 戦略は、大域的適応的で、 点x = cを含む部分範囲上で変形Clenshaw-Curtis積分が使われます。

quad_qawcは、 Quadpack QAWCルーチンを使って、 integrate (f(x)/(x - c), x, a, b)

のコーシーの主値を計算します。

被積分関数は、 f(x)/(x - c)で、 従属変数xを使って、 関数はaからbまでの区間上で積分されます。

被積分関数は、MaximaまたはLispの関数または演算子の名前、 Maximaのラムダ式またはMaximaの一般式として指定されるかもしれません。

キーワード引数は随意で、任意の順序で指定できます。 それらすべては形式key=valを取ります。 キーワード引数は:

epsrel

望まれる近似の相対誤差。デフォルトは1d-8。

epsabs

望まれる近似の絶対誤差。デフォルトは0。

limit

内部の作業配列のサイズ。limitは使用する部分区間の最大数。デフォルトは200。

quad_qagcは、4つの要素のリストを返します:

エラーコード(戻り値の4番目の要素)は以下の値を取ります:

0

問題が発生しなかった場合;

1

部分区間の数が上限を超えた場合;

2

丸め誤差が超過した場合;

3

非積分関数の振る舞いが極端に悪い場合;

4

収束に失敗した場合;

5

積分が発散しているか収束が遅い場合;

6

入力が無効な場合;

例:

(%i1) quad_qawc (2^(-5)*((x-1)^2+4^(-5))^(-1), x, 2, 0, 5,
                 'epsrel=1d-7);
(%o1)    [- 3.130120337415925, 1.306830140249558E-8, 495, 0]
(%i2) integrate (2^(-alpha)*(((x-1)^2 + 4^(-alpha))*(x-2))^(-1),
      x, 0, 5);
Principal Value
                       alpha
        alpha       9 4                 9
       4      log(------------- + -------------)
                      alpha           alpha
                  64 4      + 4   64 4      + 4
(%o2) (-----------------------------------------
                        alpha
                     2 4      + 2

       3 alpha                       3 alpha
       -------                       -------
          2            alpha/2          2          alpha/2
    2 4        atan(4 4       )   2 4        atan(4       )   alpha
  - --------------------------- - -------------------------)/2
              alpha                        alpha
           2 4      + 2                 2 4      + 2
(%i3) ev (%, alpha=5, numer);
(%o3)                    - 3.130120337415917
関数: quad_qawf (f(x), x, a, omega, trig, [epsabs, limit, maxp1, limlst])
関数: quad_qawf (f, x, a, omega, trig, [epsabs, limit, maxp1, limlst])

フーリエコサイン変換またはフーリエサイン変換を、 Quadpack QAWF関数を使って、半無限区間上で計算します。 quad_qawoで使われるのと同じアプローチが、連続する区間に適用され、 イプシロンアルゴリズム(Wynn, 1956)を使った収束の促進が積分寄与の級数に適用されます。

quad_qawfは積分 integrate (f(x)*w(x), x, a, inf) を計算します。

重み関数wtrigによって選択されます:

cos

w(x) = cos (omega x)

sin

w(x) = sin (omega x)

被積分関数は、MaximaまたはLispの関数または演算子の名前、 Maximaのラムダ式またはMaximaの一般式として指定されるかもしれません。

キーワード引数は随意で、任意の順序で指定できます。 それらすべては形式key=valを取ります。 キーワード引数は:

epsrel

望まれる近似の相対誤差。デフォルトは1d-8。

epsabs

望まれる近似の絶対誤差。デフォルトは0。

limit

内部の作業配列のサイズ。(limit - limlst)/2は使用する部分区間の最大数。デフォルトは200。

maxp1

チェビシェフ積率の最大数。 0より大きくなければいけません。 デフォルトは100です。

limlst

サイクル数に関する上限。 3以上でなければいけません。 デフォルトは10です。

quad_qawfは、4つの要素のリストを返します:

エラーコード(戻り値の4番目の要素)は以下の値を取ります:

0

問題が発生しなかった場合;

1

部分区間の数が上限を超えた場合;

2

丸め誤差が超過した場合;

3

非積分関数の振る舞いが極端に悪い場合;

4

収束に失敗した場合;

5

積分が発散しているか収束が遅い場合;

6

入力が無効な場合;

例:

(%i1) quad_qawf (exp(-x^2), x, 0, 1, 'cos, 'epsabs=1d-9);
(%o1)   [.6901942235215714, 2.84846300257552E-11, 215, 0]
(%i2) integrate (exp(-x^2)*cos(x), x, 0, inf);
                          - 1/4
                        %e      sqrt(%pi)
(%o2)                   -----------------
                                2
(%i3) ev (%, numer);
(%o3)                   .6901942235215714
関数: quad_qawo (f(x), x, a, b, omega, trig, [epsrel, epsabs, limit, maxp1, limlst])
関数: quad_qawo (f, x, a, b, omega, trig, [epsrel, epsabs, limit, maxp1, limlst])

cos(omega x) f(x)sin(omega x) f(x) の有限の区間上の積分。 ここで、 omega は定数です。 規則評価構成要素は、変形Clenshaw-Curtis手法に基づいています。 quad_qawoは、 quad_qagsに似て、外挿とともに適応再分割を適用します。

quad_qawoは、 Quadpack QAWOルーチンを使って 積分を計算します:

integrate (f(x)*w(x), x, a, b)

重み関数wは、trigによって選択されます:

cos

w(x) = cos (omega x)

sin

w(x) = sin (omega x)

被積分関数は、MaximaまたはLispの関数または演算子の名前、 Maximaのラムダ式またはMaximaの一般式として指定されるかもしれません。

キーワード引数は随意で、任意の順序で指定できます。 それらすべては形式key=valを取ります。 キーワード引数は:

epsrel

望まれる近似の相対誤差。デフォルトは1d-8。

epsabs

望まれる近似の絶対誤差。デフォルトは0。

limit

内部の作業配列のサイズ。limit/2は使用する部分区間の最大数。デフォルトは200。

maxp1

チェビシェフ積率の最大数。 0より大きくなければいけません。 デフォルトは100です。

limlst

サイクル数に関する上限。 3以上でなければいけません。 デフォルトは10です。

quad_qawoは、4つの要素のリストを返します:

エラーコード(戻り値の4番目の要素)は以下の値を取ります:

0

問題が発生しなかった場合;

1

部分区間の数が上限を超えた場合;

2

丸め誤差が超過した場合;

3

非積分関数の振る舞いが極端に悪い場合;

4

収束に失敗した場合;

5

積分が発散しているか収束が遅い場合;

6

入力が無効な場合;

例:

(%i1) quad_qawo (x^(-1/2)*exp(-2^(-2)*x), x, 1d-8, 20*2^2, 1, cos);
(%o1)     [1.376043389877692, 4.72710759424899E-11, 765, 0]
(%i2) rectform (integrate (x^(-1/2)*exp(-2^(-alpha)*x) * cos(x),
      x, 0, inf));
                   alpha/2 - 1/2            2 alpha
        sqrt(%pi) 2              sqrt(sqrt(2        + 1) + 1)
(%o2)   -----------------------------------------------------
                               2 alpha
                         sqrt(2        + 1)
(%i3) ev (%, alpha=2, numer);
(%o3)                     1.376043390090716
関数: quad_qaws (f(x), x, a, b, alpha, beta, wfun, [epsrel, epsabs, limit])
関数: quad_qaws (f, x, a, b, alpha, beta, wfun, [epsrel, epsabs, limit])

w(x) f(x)の有限の区間上の積分。 ここで、w(x)は、ある代数的または対数関数です。 大域的適応最分割戦略が適用されます。 積分の区間の端点を含む部分区間上で変形Clenshaw-Curtis積分を使います。

quad_qawsは、 Quadpack QAWSルーチンを使って 積分を計算します:

integrate (f(x)*w(x), x, a, b)

重み関数wwfunによって選択されます:

1

w(x) = (x - a)^alpha (b - x)^beta

2

w(x) = (x - a)^alpha (b - x)^beta log(x - a)

3

w(x) = (x - a)^alpha (b - x)^beta log(b - x)

4

w(x) = (x - a)^alpha (b - x)^beta log(x - a) log(b - x)

被積分関数は、MaximaまたはLispの関数または演算子の名前、 Maximaのラムダ式またはMaximaの一般式として指定されるかもしれません。

キーワード引数は随意で、任意の順序で指定できます。 それらすべては形式key=valを取ります。 キーワード引数は:

epsrel

望まれる近似の相対誤差。デフォルトは1d-8。

epsabs

望まれる近似の絶対誤差。デフォルトは0。

limit

内部の作業配列のサイズ。limitは使用する部分区間の最大数。デフォルトは200。

quad_qawsは、4つの要素のリストを返します:

エラーコード(戻り値の4番目の要素)は以下の値を取ります:

0

問題が発生しなかった場合;

1

部分区間の数が上限を超えた場合;

2

丸め誤差が超過した場合;

3

非積分関数の振る舞いが極端に悪い場合;

4

収束に失敗した場合;

5

積分が発散しているか収束が遅い場合;

6

入力が無効な場合;

例:

(%i1) quad_qaws (1/(x+1+2^(-4)), x, -1, 1, -0.5, -0.5, 1,
                 'epsabs=1d-9);
(%o1)     [8.750097361672832, 1.24321522715422E-10, 170, 0]
(%i2) integrate ((1-x*x)^(-1/2)/(x+1+2^(-alpha)), x, -1, 1);
       alpha
Is  4 2      - 1  positive, negative, or zero?

pos;
                          alpha         alpha
                   2 %pi 2      sqrt(2 2      + 1)
(%o2)              -------------------------------
                               alpha
                            4 2      + 2
(%i3) ev (%, alpha=4, numer);
(%o3)                     8.750097361672829

Previous: Introduction to QUADPACK, Up: Integration   [Contents][Index]