[VBA] 係数を入力して多項式の値を返すユーザー定義関数

係数を入力して多項式の値を返す関数

 次のような 多項式 を計算させる関数です。
 
\[P(x)=a_0+a_1x+a_2x^2+a_3x^3+\cdots\]
 $a_0,\:a_1$ および $x$ は必ず入力します。つまり 3 つの引数が指定されたら 1 次式の値を返すようにします。$a_2$ 以降はオプションとします。

 '多項式の計算
 '(C)BlogCat http://excelmath.atelierkobato.com/plynomial/

 Function POLYNOMIAL(a0 As Double, a1 As Double, _
 x As Double, ParamArray a()) As Double

 Dim u As Integer, k As Integer

 u = UBound(a)

 s = a0 + a1 * x

 For k = 0 To u

 s = s + a(k) * x ^ (k + 2)

 Next k

 POLYNOMIAL = s

 End Function

 このマクロをワークシートで使うときは

=POLYNOMIAL(a0, a1, x [, a2, a3, ...])

のように記述します。最初に 1 次式を作ってから 2 次の項以降を足していくイメージで引数を入力します。たとえば $P(x)=1+2x+3x^2+4x^3$ の $x=5$ における値を計算させたい場合は

=POLYNOMIAL(1,2,5,3,4)

と入力すると 586 という値が返ります。
 

可変型引数を用いています

 マクロの中で関数の引数の一部を

ParamArray a()

という形で宣言していますが、これはユーザーが指定したぶんだけの引数を配列 a() に入れていくというステートメントです。ParamArray は宣言セクションに(配列のインデックス番号の下限値を 1 にする)Option Base 1 が記述されていても、その影響を受けないため、かならずインデックス番号 0 が下限値となります。可変型引数 ParamArray についての詳細は こばとちゃんのサイト を参考にしてください。

 ≫ VBA 数値計算トップページ

スポンサーリンク
末尾広告
末尾広告

コメントをどうぞ

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください