計算の仕組み
自動再計算
数式を編集すると、編集に影響される部分が自動的に再計算され、すべての計算結果は常に最新に保ちます。
タイムアウトとキャンセル
1つの式の計算には時間制限が設けられています。この制限はタイムアウトと呼び、「ツール」→「環境設定」で調整できます。
実行中の計算を中断したい場合は、Ctrl+End で計算をキャンセルできます。キャンセルの指示はまだ実行されていない計算にも作用します。
タイムアウトまたはキャンセルしたすべての計算を再開したい場合は、Ctrl+Home でファイル全体の再計算を指示すればよい。
数式と数値
「オプション」→「計算モード」で、「ハイブリッド」と「数値計算のみ」を切り替えられます。
デフォルトの計算モードは「ハイブリッド」で、数式計算と数値計算を両方行います。数式計算が可能な場合、数式計算が優先的に行われ、その結果が数値的に評価できるなら、数値も併記されます。数式計算に何も計算するものがない、数値的な評価もできない場合、計算結果に 〃 (おなじく記号) が表示されます。
数式の数字(整数)と数値は明確的に区分され、 と
は別物です。具体的な数値を含む式にはモードに関わらず数値計算だけが行われ、式が含むすべての変数(束縛変数を除く)が数値による定義を持つ場合ではないと、計算が実行不可となり、エラーが報告されます。
| 例 | システムの動作 |
|---|---|
| 数式計算 |
|
| 数値計算を行い、 |
数式計算の制限
メモリ節約のため、ほとんどの物理学にとっては必要でない多倍長整数は非対応となります。数式計算で使う整数は 32-bit で、大きさに約 21 億の上限を持つが、整数の演算のオーバーフローは即時検出され、エラーとして報告されます。
同じ深さに並べられる数式の個数に制限があります。例えば、足し算の項の個数を無限に増やすことはできません。制限を超えると、エラーが報告されます。なお、この制限はワークシートの行の個数には適用しません。
数字の添字は 0 から 9 までに限り、1つの変数に使用できる数字の添字は最大 4 個となります。
積分を解析的に解く仕組みは存在しますが、現時点には原始函数はごく一部しか実装していないので、実用的ではありません。将来のバージョンで原始函数の実装をだんだん増やしていく予定です。
詳細オプション
システムの動作は「オプション」→「詳細オプション」で細かく調整できます。
ツールウィンドウ
「ツール」メニューでグラフなどのツールウィンドウを新規作成できます。ツールウィンドウはファイルの一部となり、ワークシートやオプションと一緒に保存されます。
ワークシートで定義した変数はツールウィンドウにおいても使用できます。
数値計算の詳細な仕様
数値は decimal128 (IEEE 四倍精度十進浮動小数点数) で表現されます。精度の詳細とエラーの扱い方は以下の表をご参照ください。
| 有効数字 | 34 桁 |
|---|---|
| 最大の指数 | 約 6000 |
| 丸め方 | 四捨五入 |
| アンダーフロー | 0 |
| オーバーフロー | 無限大* |
| 不定形・ その他エラー |
N/A** |
* 無限大は符号の情報が省略された記号
または
で表示されます。添字の R は実数、C
は複素数を意味します。なお、これらの記号は計算結果の表示用に限定するものとなっています。
** 計算途中で N/A が1回発生したら、式全体の結果は必ず N/A になります。
有限個のサンプルに基づく計算について
数値計算は連続的な範囲で有限個のサンプルを取るとき、サンプルの個数を状況に応じて調整することはしません。
数値積分は積分区間の長さに関わらず、一定数のサンプルに基づく計算になっています。もっと多くのサンプルが必要ならば、積分区間を分けて、もっと小さい区間で数値積分を行わなければなりません。
グラフの描画はキャンバスのサイズに応じてサンプルの個数を決め、1 ピクセルより小さい範囲でサンプルを取ることはしません。縮小のスケールがグラフの特徴のスケールを大きく上回る場合、グラフは不正確なものになり、サンプルの不足による artifact が忠実に表示されます。
数値積分のヒューリスティック
システムは数値積分を計算するとき、サンプルのデータを分析し、積分が発散する可能性が高いと判断した場合、計算を直ちに中止し、数値積分が失敗したというエラーを報告します。この判断は厳密ではないが、明らかに発散するものの阻止には一定の効果があります。