maxima入門

n角数の判定

三角数、四角数、五角数、...と呼ばれる数値があります。
三角数ならば、正三角形の形に点を並べたときにそこに並ぶ点の総数の数です。
詳しくはwikipediaなどをどうぞ。
三角数の場合、具体的には1,3,6,10,15,21,...と続きます。
これは1からnまでの自然数の和に等しくなります。

そして、この三角数ですが、
ある自然数xが三角数かを判定するための判定法が存在します。
具体的には三角数の場合だとn=(√(8x+1)-1)/において、
xに値を代入し、nが自然数になった場合
それは三角数だと判定できます。

この項では、一般のn角数(多角数)についての判定式を
maximaで計算してみようというのがテーマです。

以下プログラム

n角数の判定

/* 3角数の場合 */ poly(n,x):=((n-2)*x^2-(n-4)*x)/2; s:solve(poly(3,x)-n=0,x); max(rhs(s[1]),rhs(s[2])); /* 上記をまとめたコード */ polyJudge(k):= block([s:solve(((k-2)*x^2-(k-4)*x)/2-n=0,x)],return(max(rhs(s[1]),rhs(s[2])))); /* n角数について計算する */ for i:3 thru 10 do print(polyJudge(i));done;
例えば四角数は正方形に点を並べた数、 つまり平方数ですので √nでチェック出来ることがわかります。
since 2014/03/23