チルノ関数 f(x)=3x²-8x+6

チルノ関数 f(x)=3x²-8x+6

えーと、私の知り合いが昔にこんなのを投稿したのを見つけたんで自分もやってみました。

チルノ関数とは

f(1)=1
f(2)=2
f(3)=9

「チルノのパーフェクトさんすう教室」の「1!2!9~!」にあわせて、1,2,9…と数字が出るような関数です。
まず、なぜ「f(x)=3x²-8x+6」というのが出るかやってみました。
 
Y=aX²+bX+c とすると、XとYに数字を当てはめて
1=a+b+c ── ①
2=4a+2b+c ── ②
9=9a+3b+c ── ③
②-①より
3a+b=1 ── ④
③-②より
5a+b=7 ── ⑤
⑤-④より
2a=6
a=3
これを④に代入して
9+b=1
b=-8
これらを①に代入して
1=3+(-8)+c
c=6
よって
3X²-8X+6のできあがり~。
 
ついでに頂点の位置。
Y=3X²-8X+6=3(X²-8X/3)+6
=3{(X-4/3)²-16/9}+6
=3(X-4/3)²-16/3+6
=3(X-4/3)²+2/3
Y-2/3=3(X-4/3)²
ということで、頂点は、(4/3,2/3)ということですね。

HSPで作ってみた

チルノ関数という名前のなので、そのままcirno()にしました。

#module
#defcfunc cirno int _p1
return 3*_p1*_p1-8*_p1+6
#global
repeat
title "Y=2X*X-8X+6 : X="+(cnt+1)
redraw 0
if clear=1 : color 255,255,255 : boxf : color : clear=0
pos atai_x,pos_y*18 : mes cirno(cnt+1)
pos_y+
if pos_y>25 {
pos_y=0
atai_x+strlen(""+cirno(cnt))*10
if atai_x>640-strlen(""+cirno(cnt+1))*10+10 {
atai_x=0
clear=1
}
}
redraw
await 50
loop

実行結果
う~ん…、もしチルノのパーフェクトさんすう教室でこの数字を延々と言ってたらおわりそう…。

「チルノ関数 f(x)=3x²-8x+6」への4件のフィードバック

  1. 傑作ポチありがとうございます!

    ようするに、三点の座標からどのような二次関数のグラフが書けるかということです。あとでグラフ追加しておきますね。

  2. すると、2次関数以外のチルノ関数も存在するかもしれませんね……模索してみます。
    なんと、引数を上げてみるととんでもないことになりますね^^;
    画面いっぱいでもう6桁も……2次関数は上がり方が急で面白いです。

  3. 3ページ目でもう7桁行きます。ああ、でもあんまり数が大きくなるとHSPで扱えなくなっちゃう…。150ページ目あたりからおかしくなりました。(スピード早くしてみてたから±10~20の誤差あり…)

コメントは受け付けていません。