n次関数の作り方を説明します。
1次関数は、\( y = a_1 x + a_0 \) です。 これを、そのままプログラムにしないで、次のように書きます。
y = a1; y = y * x + a0;
=は、代入の意味だから、これでいいのです。
2次関数は、\( y = a_2 x^2 + a_1 x + a_0 \) です。式変形します。
\( y = (a_2 x + a_1)x + a_0 \)最初の括弧は1次関数と同じです。ですから、プログラムは次のように書けます。
y = a2; y = y * x + a1; y = y * x + a0;
3次関数は、 \( y = a_3 x^3 + a_2 x^2 + a_1 x + a_0 \) です。式変形をします。
\( y = (a_3 x^2 + a_2 x + a_1) x + a_0 = ((a_3 x + a_2) x + a_1) x + a_0 \)
これは、プログラムにすると次のようになります。
y = a3; y = y * x + a2; y = y * x + a1; y = y * x + a0;
係数に配列を使えば簡単になります。
y = a[3]; for(int i = 1; i <= 3; i++){ y = y * x + a[3 - i]; }
n次関数のプログラムは次のような感じになります。
int n; // 次数 double a[] = new double[10]; // 10次関数までとする y = a[n]; for(int i = 1; i <= n; i++){ y = y * x + a[n - i]; }
あとは、使いやすくするために、係数をセットする関数と、コンストラクタを幾つか用意するだけです。