ブリルアン関数 B_J(x) を安定計算

ブリルアン関数 B_J(x) を安定計算

正の整数・半整数Jと実数xからブリルアン関数B_J(x)を計算し、原点の相殺と大引数の指数あふれを避けます。

入力

-1,000,000以上1,000,000以下の有限な実数です。x=0では0を返します。

0.5以上1,000,000以下で、2Jが整数となる正の整数または半整数です。

使い方

  1. 無次元実数xと0.5刻みの量子数Jを入力し、有限値の宣言範囲と定義域を満たすことを確認します。
  2. 有限JのBrillouin関数であり、J→∞の古典極限ではないことを確認してから「計算する」を押し、ブリルアン関数B_J(x)の値を表示します。
  3. J=1/2のtanh一致、奇対称性、±1への飽和と照らし、符号、桁、極や飽和への近さを読み取ります。
  4. 再利用するときは入力値、表示桁、確認日、実数枝という条件も一緒に保存します。

計算式・考え方

B_J(x)=((2J+1)/(2J))coth(((2J+1)/(2J))x)-(1/(2J))coth(x/(2J))です。x=0は0、|x|<0.1はcoth級数を差し引いて得たx^9までの式を使います。

注意事項

  • ブリルアン関数B_J(x)は、正の整数または半整数の量子数Jで形が変わり、量子常磁性の無次元応答を表す奇関数です。このページは一つまたは二つの実数入力から一つの実数値を返すスカラー計算に限定しています。グラフ、複素数、数列の一括生成は扱わず、入力した一点の値と定義域を落ち着いて確認するためのページです。
  • 採用した数式は、二つの双曲線余接へA=(2J+1)/(2J)、B=1/(2J)を入れ、原点では(A^(2k)-B^(2k))の級数差を直接評価します。表示直前だけで丸め、内部ではJavaScriptとPythonが共通に扱えるIEEE 754倍精度の有限値を保ちます。式を表計算へ転記するときも、括弧、指数、定数の位置を変えないでください。
  • 入力範囲は、xを±1,000,000以内、Jを0.5以上1,000,000以下の正の整数または半整数に限定します。数学的な定義域そのものより狭い場合は、関数を別物へ縮約したのではなく、有限な倍精度結果をブラウザで再現できる契約として上限と下限を設けています。空欄、文字、NaN、無限大、範囲外の数は計算前に拒否します。
  • 数値安定性については、x=0を明示し、小さいxでは二つの大きな1/x項の相殺を展開済み級数で避け、cothの大引数は±1へ分岐します。単純な教科書式をそのまま評価すると、近い大きな数の差、指数オーバーフロー、ゼロ除算が起こる場所があります。この実装は条件分岐を遅延評価し、選ばれなかった危険な枝を実行しません。
  • 境界の読み方は、x=0で0、J=1/2ではB_(1/2)(x)=tanh(x)、J→∞ではLangevin関数へ近づきます。境界値を自動的にゼロへ置き換えたり、発散点へ便宜的な有限値を付けたりしません。定義できる特別値だけを明示的に返し、極や許容範囲外は入力エラーとして理由を示します。
  • 結果は、奇関数で絶対値は1未満、Jごとに原点の傾き(J+1)/(3J)と飽和への近づき方が変わります。最後の数桁は処理系、入力の十進表現、近似式の丸めによって変わり得ます。手計算、別ライブラリ、論文の表と比べるときは、有効桁だけでなく定義、引数の並び、正規化、実数枝もそろえてください。
  • 検算では、J=1/2でtanh(x)との一致、B_J(0)=0、B_J(-x)=-B_J(x)、大きいJでLangevin関数への接近を確認します。通常点、ゼロまたは既知の特別値、定義域外の三種類を分けて試験しています。対称性や漸化式がある関数では、一点の一致だけでなく、符号を反転した値や隣接する引数との関係も独立に確かめます。
  • 参照資料は、NIST DLMF 4.28の双曲線関数と余接展開、標準的なBrillouin関数の定義を参照しました。2026年7月13日に定義、実数領域、特異点、近似式の係数を照合しました。NIST DLMFは数式の節番号、Boost.MathはLanczos近似の実装上の意味を確認するために使い、特定ライブラリの出力を固定値として埋め込んではいません。
  • このページで扱わない範囲は、J=∞という文字入力、複素引数、逆ブリルアン関数、相互作用やヒステリシスを含む磁化モデルです。目的外の入力を無理に通すと、見かけ上は数値でも別の枝や別の規約を表すことがあります。必要な領域が範囲外なら、複素特殊関数や任意精度演算に対応した検証済みライブラリを選んでください。
  • 実務への持ち込み方は、有限Jの量子モデルか古典極限かを区別し、厳密なJ→∞値が必要なら同梱のランジュバン関数ページを使います。この計算値は学習、式の確認、テストデータ作成を助けるものです。観測モデル、材料モデル、統計分布、最適化手順の妥当性は別問題なので、前提、単位、測定誤差、採用したモデル名を計算結果と一緒に記録してください。
  • 有限な実数とIEEE 754倍精度による学習・検算用の近似値です。複素枝、任意精度、物理モデル全体の妥当性は扱いません。

よくある質問

ブリルアン関数B_J(x)を複素数でも計算できますか?

できません。このページは正の整数・半整数Jと実数xだけを対象とし、複素双曲線関数は実装していません。このページの入力欄、極の判定、近似式、結果表示は有限な実数だけを契約にしています。複素平面の枝切りや偏角を必要とする用途では、複素特殊関数を明示的に実装した任意精度ライブラリを使ってください。

結果が別のソフトと少し違うのはなぜですか?

Jの定義、xへ含める係数、Brillouin関数全体へ掛ける飽和磁化を混同すると別の数値になります。加えて、倍精度では十進小数を二進数へ変換する時点で丸めが入ります。比較時は少数桁を文字列として一致させるのではなく、用途に見合う絶対誤差または相対誤差で判定してください。

入力上限を超える値を0や最大値で代用してよいですか?

推奨しません。Jの無限大は数値欄へ入力せず、厳密な古典極限として別ページのLangevin関数を計算してください。上限への切り詰めは元の問題を別の問題へ変えるため、このページは範囲外として拒否します。より広い範囲が必要なら対数値、漸近式、任意精度など目的に合う表現へ切り替えてください。

入力や計算結果は外部へ送信されますか?

送信されません。このページの計算は端末内のJavaScriptで完結し、入力値を保存する通信処理や外部API呼び出しを含みません。共有端末では画面表示、コピー履歴、ブラウザ履歴の扱いに注意してください。

入力した実数と計算結果はこの端末内だけで処理され、計算のために外部サーバーへ送信または保存されません。個人情報、未公開研究データ、認証情報は入力せず、共有端末では表示内容とクリップボードを利用後に確認してください。