<多項式の高次切り捨て関数群>
通常マクローリン展開は微分法が知られていますが、今回のような無限乗積タイプには
適していません。今回の関数群はこのような理由から導入されました。
これらの数式は、フェルマーの最終定理やラマヌジャンの予想の解説で登場します。
ここで、独立変数は1変数多項式に限定されます。なお無限乗積に現れる、制御変数は
独立変数ではありません。
フレンケルのモジュラー形式の関数
実際の計算では以下のように分割して計算します。
ラマヌジャンの予想のτ関数の定義で使われるモジュラー形式。
これらをマクローリン展開したときの、qの係数を知りたいのですが、
残念ながら、カルキングのテーラー展開機能で効率よく求めることはできません。
従って、今回、ライブラリ関数としていくつかの関数を新規に提供することになりました
これらの式の計算範囲を限定するために、切り捨て次数というものを導入しました。
これは数値計算における近似計算とは異なります。ここで扱う計算は整数です。
無限乗積の式を正しい順序で括弧をほどいていくと順次、低い次数から係数が確定してい
きます。この計算においては正確さを失わずいかに無駄な計算を回避できるかが重要であ
り、これが少々複雑なため、切り捨てモードの多項式計算を導入した理由です。
●1変数多項式の内部表現(ここではマップ形式多項式と呼ぶことにします)
具体例で示しましょう。
内部表現は以下のようにカルキング配列の形で表されます。
★累乗の情報
1変数であれば、もっと簡単に1次元配列で表現できますが、
多変数多項式との整合性のため、2次元配列になっています。
★各項の係数の情報
この例ではすべての係数が整数になっていますが、分数も可能です。
★一般情報
1変数で、最高次数が5であり、変数名はxであることを表しています。
文字列の形になっていることに注意してください。
例2
特殊なケース 値が0や定数の多項式
★多項式からマップ形式への変換
カルキングの文字列型を引数とするシステム関数であるarray_form_polynomialM
関数を利用します。この計算は代数系の計算ではなく、数値計算系の計算になりま
す。カルキングでは多項式を文字列型にして、代数計算結果を、文字列型で返し
ます。文字列型多項式よりも、map形式多項式の方が一般にきめ細かな処理ができる
ため、map形式多項式が利用されます。このため文字列型多項式の相互変換関数が必
要になってきます。
使用例
計算
★map形式から文字列型代数式への変換
カルキングのmap形式を引数とするシステム関数であるmap_form_to_poly関数
を利用します。この計算も代数系の計算ではなく、数値計算系の計算になります。
map形式は一般にデータサイズが大きいので、一旦、変数に代入して利用します。
代入定義
計算
★多項式の掛け算における切り捨て 代数系の計算プロパティではなく、数値計算系の計算プロパ
ティで計算する必要があります。
M1,M2はそれぞれmap形式の多項式
dgrは切り捨て次数。
計算例
代入定義
以下ではこの2つの式に関するmap形式多項式を求める。
代入定義
以上の準備の下で以下のように関数呼び出しをします。
代入定義  分数モード
計算
次にTM3を文字列の多項式に変換します。
計算
以上の計算例でかなり煩雑な印象を持たれたかもしれません。 
実際の計算においては、各計算段階でのmap形式はデバッグ時を除いて意識する必要は
ありません。この件は最終目的の例題で判明します。
★多項式の累乗における切り捨て 代数系の計算プロパティではなく、数値計算系のプロパティで 
計算する必要があります。
多項式の累乗の計算を高次切り捨てモードで計算するようなものです。
M1はmap形式の多項式
pは累乗数
dgrは切り捨て次数。
計算例
代入定義
代入定義
代入定義
TM2を文字列の多項式に変換します。
計算
無限相乗積における切り捨て 代数系の計算プロパティではなく、数値計算系の計算プロパティ
で計算する必要があります。
計算可能な構文形式
●nは制御変数で、この名前はnに限りません。初期値は1に限りません。
●a,b,c,dは整数に限られます。さらにaが0のケースは切り捨てモードの計算はできません。
●qは独立変数です。この名前はqに限りません。
●この式を切り捨てモードで計算する関数
★関数名 
pi_product_cut
★name
★base
★expon
★init
制御変数の初期値 
★dgr
計算時の切り捨て次数で文字列表記ではなく単に整数を表記
★関数の値
map形式の多項式
計算例 1
の切り捨てモード計算
代入定義
代入定義
代入定義
代入定義
代入定義
代入定義
計算
文字列記号の付かない答えを表示したい時
絶対値記号で文字列記号のない式にできます。
計算
計算例 2
計算できない例
の切り捨てモード計算
代入定義
代入定義
代入定義
代入定義
代入定義
計算
計算例 3
baseにもexponにも制御変数がある例
の切り捨てモード計算
代入定義
代入定義
代入定義
代入定義
代入定義
代入定義
計算
計算例 4
応用問題1
フレンケルのモジュラー形式
フェルマーの最終定理の証明は、志村・谷山予想の証明が最後の関門でした。
スタンフォード大学教授のエドワード・フレンケルがこの予想の解説で使いました。
の切り捨てモード計算
この例は2重の無限乗積になっています。したがって、工夫が必要です。
この式を以下のように分解して計算します。このような分解が可能なのは切り捨てモード計算のためです。
Tが最終回になります。
今回の解は、スクリプトで示します。
このスクリプトは極めて単純な構造をしています。関数の引数は計算したい最高次数です。
関数の実行   数値計算モード
以下の関数作るとはmap形式が得られます。これをもとに多項式の次数と係数の表が作れます。
代入定義
P,Cは以下のようになっています。
以下の式を実行すると、CのデータのようにPのデータの中括弧を削除できます。
代入定義
このようにしてP,Cから右の表が得られます。
作成法
●表の1行目にP,Cを記入する。
●第1列目を選択して、「実行」-「代入定義」
●第2列目を選択して、「実行」-「代入定義」
以下の表は「数式処理」ー「楕円曲線と剰余演算での整数解.clk」 の
ファイルの最後で求めた表を再録したものです。
素数 P
mod pの元での解の個数
p - 解の個数
フレンケルの式の次数と係数の表
色がついている行は素数の箇所です。
素数次数でも係数が0の箇所は
表示されていません
素数が19の行は右の表にはありませんがエラーではありません
あるモジュラー形式の展開係数に一致するというのが志村・谷山予想です。スタンフォード大学のエドワー
ド フランケル教授は世界の7不思議のように思えると発言されています。志村・谷山予想はすでに証明された
ので予想ではなく定理です。
計算例 5
応用問題2
ラマヌジャンのモジュラー形式 τ関数の値を求める。
の切り捨てモード計算
この計算は以下のように2段階で行います。
T=qT1
T1を計算
関数の実行  数値計算モード   
tau関数を若干修正した以下の関数は上記の展開式をマップ形式で表現したものです。
tauMの計算結果
Ramanujanはτ関数に関して3つの性質を経験的に導き出しました。これをいくつか具体例で計算します。 そ
のためには今計算した37の例では不足です。
そこで以下では541までの計算をすることにします。これには多少時間がかかります。
さらに係数部分が必要であるために、以下のように多重代入によって、係数Cの部分を
求めました。展開の各次数はP、変数名等の情報はIに格納されますが、これらは使われません
代入定義
Pは係数が0以外の次数を示していますが、幸いに、欠番なく連続しています。Cはそれぞれの次数に対応した
係数を示しています。
紙面都合上、係数の最初の37個を示しておきます。
これらの係数に関して、τ(n)と表記されます。Ramanujan (1916) は τ(n) の次の3つの性質を観察し
たが証明はしなかった。3番目はラマヌジャン予想と言われた。現在、すべて証明されている。
pは素数
すべての素数に対して
以下はこれら3項目に関して、適当に選んだ数値で試した結果です。
代入定義
計算
代入定義
計算
代入定義
計算
代入定義
計算
少数モード
代入定義
計算
少数モード
代入定義
計算
少数モード
代入定義
計算
少数モード
代入定義
計算
少数モード
代入定義
計算
少数モード
以上