回答編集履歴
1
追記
answer
CHANGED
@@ -29,4 +29,26 @@
|
|
29
29
|
0 < x なら 1 を返す
|
30
30
|
ような関数とします。
|
31
31
|
|
32
|
-
f を javascript (node.js) で書き、動作を試してみたのが↑です。
|
32
|
+
f を javascript (node.js) で書き、動作を試してみたのが↑です。
|
33
|
+
|
34
|
+
追記:
|
35
|
+
数学的なことをだらだらと述べます。
|
36
|
+
|
37
|
+
f(n) = m が n 個与えられたとき、それを満たす x の多項式はいくつも存在します。
|
38
|
+
一般的には n 個に対しては (n - 1) 次多項式で、それが可能です。
|
39
|
+
(2点なら、1次式で可能になる)
|
40
|
+
|
41
|
+
参考
|
42
|
+
- ニュートン補完 [https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3%E8%A3%9C%E9%96%93](https://ja.wikipedia.org/wiki/%E3%83%8B%E3%83%A5%E3%83%BC%E3%83%88%E3%83%B3%E8%A3%9C%E9%96%93)
|
43
|
+
|
44
|
+
ここでの質問の場合は、6つの f(x) = m があたえられているので 5 次多項式の答えが存在するはずです。
|
45
|
+
|
46
|
+
しかし、ここでの質問のケースでは、 ほとんど直線であり、その直線を途中でちょっとずらすだけで条件をみたすことができます。
|
47
|
+
ずらす操作を if での条件分岐で記載することも可能です。
|
48
|
+
普通の多項式はすべてなだらかなグラフになりますが、なだらかにならない式として
|
49
|
+
|x| とか sgn(x) とか floor(x) とか ディリクレ関数 ... があります。
|
50
|
+
|
51
|
+
ここでは、 sgn(x) (x が正なら 1, 負なら -1, 0 なら 0 を返す) を利用することで、直線をずらす処理を数式で
|
52
|
+
表現してみたのです。
|
53
|
+
floor(x) をつかっても、直線をずらすことを表現できる気もします。
|
54
|
+
|