Linux、Free / Open BSD、または別の無料のOSを使用している場合は、コマンドラインインターフェイスが異質ではない可能性があります。 この場合、単純な算術演算にコマンドシェルを使用できます。 このため、追加のプログラムをインストールする必要はありません。すべてがオペレーティングシステムの基本セットに既に含まれています。 会計士のテーブルにある通常の計算機を定性的に置き換えることができます。

bash整数計算機
bash
整数を使用した算術演算は次のようになります。
$((expression)) $(( n1+n2 )) $(( n1/n2 )) $(( n1*n2 )) $(( n1-n2 ))
例:
$ echo $((15+25)) $ 40
bash
man
ページの [ ARITHMETIC EVALUATION
セクションで、オペレーターアクションを実行する優先順位を理解できます。 ちなみに、出力コマンドで二重角括弧で置き換える代わりに、 expr
コマンドを使用してexpr
を使用すると同じ結果を得ることができます。
$ expr 15 + 25 $ 40
bc madskills
整数式は確かに優れていますが、どういうわけか電卓にとっても十分ではありません。 幸いなことに、セットにはbc
があります。これは、Cのような対話型インタープリターです。 足し算と引き算の時間を無駄にすることはありません。すぐに、より興味深い演習に進みます。
$ echo 7^7 |bc 823543
これは、変数scale
を使用して小数部の任意の数の数値を取得できるため、計算機よりもすでに優れています。 気をつけて 偽物 bc
プロプライエタリバージョンは、小数点以下99桁しかサポートしていないためです!
$ echo 'scale=30;sqrt(2)' | bc 1.414213562373095048801688724209
さらに2つの重要な変数: ibase
とobase
は、着信番号と発信番号の基礎を示します。
$ echo 'ibase=16;obase=A;FF' | bc 255
ここで、ところで、待ち伏せがあります。 これらの2つの例を見てください。 同じことをしようとしているようですが、結果は異なります。 全体のポイントは、最初の例ではibase=2
ですが、 obase=10
はベースからibase
決定し、10が2に等しくなるため、 obase=10
が値2を取ることです。この円を破るには、hexを使用する必要があります。
$ echo 'ibase=2;obase=10;10' | bc 10 $ echo 'ibase=2;obase=A;10' | bc 2
数値を累乗する場合、 bc
は右結合であり、結果は期待したものとは異なる可能性があるため、ブラケットを正しい方法で配置することが重要です。
$ echo '4^4^4' |bc 13407807929942597099574024998205846127479365820592393377723561443721\ 76403007354697680187429816690342769003185818648605085375388281194656\ 9946433649006084096 $ echo '(4^4)^4' |bc 4294967296
これらの芸術に加えて、 bc
にはインタラクティブモードもあり、 すべてをきしむ コンベアなしですべて同じことを直接行います。 わいせつな挨拶を抑制するには、 -q
スイッチが必要です。
$ bc -q 4^4^4 13407807929942597099574024998205846127479365820592393377723561443721\ 76403007354697680187429816690342769003185818648605085375388281194656\ 9946433649006084096 quit
BCを使用したプロセッサパフォーマンスの測定
多くの月前、 人気のある英語のフォーラムで 、今では亡くなった彼らは、パーセントを加熱し、オウムの速度を計算する見事に簡単な方法を提供しました。
time echo "scale=5000; 4*a(1)" | bc -l -q
-l
オプションを使用して数学ライブラリをbc
ロードし、小数点以下5000桁の精度の数値πを要求します。 Intel(R) Core(TM) i5-4300U CPU @ 1.90GHz
計算結果:
real 0m24.507s user 0m24.490s sys 0m0.000s
s (x) The sine of x, x is in radians. c (x) The cosine of x, x is in radians. a (x) The arctangent of x, arctangent returns radians. l (x) The natural logarithm of x. e (x) The exponential function of raising e to the value x. j (n,x) The Bessel function of integer order n of x.
BCスクリプト
bc
本当に必要な場合は、関数を定義してスクリプトを実行できます。 関数定義の構文は次のとおりです。
define name ( parameters ) { newline auto_list statement_list }
条件文if
およびelse
定義されており、後者はfor
while
とwhile
ヘッダーと同様に使用する必要はありません。 ウィキペディアでは、数学演算子のリストを表示して、Cの演算子と比較できます 。 そして、これがbc
フィボナッチ数の計算です。
#!/usr/bin/bc -q define fibo(n) { if (x <= 2) return n; a = 0; b = 1; for (i = 1; i < n; i++) { c = a+b; a = b; b = c; } return c; } fibo(1000) quit
yap bc
はうまくいきませんでしたが、デスクトップ電卓としてはそれで十分です。
awk:計と占い師
私はawk
頻繁に使用したことがないので、このプログラムの新しい機能を発見するたびに驚きます。 対数または正弦を数える必要がある場合、パニックに突入しないでください。manawkが役立ちます。 これが平方根を取得する方法です。
awk 'BEGIN{print sqrt(196)}' 14
しかし、すでにbc
を使用して計算した5000の符号の数πを対数化します。
awk 'BEGIN{print log(3.141592653589793238462643383279502884197169399375105820974944592307)}' 1.14473
機能の全リストを発表します
atan2(y, x) Return the arctangent of y/x in radians. cos(expr) Return the cosine of expr, which is in radians. exp(expr) The exponential function. int(expr) Truncate to integer. log(expr) The natural logarithm function. rand() Return a random number N, between 0 and 1, such that 0 ≤ N < 1. sin(expr) Return the sine of expr, which is in radians. sqrt(expr) Return the square root of expr. srand([expr]) Use expr as the new seed for the random number generator. If no expr is provided, use the time of day. Return the previous seed for the random number generator.
運命を信頼し、すべてを3文字で送信したい場合があります-awk。 実際、これはO'Reillyの本の例で、コイントスをシミュレートし、2つの異なるイベントを生成します。 飲むか飲まない 同じ確率で。
#!/bin/bash ans=`awk -vmin=0 -vmax=1 'BEGIN{srand(); print int(min+rand()*(max-min+1))}'` if [ $ans -eq 0 ]; then echo "no" else echo "yes" fi
結論として
数学ワークショップにはさまざまなプログラムがありますが、トピックが成功した場合は、オープンソースを備えた数学ソフトウェアの最初で最高のリーグに移行しようとします。
I. 計算機の交換
- シェルシェル組み込みツール:
bash
算術置換。 -
GNU bc
プログラム。 - format-
awk
はありません。
II。 テーブル
-
OpenOffice / LibreOffice Calc
。 - KDE
KSpread
。 - GNOME
Gnumeric
。 - シングル、たとえば:
GNU Oleo
など。
III。 専門的な数学プログラム、学生レベル+
- GNU
Ocatve
-
Scilab
-
Maxima
-
R
-
Sage
IV。 プログラミング言語、数学ライブラリ、および環境
-
Ansi C
、ライブラリmath.h, complex.h, GSL
およびその他の仲間。 -
Java Scientific Library
-
Python
、SciPy, NumPy, Sympy
など。 -
COBOL
-
Fortran
-
Intel Math Kernel Library (Intel MKL)
-
AMD Accelerated Parallel Processing Math (APPLM)
-
AMD Core Math Library (ACML)
もちろん、リストは完全ではないため、誰かのお気に入りの数学パッケージまたはYPを指定しなかった場合は、事前に謝罪します。 最後のグループは、多様で適切なソフトウェアの真にあふれた海です。
そして、写真からの質問への回答とともに、約束されたマッドスキルがあります。 出所
diff -u <(seq -f '%03.0f' 0 999) <((bc <<<'scale = 3009; 1 / 998001' | tr -d '\\\n'; echo) | sed s/.// | fold -3)