カルキング365の第一回イージーアップデート内容
2016年10月4日
(1)システム関数の新規サポート
●多次元配列のソート関数sortmのサポート(プロフェッショナル専用)
代入定義
1番目の要素に着目してソート
代入定義
ソート結果
計算
2番目の要素に着目してソート
代入定義
計算
●レンジ変数や分数等の2つの要素を持つ場合の個別要素の取り出し
代入定義
代入定義
計算
計算
分数モードで代入定義
分数モードで代入定義
分数モードで代入定義
計算
計算
通分された分数に対しての結果です。
計算
(2)定積分の厳密解
Ver12までは、被積分関数に、絶対値記号や条件式として定義された関数が
使われた時には、計算値は必ず小数モードの値になっていました。
今回制限付きではありますが、厳密解が求められるケースを追加しました。
絶対値記号があっても、厳密解が求められることがあります。
 (すべて求められるわけではありません。)
分数モード代数計算
分数モード代数計算
条件式を使った関数があっても、厳密解が求められることがあります。
 (すべて求められるわけではありません。)
注 厳密定積分で参照する場合は、条件式は2行  
のみで、かつ、2行目の条件節は空白に限ります。
 (条件一つとそれ以外の場合のみです。)
関数定義
分数モード代数計算
分数モード代数計算
(3)フーリエ展開の厳密解
フーリエ展開の解説でしばしば取り上げられる簡単な例で、これまでは厳密解
が得られなかったケースで、今回可能になった例を示します。
(フーリエ展開の係数が小数のケースは、ほとんどの関数で求められるため、
割愛します。)
●鋸波になる例
f(x)関数のフーリエ展開の部分をコピーして、作ったのが以下の式です。
グラフを描くとx軸の範囲を -3.14~3.14 で近似できています。
gr0001.png
鋸歯状波
gr0002.png
●3次曲線
関数グラフは割愛します。
(4)ループ代入集合代入の曖昧さ解消と機能アップ
マウスクリック
数学の漸化式もここでとりあげます。
loop_assignement
詳しくは→
漸化式はカルキングのループ代入の一種です。
さらにカルキングでは、集合代入という機能もあります。 
これらに共通するデータ基盤は範囲定数です。
さらにこの定数を値として保持する範囲変数に関する規則を初めに述べます。
範囲定数とは2つの整数値で定義される定数です。
1つは下限値、もう一つは上限値です。
1..100
2..12
範囲変数とは範囲定数を代入定義で定義されたものです。
代入定義
代入定義
範囲定数範囲変数に関する規則
集合代入には範囲定数しか使えません。
ループ代入には範囲変数しか使えません。
数学でなじみの漸化式もループ代入の一つの例です。ループ代入の
左辺には、必ず、配列の添字部範囲変数が存在しないといけません。
代入文の左辺にしか範囲変数が存在しないときは、ループ代入とは
みなしません。
代入定義ではない計算には範囲定数と範囲変数の両方が使用可能です。
集合代入はカルキングの以前のバージョンよりサポートされています。
ループ代入との比較のために例を示しておきます。
代入定義
(集合)代入定義
計算
(集合)代入定義  注 代入で要素数が変化
計算
ループ代入の例
代入定義
代入定義
j は範囲変数になります。
代入定義
j が=記号の左辺の配列 a の添字部に現れるので、ループ代入と認識されます。
計算
漸化式への応用
●フィボナッチ級数を求める
代入定義
代入定義
代入定義
j は範囲変数になります。
代入定義
j が=記号の左辺の配列 a の添字部に現れるので、ループ代入と認識されます。
計算
●3次式の漸化式への応用
ニュートン法を利用した割り算を使わない高速版の漸化式
代入定義
代入定義
代入定義
代入定義
代入定義
計算
計算
(5)数独プログラムの完全書き換え(プロフェッショナル版専用
最新のカルキング機能で、複数個の解を求めることが可能なプログラムを
カルキングスクリプトで記述しました。
ただしプログラムとしては、1個の解のみを表示する形態を提供しています。 
通常出題される問題は解が1つであり、1つ見つかれば、他の解の探索は
不要なため、処理時間が高速化されます。
数独に関しては、実際はもっと簡素なプログラムが可能ですが、カルキングの
ようなインタープリタ方式では、実行時間が遅くなるため、適度にアルゴリズムを
工夫しました。そのため、プログラムサイズが少し増加しました。
8個の関数で構成された合計148行のプログラムです。
数独問題は表形式で、解も表に表示します。
アルゴリズムの核心は、再帰関数であり、行列と配列で記述されています。
内包的集合定義及び、漸化式が効果的に使われています。
以下はその断片です。
(6)ライブラリ関数追加
●copyTtoM(T, M ) 関数
表データを行列にコピーする。
●copyMtoT(M , T) 関数
行列データを表ににコピーする。
●FillZeroInBlank(T) 関数
表の空白セルに0をセットする。
(7)その他
数式表示に関する改善、及びプログラムの不具合の修正等も含まれています。
以上