科学計算機:累乗・ルート・対数・三角関数
累乗、ルート、log・ln、度数法またはラジアンでの正弦・余弦・正接、階乗、パーセント、メモリーに対応したオンライン科学計算機です。
Scientific Calculator
Evaluates a typed or tapped expression with the usual order of operations, including powers, roots, logarithms, trigonometry and factorials.
Keypad
How this calculator reads an expression
History
No calculations yet. Press = to add one.
ドキュメンテーション
科学計算機
科学計算機は、入力された数式の値を計算します。この計算機は、べき乗、根、対数、三角関数、階乗、百分率を読み取り、標準的な演算の優先順位を適用して、1つの答えを表示します。
計算機の機能
数式は「式」ボックスに入力するか、キーパッドで組み立てます。計算機は式が変わるとすぐに読み取るため、答えを見るのに等号キーは必要ありません。代わりに、=キーを押すと計算が履歴リストに追加されます。
次のものを受け付けます。
- 数字、小数点、
1.5e-3のような指数形式の数値 - 演算子
+、-、*、/、^(べき乗)、および括弧 - 定数
piとe - 関数
sin、cos、tan、asin、acos、atan、log、ln、sqrt、cbrt - 後置記号
!(階乗)と%(百分率)
キーパッドの記号は通常の表記に変換されるため、×、÷、−、πは、それぞれ*、/、-、piと同じ意味です。
logは底10の対数で、lnは自然対数、つまり底eの対数です。これはTIおよびカシオの科学計算機で使われている表記であり、NIST Digital Library of Mathematical Functionsの4.2節でも同じ命名が使われています。
演算の優先順位
数式が何を意味するかを決める規則が、演算の優先順位です。この計算機では、以下の文法を使います。各行はその下の行を呼び出すため、入れ子構造が優先順位表になります。最後の行が最も強く結び付き、最初に計算されます。
1expression := term (('+' | '-') term)*
2term := unary (('*' | '/' | juxtaposition) unary)*
3unary := ('-' | '+') unary | power
4power := postfix ('^' unary)?
5postfix := primary ('!' | '%')*
6primary := number | constant | name '(' expression ')' | '(' expression ')'
7計算される順に並べると、次のとおりです。
- 括弧内のすべて、および括弧に適用された関数
!と%^- 数値の前に付く
-または+の符号 *、/、および隣り合って書かれた2つのもの+と-
この規則による慣例は、ISO 80000-2:2019およびWikipediaの記事「演算の優先順位」と一致します。
| 書かれた式 | 読み取られる式 | 値 |
|---|---|---|
2^3^2 | 2^(3^2) | 512 |
-2^2 | -(2^2) | -4 |
2^-2 | 2^(-2) | 0.25 |
2^3! | 2^(3!) | 64 |
100+10% | 100 + (10/100) | 100.1 |
1/2pi | (1/2) * pi | 1.57079632679 |
6/2(1+2) | (6/2) * (1+2) | 9 |
隣り合って書かれた2つの数値または名前は乗算されます。これにより、2pi、2(3+4)、3sin(30)が機能します。この暗黙の乗算は*および/と同じ優先順位なので、隣接乗算と除算は左から右へ読み取られます。多くの携帯型科学計算機は隣接乗算を除算より強く結び付け、1/2piを1/(2*pi)と読み取りますが、これは異なる答えになります。Wikipediaは「電卓への入力方法」でこの違いを説明しています。結果が変わる場合は、括弧を使えば明確になります。
%は、置かれている場所にかかわらず100で割ります。したがって、20%は0.2で、200*15%は30です。これは店舗のレジにある「現在の合計に対する百分率」キーではなく、剰余演算子でもありません。
計算例
sin(30)+2^3*ln(4)という式は、度数法モードでは次の順序で計算されます。
sin(30)は0.5です。30度は直角の半分であり、その正弦は2分の1だからです。2^3は8です。べき乗は乗算より先に計算されます。ln(4)は1.38629436112です。8 * 1.38629436112は11.090354889です。0.5 + 11.090354889は11.590354889です。
計算機には11.590354889と表示されます。
2つ目の例は左から右へ読む規則を示します。6/2(1+2)では、まず括弧内が計算され、6/2*3になります。除算と暗黙の乗算は同じ優先順位なので、除算が先です。6/2は3、3*3は9になります。
度数法と弧度法
角度単位の設定によって、sin、cos、tanが入力をどのように解釈するか、またasin、acos、atanがどの単位で結果を返すかが決まります。度数法モードでは1回転は360度です。弧度法モードでは1回転は2piラジアンで、約6.28318530718です。同じ式でもモードによって答えは大きく異なります。sin(30)は度数法モードでは0.5、弧度法モードでは-0.988031624093です。
数値の保存と表示
すべての値はIEEE 754 binary64形式の倍精度浮動小数点数です。これはECMA-262の『ECMAScript言語仕様』、6.1.6.1節で説明されている数値型です。倍精度数は約15桁から17桁の十進数字を保持します。答えは画面表示用にのみ、12桁の有効数字へ一度丸められます。0.000001未満または1,000,000,000,000以上の値は指数形式で表示されるため、0.0000001は1E-7と表示されます。
保存された数値は完全な精度を保ちます。メモリには画面上の12桁ではなく正確な結果が保存され、MRは同じ数値として読み取られる最短のテキストを貼り付けます。負のメモリ値は括弧付きで貼り付けられるため、2の後に呼び出すと減算ではなく乗算として読み取られます。
丸めは判断に決して使われません。以前の計算で生じたごく小さな残差も実数であり、実数として扱われます。0.1*3-0.3は二進数ではゼロではなく、約5.55111512313E-17です。そのため5/(0.1*3-0.3)はゼロ除算メッセージではなく、9.00719925474E16になります。
同じ理由で、度数法モードのsin(180)は1.22464679915E-16と表示され、0とは表示されません。誤差は1000兆分の1程度で、その小ささは保たれます。例外は正接で、以下のように処理されます。
計算機が受け付けないもの
次の場合、計算機は答えの代わりにメッセージを表示します。
- 分母が完全にゼロの場合。
1e-400のように倍精度数では小さすぎる表記上の数値も含まれ、読み取られた時点ですでにゼロになります。 sqrtに負の数を与えた場合logまたはlnにゼロ以下の数を与えた場合asinまたはacosに、NIST DLMFの4.14節で示される定義域-1から1の外側の数を与えた場合- 90度、またはその奇数倍で
tanを使った場合。このとき正接は値を持ちません。 - 0から170までの整数以外に階乗を求めた場合
1.2.3のように、数値に小数点が2つ目も含まれている場合- 式が512文字を超える場合
170という上限は好みで決めたものではなく、数値型の性質によるものです。170の階乗は約7.25741561531E306で、倍精度数に収まりますが、171の階乗は収まりません。512文字の上限はコードで確認されます。式の長さによって計算機が行う処理量が決まるためです。
正接の確認では、検査前に角度を小数点以下9桁へ丸めます。これにより、以前の計算によるずれを正確な漸近線へ戻しますが、その代わり両側に約5e-10度幅の拒否範囲が生じます。tan(89.9999999994)は95,493,592,025を返しますが、tan(89.9999999995)は拒否されます。弧度法モードではこの確認を行いません。円周率の半分に近い入力ラジアン値も、特別扱いされない単なる数値だからです。
よくある質問
ここで%キーは何をしますか?
出現した場所にかかわらず、100で割ります。100+10%は100.1です。これは100に0.1を加えるという意味だからです。直前までの値に対する百分率を求めるものではありません。
2^3^2は64ですか、それとも512ですか?
512. べき乗は右から結合するため、2^(3^2)を意味し、これは2^9になります。ISO 80000-2:2019に従ったものです。
なぜ6/2(1+2)は9で、1ではないのですか?
暗黙の乗算は除算と同じ優先順位であり、同じ優先順位の演算は左から右へ読み取られます。隣接乗算をより強く結び付ける計算機では1になります。括弧を使えば疑いはなくなります。
なぜsin(180)は0と表示されないのですか?
180度はまずラジアンに変換され、円周率は二進数で正確に表せないからです。答えは約1.2e-16で、これは計算機が実際に使った数値の正弦の真の値です。
logとlnの違いは何ですか?
logは底10なので、log(1000)は3です。lnは底eなので、ln(e)は1です。キーパッドの表記はTIおよびカシオの科学計算機と同じ慣例に従っています。
なぜ170を超える階乗は拒否されるのですか? 171の階乗は、倍精度数が保持できるどの数値よりも大きいため、答えは数値ではなく無限大になります。計算機は意味のない結果を表示せず、そのことを伝えます。
出典
- IEEE 754-2019『浮動小数点演算に関するIEEE標準』
- ECMA-262『ECMAScript言語仕様』6.1.6.1節「Number型」
- ISO 80000-2:2019『量及び単位』第2部「数学記号及び数学用語」
- NIST Digital Library of Mathematical Functions、4.2節および4.14節
- Wikipedia「演算の優先順位」
- Wikipedia「電卓への入力方法」