スプレッドシートで第2種ベッセル関数 Y_n(x) を求めたいけれど、どの関数を使えばいいかわからない。そんな場面はありませんか。
振動や波動の解析、電磁場の計算では、ベッセル関数の値が必要になります。手計算や紙の数表で求めるのは現実的ではないですよね。
GoogleスプレッドシートのBESSELY関数を使えば、セルに数式を入力するだけで第2種ベッセル関数の値を一発で計算できますよ。この記事では、BESSELY関数の構文から実務での使いどころ、エラー対処法まで丁寧に解説します。
スプレッドシートのBESSELY関数とは?第2種ベッセル関数を計算する関数
BESSELY関数は、第2種ベッセル関数 Y_n(x) の値を返すスプレッドシートの関数です。読み方は「ベッセル・ワイ」です。第2種ベッセル関数はウェーバー関数やノイマン関数とも呼ばれます。
ベッセル関数は、円筒座標系の微分方程式を解くときに登場する特殊関数です。工学や物理学の分野で広く使われています。
GoogleスプレッドシートではExcelと同じ仕様で動作します。Excel 2007以降と互換性があるため、Excel経験者にも違和感なく使えますよ。
BESSELY関数の数学的な意味
BESSELY関数が扱う「第2種ベッセル関数」は、ベッセルの微分方程式のもう一方の独立解として定義される関数です。
Y_n(x) の最大の特徴は、x → 0 のとき負の無限大に発散することです。これが第1種ベッセル関数 J_n(x) と大きく異なる点で、BESSELJ は原点で有限の値(J_0(0) = 1)を持ちますが、BESSELY は原点で発散します。
x が大きい領域では、Y_n(x) は J_n(x) と同様に振動しながら減衰していきます。この2つが重ね合わさって波動方程式の一般解を構成します。
どんなときに使う?
BESSELY関数は、主に次のような場面で活躍します。
- 円形領域の外側(原点を含まない領域)での波動方程式の解を求めるとき
- 電磁波の解析で円形導波管の外部領域の特性を計算するとき
- 音響解析でスピーカーの遠方放射パターンを求めるとき
- 熱伝導の問題で外径から内径への熱流を計算するとき
理工系の研究やエンジニアリング業務で使うことが多い関数ですね。原点を含まない領域での計算に適しています。
BESSELJとBESSELYの関係
BESSELJ(第1種ベッセル関数 J_n(x))とBESSELY(第2種ベッセル関数 Y_n(x))は、ベッセル方程式の2つの独立な解です。この2つがペアでベッセル方程式の一般解 C1・J_n(x) + C2・Y_n(x) を構成します。
- J_n(x): 原点で有限、円形領域の内側の解に使う
- Y_n(x): 原点で発散、円形領域の外側の解に使う
境界条件によってどちらか一方、または両方を使います。セットで覚えておくと便利ですよ。
BESSELY関数の構文と引数
基本構文
=BESSELY(x, n)
引数は2つで、どちらも必須です。省略するとエラーになります。
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| x | 必須 | 関数を評価する値(正の実数のみ) |
| n | 必須 | ベッセル関数の次数(0以上の整数) |
引数 x には、関数に代入したい数値を指定します。BESSELY関数では x は正の数のみ指定できます。 0以下の値を指定すると #NUM! エラーになるので注意してください。Y_n(x) は x → 0 で発散するため、0を含む値は指定できません。この点がBESSELJ(x に任意の実数を指定可能)と異なる重要なポイントです。
引数 n には、ベッセル関数の次数(じすう)を指定します。0以上の整数を入力してください。小数を渡すと小数点以下が自動的に切り捨てられます。たとえば n に 2.7 を指定すると、2として計算されますよ。
BESSELY関数の基本的な使い方
実際にスプレッドシートでBESSELY関数を使ってみましょう。代表的なパターンを3つ紹介します。
数値を直接指定する
セルに次のように入力します。
=BESSELY(1.5, 1)
この数式は、x=1.5、次数 n=1 のときの第2種ベッセル関数 Y_1(1.5) の値を返します。結果は約 -0.4123 になります。
数式バーに直接数値を打ち込むだけなので、ちょっと値を確認したいときに便利ですよ。
セル参照を使う
A1セルに x の値、B1セルに次数 n を入力しておけば、次のように書けます。
=BESSELY(A1, B1)
A1 に 1.5、B1 に 1 を入力すると、先ほどと同じ約 -0.4123 という結果になります。パラメータを変えて繰り返し計算するときは、セル参照のほうが圧倒的にラクです。
次数ごとの値を一覧で確認する
x の値を固定して、次数 n を 0 から順に変えていくと、関数の振る舞いがわかりやすくなります。
| x の値 | 次数 n | 数式 | 結果(概算) |
|---|---|---|---|
| 1.5 | 0 | =BESSELY(1.5, 0) | 0.3824 |
| 1.5 | 1 | =BESSELY(1.5, 1) | -0.4123 |
| 1.5 | 2 | =BESSELY(1.5, 2) | -1.1726 |
| 1.5 | 3 | =BESSELY(1.5, 3) | -4.1100 |
次数が大きくなるほど x が小さい領域での絶対値が大きくなっていく特徴がよくわかりますね。符号も変化します。この一覧をスプレッドシートで作っておくと、パラメータの傾向をつかみやすいですよ。
BESSELY関数の実務活用パターン
ここからはスプレッドシートならではの便利な使い方を紹介します。表形式での一括計算と、BESSELJ との比較確認の2パターンです。
ARRAYFORMULAで複数の x 値を一気に計算する
スプレッドシートの強みである ARRAYFORMULA関数(範囲全体に数式を一気に展開する関数)と組み合わせると、複数の入力値に対して BESSELY を一発で計算できます。
A2:A6 に x の値(1, 2, 3, 4, 5)を、B2:B6 に次数(すべて 0)を入れておきます。C2 に次の数式を入れると、C2:C6 まで一気に展開されますよ。
=ARRAYFORMULA(BESSELY(A2:A6, B2:B6))
| x | n | Y_n(x)(結果) |
|---|---|---|
| 1 | 0 | 0.0883 |
| 2 | 0 | 0.1070 |
| 3 | 0 | 0.3769 |
| 4 | 0 | -0.0169 |
| 5 | 0 | -0.3085 |
Y_0(x) が振動している様子が確認できます。J_0(x) と同じように振動しながら減衰していく特性があります。x が整数のとき、J_0(x) と Y_0(x) の組み合わせで波動解の全体像をつかめます。
BESSELJとBESSELYのペアで一般解を確認する
ベッセル方程式の一般解は C1・J_n(x) + C2・Y_n(x) の形になります。たとえば C1=1、C2=1 の場合に、x=1 〜 5 での値を確認するには次のようにします。
A列に x の値、B列に =BESSELJ(A2, 0)、C列に =BESSELY(A2, 0)、D列に =B2+C2 を入力して下にコピーします。
| x | J_0(x) | Y_0(x) | 一般解(J+Y) |
|---|---|---|---|
| 1 | 0.7652 | 0.0883 | 0.8535 |
| 2 | 0.2239 | 0.1070 | 0.3309 |
| 3 | -0.2601 | 0.3769 | 0.1168 |
| 4 | -0.3971 | -0.0169 | -0.4140 |
| 5 | -0.1776 | -0.3085 | -0.4861 |
J_0(x) と Y_0(x) のどちらも振動しています。境界条件によって C1 と C2 の値が決まり、問題に合った解が得られますよ。
BESSELJ/BESSELY/BESSELI/BESSELK の使い分け
スプレッドシートにはBESSELYのほかに、3つのベッセル関数が用意されています。それぞれの違いを整理しておきましょう。
4関数の違いを比較表で整理
| 関数名 | 正式名称 | 数学記号 | 特性 | 主な用途 |
|---|---|---|---|---|
| BESSELJ | 第1種ベッセル関数 | J_n(x) | 振動的・原点で有限 | 振動・波動の正則解 |
| BESSELY | 第2種ベッセル関数 | Y_n(x) | x→0 で発散・振動的 | 振動・波動の特異解 |
| BESSELI | 第1種変形ベッセル関数 | I_n(x) | 単調増加(指数発散) | 熱伝導・拡散の正則解 |
| BESSELK | 第2種変形ベッセル関数 | K_n(x) | 単調減少(指数減衰) | 熱伝導・拡散の特異解 |
大きく分けると2グループあります。
- BESSELJ / BESSELY: 通常のベッセル関数。振動や波動を扱う問題で使う
- BESSELI / BESSELK: 変形ベッセル関数。熱伝導や拡散など指数的な振る舞いの問題で使う
BESSELJ と BESSELY はペアで使うことが多いので、セットで覚えておくと便利ですよ。
BESSELJ と BESSELY の違いを比較
同じ「通常のベッセル関数」グループですが、2つの重要な違いがあります。
| 比較項目 | BESSELJ | BESSELY |
|---|---|---|
| x=0 での値 | J_0(0)=1(有限) | 発散(#NUM!エラー) |
| x < 0 の指定 | 計算可能 | #NUM!エラー |
| x=0 での n≥1 | J_n(0)=0 | 発散 |
| 主な用途 | 原点を含む領域 | 原点を含まない外部領域 |
原点を含む問題(円柱内部の振動など)では BESSELJ、原点を含まない外部領域(円柱外側の電磁場など)では BESSELY を使います。迷ったら境界条件の原点の扱いで判断してくださいね。
Excel版の各関数についても詳しく知りたいときは、BESSELY関数・BESSELJ関数・BESSELI関数 の各記事も参考になりますよ。
BESSELY関数のよくあるエラーと対処法
BESSELY関数で発生しやすいエラーと、その対処法をまとめました。
#NUM! エラー(x が 0 以下のとき)
x に 0 以下の値を指定すると #NUM! エラーが表示されます。
=BESSELY(0, 1) → #NUM! エラー
=BESSELY(-1, 1) → #NUM! エラー
対処法: BESSELY関数では x は正の数のみ有効です。Y_n(x) は x=0 で負の無限大に発散するため、0を含む値は指定できません。BESSELJ と混同しやすいポイントなので注意してください。
=BESSELJ(0, 0) → 1(正常計算)
=BESSELY(0, 0) → #NUM!(発散するため計算不可)
#NUM! エラー(次数が負のとき)
n に負の整数を指定しても #NUM! エラーになります。
=BESSELY(1.5, -1) → #NUM! エラー
対処法: 次数 n は 0 以上の整数を指定してください。
#VALUE! エラー(文字列を渡したとき)
x または n に数値以外の値を指定すると、#VALUE! エラーが表示されます。
=BESSELY("abc", 1) → #VALUE! エラー
対処法: 引数に文字列が入っていないか確認してください。セル参照の場合、参照先のセルが空白や文字列になっていることがありますよ。
#NAME? エラー(スペルミス)
関数名のスペルミスで発生します。
対処法: 関数名が BESSELY (スペースなし)になっているか確認してください。スプレッドシートの数式入力時に表示される候補から選ぶと、スペルミスを防げますよ。
まとめ
この記事では、スプレッドシートのBESSELY関数について解説しました。ポイントを振り返っておきましょう。
- BESSELY関数は第2種ベッセル関数 Y_n(x) の値を返すエンジニアリング関数
- 構文は
=BESSELY(x, n)で、引数は2つとも必須 - x は正の数のみ指定可能(0以下は
#NUM!エラー) - 次数 n は 0 以上の整数(小数は切り捨て)
- ARRAYFORMULA と組み合わせると複数の値を一気に計算できる
- BESSELJ(原点で有限)と BESSELY(原点で発散)はベッセル方程式のペア解
- ベッセル関数は4種類あり、振動系(J/Y)と熱伝導系(I/K)で使い分ける
- x に 0以下で
#NUM!、文字列入力で#VALUE!、スペルミスで#NAME?エラー
ベッセル関数は理工系のニッチな関数ですが、必要になる場面では他の方法では代替できません。手元のスプレッドシートで即座に計算できると、検算や試行錯誤の効率がぐっと上がりますよ。
