Mathematica、Wolfram言語

数学研究するための問題の変形方法-Part2-2

入試問題変形 数学

今回は前回、コードにした中学入試問題を変形してみましょう。まずは、前編の問題とコードを紹介します。

今回の問題

ある整数を、0より大きい整数の和で表わす方法が何通りあるかを考えます。使う数が同じで順番だけが違うものは、1とおりに数えます。また一個の整数だけを使うものも、1とおりとして数えます。0を使ってはいけません。たとえば、6を3個以下の整数の和で表わす方法は、
    6
    5+1
    4+2
    3+3
    4+1+1
    3+2+1
    2+2+2
の7とおりあります。
では、50を3個以下の整数の和で表わす方法は、何通りありますか。

(第5回算数オリンピック、ファイナル問題より)

コード

daa = Union[Flatten[Table[Sort[{a, b, c}], {a, 0, 50}, {b, 050}, {c, 0, 50}],2]];
Length[Select[daa, (#[[1]] + #[[2]] + #[[3]]) == 50 &]]

今回は問題の数字を変形します。(問題の条件は今回は変えません)

問題の変形例

ある整数を、0より大きい整数の和で表わす方法が何通りあるかを考えます。使う数が同じで順番だけが違うものは、1とおりに数えます。また一個の整数だけを使うものも、1とおりとして数えます。0を使ってはいけません。たとえば、6を3個以下の整数の和で表わす方法は、
    6
    5+1
    4+2
    3+3
    4+1+1
    3+2+1
    2+2+2
の7とおりあります。
では、1~100を3個以下の整数の和で表わす方法は、何通りありますか。 

このように、501~100にしてみます。

In[1]:=Table[Se[a],{a, 1, 100}]

Out[1]:={1, 2, 3, 4, 5, 7, 8, 10, 12, 14, 16, 19, 21, 24, 27, 30, 33, 37, 40,44, 48, 52, 56, 61, 65, 70, 75, 80, 85, 91, 96, 102, 108, 114, 120,127, 133, 140, 147, 154, 161, 169, 176, 184, 192, 200, 208, 217, 225,234, 243, 252, 261, 271, 280, 290, 300, 310, 320, 331, 341, 352, 363, 374, 385, 397, 408, 420, 432, 444, 456, 469, 481, 494, 507, 520, 533, 547, 560, 574, 588, 602, 616, 631, 645, 660, 675, 690, 705, 721, 736, 752, 768, 784, 800, 817, 833, 850, 867, 884}

数値の羅列をみてもわからないので、プロットします。(ここで、Wolframの新商品 Wolfram Alpha Notebook Editionに入力します。商品の説明は次回します)

Wolfram Alphaは数列を入力するだけで、分析してくれます。が、数列の数に制限ある….というわけで、今回は最初の46個(46個が限界)を分析してもらいました。

出力結果を書いていきます。

まず、数列を延長した場合の結果

1,2,3,4,5,7,8,10,12,14,16,19,21,24,27,30,33,37,40,44,48,52,56,61,65,70,75,80,85,91,96,102,108,114,120,127,133,140,147,154,161,169,176,184,192,200,208,217,225,234,243,252,261,271,280,290,300,310,320,331,341,352,363,374,385,397,408,420,432,444,456,

このことは、46個入力して、71個のデータが出力されています。これは、この数列が規則的に並んでいるという証拠で、最初にMathematicaで出力したデータと一致したため、Wolfram Alphaの分析方法は正しいということになります。

母関数

母関数

プロット結果

プロット結果

データの数

データの数

46個

第一階差

第一階差

第二階差

第二階差

第三階差

第三階差

累積合計

累積合計

また、この数列を単純な式(閉形型)にすると

\frac{1}{72} \left(9 e^{2 i \pi  n} \left(2 n^2+16 n+31\right)-4 \left(3 n^2+27 n+58\right)+8 e^{\frac{2 i \pi  n}{3}}+9 e^{i \pi  n}+8 e^{\frac{1}{3} (-2) i \pi  n}\right)

このような結果になります。要するに何が言いたいかというと数列に規則があるということ。

ここからは、3個以下の整数の和で表わす方法をn個以下の整数の和で表わす方法と、nの数を変えていきます。

2個の時(n=2)、(ここからは、母関数、プロット、閉形型)この3つを出力します。

{1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 36, 37, 37, 38, 38, 39, 39, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 48, 48, 49, 49, 50, 50,

\left(a_n \mathcal{G}_n\right)(z)=\frac{-z^2+z+1}{(z-1)^2 (z+1)}

\frac{1}{4} (-1)^n \left(2 (-1)^n n+3 (-1)^n+1\right)

3個の時は飛ばして(前述)、4個の場合(n=4)

{1, 2, 3, 5, 6, 9, 11, 15, 18, 23, 27, 34, 39, 47, 54, 64, 72, 84, 94, 108, 120, 136, 150, 169, 185, 206, 225, 249, 270, 297, 321, 351, 378, 411, 441, 478, 511, 551, 588, 632, 672, 720, 764, 816, 864, 920, 972, 1033, 1089, 1154, 1215, 1285, 1350, 1425, 1495, 1575, 1650, 1735, 1815, 1906, 1991, 2087, 2178, 2280, 2376, 2484, 2586, 2700, 2808, 2928, 3042, 3169, 3289, 3422, 3549, 3689, 3822, 3969, 4109, 4263, 4410, 4571, 4725, 4894, 5055, 5231, 5400, 5584, 5760, 5952, 6136, 6336, 6528, 6736, 6936, 7153, 7361, 7586, 7803, 8037}

プロット

母関数

結果なし

これ以上はパソコンのメモリが足らず計算不可

結果・結論

数は規則的に並んでるようだけど、公式をつくるにはもっとパソコンのメモリを増やさなければ….!こんなパソコン使えたらなぁ…

世界最強のコンピューター(IBM, Nvidia共同開発)引用元

まぁ、私が使うにはオーバースペックですけど….

コメント

タイトルとURLをコピーしました