2021-05-12 14:32:11
Genius - Linux的高階科學計算器
Genius是一個計算器程式,具有命令列版本和GNOME GUI版本。 它應該在您的發行版的軟體包管理系統中可用。 對於基於Debian的發行版,GUI版本和命令列版本是兩個單獨的軟體包。 假設要同時安裝這兩種軟體,則可以使用以下命令進行安裝:
[linuxidc@linux:~/www.linuxidc.com]$ sudo apt-get install genius gnome-genius
如果使用Ubuntu,請注意gnome-genius軟體包似乎不在Bionic中。 它處於早期版本(trusty, xenial 和 arty),並且似乎處於下一版本(cosmic)。 如果要在Ubuntu 18.04中安裝,用其他方法,特地跟你說下,以免使您感到煩惱。
啟動命令列版本提供了一個Python或R使用者應該熟悉的直譯器。
圖1、啟動Genius命令列時,您會看到版本和一些許可證資訊,然後您將看到直譯器提示。
如果您啟動gnome-genius,您將看到一個圖形介面,對於新使用者來說可能更舒適。 在本文的其餘部分中,我將使用GUI版本來演示您可以使用Genius進行的一些操作。
圖2. GUI介面可讓您輕鬆存取Genius中的大多數功能。
您可以將Genius用作通用計算器,因此可以執行以下操作:
genius> 7+9
= 16
除了基本的數學運算子,您還可以使用三角函數。 此命令給出60度正弦:
genius> sin(60)
= -0.304810621102
這些型別的計算基本上可以是任意大小的。您還可以使用開箱即用的複數。還有許多其他的標準數學函數,包括對數、統計、組合、甚至微積分函數。
除了函數之外,Genius還提供了控制結構,比如條件語句和迴圈結構。例如,下面的程式碼為您提供了一個基本的For迴圈,它列印出前60度的正弦值:
genius> for i = 1 to 60 do (
> x = sin(i);
> print(x)
> )
0.841470984808
0.909297426826
0.14112000806
-0.756802495308
-0.958924274663
-0.279415498199
0.656986598719
如您所見,語法幾乎類似於C。 乍一看,看起來分號被用作行尾字元,但實際上它是命令分隔符。 這就是為什麼在正弦函數行上沒有分號,而在帶有列印函數行上沒有分號的原因。 這意味著您可以編寫如下的for迴圈:
genius> for i = 1 to 60 do ( m = sin(i); print(m) )
0.841470984808
0.909297426826
0.14112000806
-0.756802495308
-0.958924274663
-0.279415498199
除了for回圈外,還有while迴圈,until迴圈,do-while迴圈,do-until迴圈和foreach迴圈。 您還可以使用break和continue命令控制是否彈出迴圈。 它們的行為與使用C之類的語言時的行為相同。Genius中的條件結構是非常基本的if結構,因此基本的if-then語句如下所示:
if (i==6) then (i=i-1)
您還可以使用else語句:
if (b>0) then (b=b-1) else (b=0)
Genius沒有elseif宣告。
你可以在任何你想放表示式的地方使用條件句,這意味著你可以使用if結構來設定一個變數值:
x = (if i>0 then i else 1)
如剛才看到的那樣,這裡我沒有使用括號。您只需要在可能混淆操作順序的情況下使用它們。
到目前為止,我已經介紹了命令,變數,條件和迴圈結構。 Genius還聲稱它使用一種稱為GEL的程式語言。 程式語言應具有最後一種結構,即將程式碼組織成可重用的塊的能力。 而且,當然,GEL具有讓終端使用者定義自己的函數的能力。 函數定義的基本語法如下所示:
function <identifier>(<comma separated arguments>) =
?<function body>
作為一個非常簡單的範例,以下程式碼定義了一個cubing函數:
genius> function linuxidc_cube(x) = a*a*a
= (`(x)=((a*a)*a))
然後,您可以像使用其他任何函數一樣使用它:
genius> genius> linuxidc_cube(3) = 27
Lvalue not an identifier/dereference/matrix location!
= ((genius>linuxidc_cube(3))=27)
有時,您可能需要能夠處理常式的輸入引數的可變列表。 在這些情況下,您定義的函數的最後一個引數為“ ...”。 看起來如下:
function linuxidc_func(a, b, c...) = <function body>
在這種情況下,輸入引數將作為值的向量傳遞給函數主體。
當您開始編寫較大的程式碼段時,您可能需要開始處理錯誤情況。 Genius(以及因此的GEL)具有基本的錯誤處理功能。 當您在程式碼中檢測到錯誤時,可以使用error命令向終端使用者傳送訊息:
genius> if not IsMatrix (M) then (
> error("M is not a matrix")
> )
使用了未初始化的變數“M”,可能您指的是 'm'。
M is not a matrix
但是,這可能還不夠。如果錯誤無法恢復,則需要以某種方式停止執行。 GEL提供了兩種選擇。首先是停止當前功能,然後使用bailout命令返回到呼叫程式碼。如果錯誤極其嚴重,則可能需要停止所有執行。在這種情況下,可以使用exception命令。
Genius還具有大量高階功能。
您還可以進行無窮和(infinite sums),數值微分(numerical derivatives)和極限(limits)。
我想要檢視的最後一項只有在GNOME版本的Genius中才可用。在這種情況下,您可以繪製資料和函數並將它們顯示在螢幕上。當您單擊主視窗上的繪圖按鈕時,您將得到一個可以定義繪圖引數的新視窗。
繪圖視窗使您可以定義多個函數的line plots 和 surface plots。
由於可以繪製多個函數,所以可以在同一個視窗中並排看到它們。如果你需要繪製一個曲面的3D圖形,你可以選擇繪圖視窗的“繪製麵”索引標籤,並定義一個關於x和y的函數,在繪圖視窗中,有幾個選項可以改變檢視。對於曲面圖,你甚至可以讓它旋轉,這樣你就可以從各個角度看到結果圖。當您讓圖形看起來完全符合您的需要時,單擊繪圖選單項並將其匯出為幾種檔案格式之一,這樣您就可以在其他出版物或報告中使用它。
GNOME Genius使您可以輕鬆地繪製多個函數。例如,您可以繪製正弦和切線以檢視它們之間的比較。
您可以輕鬆地根據x和y繪製單個函數,例如x*sin(y)。
如您所見,Genius在一個小包裝中提供了相當多的功能。它已用於教育中,使學生可以快速檢視不同計算的結果,並根據輸入或演算法的變化顯示它們的變化。同樣,它提供了高階科學計算器的基本知識。使用過HP或TI高階手持式計算器的人會發現Genius是桌面版上非常強大的替代產品。您可以在主網站上找到更多資訊,包括手冊和範例集。
相關文章