Tanh–Sinh数値積分の分点と重みを計算
点数nから、標準区間[−1,1]のTanh–Sinh求積に使う分点・重み・端点距離を一覧表示します。
計算結果
- Tanh–Sinh分点・重みの数値表
-
計算すると数値表を表示します。
Tanh–Sinh分点・重みの数値表。負側から正側まで、1始まりの番号、標準分点、台形和の重み、端点までの距離を示します。 番号 i 分点 x_i 重み w_i 端点距離 1−|x_i|
使い方
- 分点数nを2〜100の整数で入力します。t_maxはbinary64の安全範囲に合わせて自動決定されます。
- 計算後、分点の昇順、左右対称性、重みの正値、endpoint-distanceを確認します。
- 必要な行を列見出し付きTSVでコピーし、点数、方式、最大12有効桁表示であることを一緒に保存します。
- 一般区間へ使う場合は分点と重みの両方を正しく線形変換し、異なる点数の係数を混ぜないでください。
計算式・考え方
t_i=−t_max+2t_max(i−1)/(n−1)、x_i=tanh((π/2)sinh(t_i))、w_i=h(π/2)cosh(t_i)/cosh²((π/2)sinh(t_i))です。t_maxはbinary64と点数に合わせて自動決定します。
注意事項
- このページは積分値ではなく、標準区間[−1,1]の分点x_iと台形和へ使う重みw_iをn行表示します。既定値n=20は参照ページと同じです。参照ページの既定表示は対称性を使った半側10行ですが、この実装は転記ミスを減らすため負側から正側まで全20行を一つの表へ載せます。左右の分点と重みが対応すること、重みが正であることを確認できます。
- t_maxは利用者に桁数らしい値を推測させず、binary64で端側の分点・重みを有限に保てる有界な規則から自動決定します。nを増やすと同じ変換区間内の刻みhが細かくなります。端のx_iは数学上±1へ非常に近づき、binary64では±1と同じ値へ丸められる場合があるため、endpoint-distance=1−|x_i|も併記します。距離0は端点への到達を高精度で証明する意味ではありません。
- 表のw_iは標準変換のdx/dtへ刻みhを掛けた係数です。一般区間[a,b]へ写す場合はx=(a+b)/2+(b−a)y/2とし、重みへ(b−a)/2を掛けます。分点表を別のnや別のt_maxの表と混ぜたり、有限区間への尺度係数を二重に掛けたりしないでください。積分値の精度は分点表だけで決まらず、被積分関数、端点特異性、打切り範囲、刻み幅にも依存します。
- 二重指数型求積は、元の積分区間を実数の補助変数tへ写し、変換後の関数を等間隔の台形和で近似する方法です。端点または無限遠へ向かう標本点の寄与が二重指数的に小さくなるよう変換するため、有限区間の可積分な端点特異性や、十分速く減衰する無限区間積分で高い精度を得られる場合があります。ただし方式名だけで収束が保証されるわけではなく、被積分関数と変換の相性を確認する必要があります。
- 結果表のabsolute-changeは現在の推定値と直前の推定値との差の絶対値、relative-changeはその差を現在値の大きさで規格化した値です。どちらも真値との差を直接測ったものでも、厳密な誤差上界でもありません。隣接する二段階が偶然一致しながら同じ尾部や狭いピークを見落とす場合があります。既知の解析値、別の変数変換、区間分割、多倍長積分器と比較して必要精度を判断してください。
- 関数式には変数x、定数piとe、四則演算、べき乗^、丸括弧、およびabs、sqrt、exp、ln、log、log10、sin、cos、tan、asin、acos、atan、sinh、cosh、tanh、floor、ceilを使えます。2xのような暗黙の掛け算には対応しないため2*xと書きます。式長200文字、128トークン、括弧と演算子の深さ32段という上限を設け、未知の名前や未完の式は計算前に拒否します。
- 式は許可された字句だけを解析し、逆ポーランド記法へ変換した後に評価します。JavaScriptのevalやnew Function、外部API、CDN、fetch、サーバー側計算は使用しません。入力した関数式、端点、精度設定、計算結果は利用者のブラウザ内だけで処理されます。プロパティ参照、配列、代入、セミコロン、文字列、ネットワーク命令を実行可能な式として扱うことはありません。
- 内部計算はIEEE 754 binary64で行い、画面とTSVには最大12有効桁で表示します。参照値が20桁以上で掲載されていても、その桁数を模倣すると実装精度以上の確かさを示すため採用していません。大きさの異なる項の和には安定した総和を使いますが、桁落ち、オーバーフロー、アンダーフロー、強い正負相殺を完全に除くものではありません。任意精度や証明付き区間が必要なら専用実装で再計算してください。
- 無限区間で特に重要なのは減衰速度です。指数関数的または十分なべきで減衰する関数は扱いやすい一方、遅い減衰では変換後も遠い尾部が残ります。sin(x)のような終わりのない振動、条件収束、Cauchy主値を必要とする式、定数や増加関数のような発散積分を、有限回の数値和が自動判定して正しい値へ変えることはできません。段数を増やして値が安定しない場合は結果を採用せず、問題に合う振動積分法や解析処理へ切り替えてください。
- 積分区間の内部に極、不連続点、平方根や対数の定義域境界がある場合は、分点がその場所へ偶然一致しなくても積分が存在するとは限りません。内部極をまたいだ通常積分を主値として解釈せず、既知の特異点で区間を分けるか、特異部分を解析的に差し引いてください。関数評価がNaNまたは無限大になった場合、変換のJacobianや総和が有限でない場合、反復上限で安全に計算できない場合は推測値を表示せずエラーにします。
- 最大分割数または最大段数を増やすと標本点数と計算時間も増えます。入力値は有限の選択肢へ制限し、式の評価回数にも上限を設けています。ブラウザを長時間占有する無制限反復は行いません。最高設定が常に最適とは限らず、丸め誤差が支配すると推定値間の差が横ばいまたは増加します。最小設定から収束履歴を観察し、必要な精度を満たした段階で止めるのが実用的です。
- 対称な区間と関数には独立した検算があります。全実数上の奇関数が絶対可積分なら積分は0、偶関数なら正側の積分の2倍です。正値関数の結果が負になる、既知の上限下限から外れる、単位や尺度が合わない場合は、式や端点、変換の選択を見直してください。数値積分器の表示だけを信頼せず、グラフ、概算面積、次元解析、代表点の関数値も合わせて確認します。
- TSVコピーには列見出しと表示順を含めます。結果を保存または転載するときは、関数式、有限端点、方式名、最大分割数または最大段数、binary64・最大12有効桁であること、確認日を一緒に残してください。推定値だけでは、正の半無限、負の半無限、全実数のどの変換を使ったか、隣接段階の差がどの設定間で得られたかを後から再現できません。
- この計算機は学習、実装確認、一般的な数値試算を目的とします。医療投与量、安全限界、法令上の判定、金融取引の最終判断を保証しません。重要な用途では式と入力データの出典を確認し、独立した実装、十分な精度、専門家のレビューを組み合わせてください。収束しない入力に値らしい有限数が一時的に現れても、判断根拠として採用しないでください。
- Tanh–Sinhと二重指数型変換、数値積分の一般的な収束上の注意はNIST Digital Library of Mathematical Functions §3.5を2026年7月13日に照合しました。実装は実数関数、有界な次数・段数、クライアント側binary64計算へ限定しています。複素経路積分、解析接続、自動特異点分離、振動尾部の加速、任意精度積分器、厳密な誤差保証の代替ではありません。
- 変換式の歴史的定義は高橋秀俊・森正武による二重指数型公式の原論文、関連実装と収束判定の背景は京都大学数理解析研究所のOouraによる公開bibliographyおよび日本応用数理学会論文を2026年7月13日に確認しました。本文の隣接段階差は、この実装固有の有界な収束指標として提示し、原論文や公開資料が与える条件を省略して厳密な誤差保証と呼ばない方針です。
- binary64・最大12有効桁の有限反復による近似です。段階間の差は真の誤差上界ではありません。
よくある質問
なぜcanonicalと同じ半分の行数ではないのですか?
左右対称な全係数をそのまま転記・検証できるよう、選んだnに対して常にn行を表示します。
endpoint-distanceが0なら分点は端点ですか?
数学上の変換値は端点の内側ですが、binary64で1との差が表現できず0になった状態を含みます。
入力した点数と生成した分点・重みは利用者のブラウザ内だけで処理され、サーバーや外部APIへ送信・保存されません。