Genius是一個計算器程序,具有命令行版本和GNOME GUI版本。 它應該在您的發(fā)行版的軟件包管理系統(tǒng)中可用。 對于基于Debian的發(fā)行版,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中的大多數(shù)功能。
您可以將Genius用作通用計算器,因此可以執(zhí)行以下操作:
genius> 7+9
= 16
除了基本的數(shù)學運算符,您還可以使用三角函數(shù)。 此命令給出60度正弦:
genius> sin(60)
= -0.304810621102
這些類型的計算基本上可以是任意大小的。您還可以使用開箱即用的復數(shù)。還有許多其他的標準數(shù)學函數(shù),包括對數(shù)、統(tǒng)計、組合、甚至微積分函數(shù)。
除了函數(shù)之外,Genius還提供了控制結構,比如條件語句和循環(huán)結構。例如,下面的代碼為您提供了一個基本的For循環(huán),它打印出前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。 乍一看,看起來分號被用作行尾字符,但實際上它是命令分隔符。 這就是為什么在正弦函數(shù)行上沒有分號,而在帶有打印函數(shù)行上沒有分號的原因。 這意味著您可以編寫如下的for循環(huán):
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循環(huán)外,還有while循環(huán),until循環(huán),do-while循環(huán),do-until循環(huán)和foreach循環(huán)。 您還可以使用break和continue命令控制是否彈出循環(huán)。 它們的行為與使用C之類的語言時的行為相同。Genius中的條件結構是非?;镜膇f結構,因此基本的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)
如剛才看到的那樣,這里我沒有使用括號。您只需要在可能混淆操作順序的情況下使用它們。
到目前為止,我已經介紹了命令,變量,條件和循環(huán)結構。 Genius還聲稱它使用一種稱為GEL的編程語言。 編程語言應具有最后一種結構,即將代碼組織成可重用的塊的能力。 而且,當然,GEL具有讓最終用戶定義自己的函數(shù)的能力。 函數(shù)定義的基本語法如下所示:
function <identifier>(<comma separated arguments>) =
↪<function body>
作為一個非常簡單的示例,以下代碼定義了一個cubing函數(shù):
genius> function linuxidc_cube(x) = a*a*a
= (`(x)=((a*a)*a))
然后,您可以像使用其他任何函數(shù)一樣使用它:
genius> genius> linuxidc_cube(3) = 27
Lvalue not an identifier/dereference/matrix location!
= ((genius>linuxidc_cube(3))=27)
有時,您可能需要能夠處理函數(shù)的輸入參數(shù)的可變列表。 在這些情況下,您定義的函數(shù)的最后一個參數(shù)為“ …”。 看起來如下:
function linuxidc_func(a, b, c…) = <function body>
在這種情況下,輸入參數(shù)將作為值的向量傳遞給函數(shù)主體。
當您開始編寫較大的代碼段時,您可能需要開始處理錯誤情況。 Genius(以及因此的GEL)具有基本的錯誤處理功能。 當您在代碼中檢測到錯誤時,可以使用error命令向最終用戶發(fā)送消息:
genius> if not IsMatrix (M) then (
> error(“M is not a matrix”)
> )
使用了未初始化的變量“M”,可能您指的是 ‘m’。
M is not a matrix
但是,這可能還不夠。如果錯誤無法恢復,則需要以某種方式停止執(zhí)行。 GEL提供了兩種選擇。首先是停止當前功能,然后使用bailout命令返回到調用代碼。如果錯誤極其嚴重,則可能需要停止所有執(zhí)行。在這種情況下,可以使用exception命令。
Genius還具有大量高級功能。
您還可以進行無窮和(infinite sums),數(shù)值微分(numerical derivatives)和極限(limits)。
我想要查看的最后一項只有在GNOME版本的Genius中才可用。在這種情況下,您可以繪制數(shù)據(jù)和函數(shù)并將它們顯示在屏幕上。當您單擊主窗口上的繪圖按鈕時,您將得到一個可以定義繪圖參數(shù)的新窗口。
繪圖窗口使您可以定義多個函數(shù)的line plots 和 surface plots。
由于可以繪制多個函數(shù),所以可以在同一個窗口中并排看到它們。如果你需要繪制一個曲面的3D圖形,你可以選擇繪圖窗口的“繪制面”選項卡,并定義一個關于x和y的函數(shù),在繪圖窗口中,有幾個選項可以改變視圖。對于曲面圖,你甚至可以讓它旋轉,這樣你就可以從各個角度看到結果圖。當您讓圖形看起來完全符合您的需要時,單擊繪圖菜單項并將其導出為幾種文件格式之一,這樣您就可以在其他出版物或報告中使用它。
GNOME Genius使您可以輕松地繪制多個函數(shù)。例如,您可以繪制正弦和切線以查看它們之間的比較。
您可以輕松地根據(jù)x和y繪制單個函數(shù),例如x*sin(y)。
如您所見,Genius在一個小包裝中提供了相當多的功能。它已用于教育中,使學生可以快速查看不同計算的結果,并根據(jù)輸入或算法的變化顯示它們的變化。同樣,它提供了高級科學計算器的基本知識。使用過HP或TI高級手持式計算器的人會發(fā)現(xiàn)Genius是桌面版上非常強大的替代產品。您可以在主網站上找到更多信息,包括手冊和示例集。