面白い数学のコマンドライン

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. 計算機の交換







  1. シェルシェル組み込みツール: bash



    算術置換。
  2. GNU bc



    プログラム。
  3. format- awk



    はありません。


II。 テーブル







  1. OpenOffice / LibreOffice Calc



  2. KDE KSpread



  3. GNOME Gnumeric



  4. シングル、たとえば: GNU Oleo



    など。


III。 専門的な数学プログラム、学生レベル+







  1. GNU Ocatve



  2. Scilab



  3. Maxima



  4. R



  5. Sage





IV。 プログラミング言語、数学ライブラリ、および環境







  1. Ansi C



    、ライブラリmath.h, complex.h, GSL



    およびその他の仲間。
  2. Java Scientific Library



  3. Python



    SciPy, NumPy, Sympy



    など。
  4. COBOL



  5. Fortran



  6. Intel Math Kernel Library (Intel MKL)



  7. AMD Accelerated Parallel Processing Math (APPLM)



  8. 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)
      
      






All Articles