コマンドライン式ソルバー?


8

Linux互換のTTYベースの計算機を探しています。例えば:

user@host:~$ calculate
> 2
2
user@host:~$ calculate
> 8*6-4
44
user@host:~$ calculate
> 8*(6-4)
16

基本的な操作、などの一部の組み込み関数atan()、およびスクリプトによるカスタム関数をサポートするこのようなものはありますか?

回答:


7

bc&dc

bcそしてdc、端末からのアクセスを必要とするとき、私は頻繁に使用しますという2つの電卓です。

$ bc
bc 1.06.95
Copyright 1991-1994, 1997, 1998, 2000, 2004, 2006 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'. 

次に、質問を入力します。

2
2
5+5
10

完了したら、Ctrl+を使用して外に出ることができますC

試乗

これらの計算機はかなり機能が豊富です。

スケーリング

scale=5
193 * 1/3
64.33333

方程式

principal=100
ir = 0.05
years = 5
futurevalue = principal * (1 + ir)^years

futurevalue
127.62800

あなたの例

8*6-4
44

8*(6-4)
16

カルク

もう少しインタラクティブなものが必要な場合は、がありcalcます。

$ calc
C-style arbitrary precision calculator (version 2.12.4.4)
Calc is open software. For license details type:  help copyright
[Type "exit" to exit, or "help" for help.]

; 10+10
20
; 8*6-4
    44
; 8*(6-4)
    16
; 

上/下矢印を使用して、過去のコマンドに移動できます。また、インタラクティブなヘルプもあります。

; help

これを与える:

For more information while running calc, type  help  followed by one of the
following topics:

    topic               description
    -----               -----------
    intro               introduction to calc
    overview            overview of calc
    help                this file

    assoc               using associations
    builtin             builtin functions
    command             top level commands
    config              configuration parameters
    custom              information about the custom builtin interface
    define              how to define functions
    environment         how environment variables effect calc
    errorcodes          calc generated error codes
    expression          expression sequences
    file                using files
    history             command history
    interrupt           how interrupts are handled
    list                using lists
    mat                 using matrices
    ...

参考文献


これはUbuntu固有の質問ではないので、Ubuntuパッケージではなく上流のcalcにリンクしますか?
mattdm 2017

@mattdm-そのリンクを追加したおかげで、私は他のリンクを単にb / cのままにしました。
slm

6

あなたの質問には多くの答えがあります...

シェルで実行できる単純なもの。

$ echo $((8*(6-4)))
16

専用プログラムとしてがありbcます。

$ echo "8*(6-4)" | bc
16

スクリプトによるカスタム関数?まあ、ある意味では、シェルスクリプトとbcの両方にそれらがあります。あなたがそれを取りたいどのくらい遠くに依存します。

なぜPythonではないのですか?学ぶのは簡単です。

$ python
>>> from math import atan
>>> 8*(6-4)+atan(0)
16.0

私は最近このために実際にPythonを使用していますが、それが私が何か他のものを欲している理由です。機能ごとに何かをインポートするのは面倒です。Speedcrunch(i.imgur.com/Cn6GejG.png)のような自己完結型の何かをもっと望んでいましたが、コマンドラインは明らかです。
Lucas Phillips

1
PYTHONSTARTUP環境変数を定義し、その変数が指すファイルに事前インポートすることにより、インポートの問題を解決できます。
mkc



2

Maxima CAS

   L(t):= exp(%i * t * 2 *%pi); / *ターンの角度でパラメータ化された単位円* /
   plot2d(
   [atan2(imagpart(L(x))、realpart(L(x)))]、
   [x、0,1]、
   [y、-2 *%pi、2 *%pi]、
   [plot_format、gnuplot]、
   [gnuplot_term、 "png"]、
   [gnuplot_out_file、 "atan2.png"]、
   [凡例、「atan2」]、
   [xlabel、 "angle in radians"]、 
   [ylabel、 "angle in radians"]、
   [gnuplot_preamble、」
   キーを左上に設定します。
   xticsを設定( 'pi / 2' 0.25、 'pi' 0.5、 '3pi / 2' 0.75、 '2pi' 1.0);
   yticsを設定します( '-2pi' -6.283、 '-pi' -3.1415、 '-pi / 2' -1.5708、 '0' 0、 'pi / 2' 1.5708、 'pi' 3.1415、 '2pi' 6.283);
   グリッドxtics yticsを設定します "]
  );

HTH


1

ここでは、コマンドラインで直接簡単な演算を実行できるようにする小さなbashハックを示します。

alias calc='set -o noglob; docalc'
function docalc { perl -e "print STDOUT $*, \"\\n\""; set +o noglob; }

そうすれば、例えば、

calc 3 * 15 + 5

残念ながら、括弧はうまく機能しません。(私が正しく思い出せば、tcshでもそれらを受け入れることができますが、bashを説得できませんでした。)

PS。perl呼び出しをで置き換えることにより、演算をbashに依存できecho $(( $* ))ます。しかし、これはの整数除算5/6などを提供します。Perlの算術はより便利です。

代替案: Pythonを使用した唯一の牛肉が必要な場合import mathは、以下があなたの友達です:

% alias calc='python -i -c "from math import *"'
% calc
>>> 5 * atan(0.25)

0

もう1つの方法は、Python 3のようなインタープリターを使用することです。

$ python3
> from math import *
> 213/53*exp(0.8)/asin(3)
9.645423462356044

すべてをスクリプト化できるという利点があり、すでに多くの関数があり(cmath複素数が必要な場合はインポートすることもできます)、ほとんどの場合、精度を設定する必要がなく、PythonはほとんどのLinuxインストールに既にインストールされています。

結果がintでない場合、Python 3.xは浮動小数点除算を行うため、Python 3.xはPython 2.xよりも一般的な計算機に適しています。

$ python3
> 3/2
1.5
$ python2
> 3/2
1

少なくとも私にとっての主な欠点は、書式文字列がなければ、浮動小数点数が非常に大きくも小さくもない場合、科学表記では印刷されないことです。

> exp(35)
1586013452313430.8
> "{:e}".format(exp(35))
'1.586013e+15'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.