[精讚] [會員登入]
283

[Jula] 開始.雜談.為什麼?

關於 Julia 的雜談

分享此文連結 //n.sfs.tw/15478

分享連結 [Jula] 開始.雜談.為什麼?@新精讚
(文章歡迎轉載,務必尊重版權註明連結來源)
2021-11-07 22:23:49 最後編修
2021-11-05 00:18:31 By 張○○
 

自動目錄

Julia 作為一個非常年輕的程式語言,至今大概3 4年而已(2018年起0.7, 1.0版釋出後,編譯器才趨於穩定)[1]

此篇是雜談,不是教學。

為什麼要去學習一個陌生的、全新的語言?

從開始學電腦程式,不知學習過多少語言,也不知放棄學習多少種語言。

隨著年紀增長,會越來越不想學習新的語言,畢竟所有語言都大同小異:

有的強調學習快、有的強調結構好、資源多、執行快或是平台擴展性,各有優缺點。

人能夠學習的範圍和時間很有限,語言只是一個工具,重點在於你要拿工具來做什麼?

所以重點千萬不要搞偏了。

回到主題,為什麼要去學習一個全新的語言,當然理由可以羅列幾十條,我覺得最要考慮的是學他能做什麼?

為什麼要學 JULIA?

關於Julia誔生的神話故事並不在我考慮的範圍,我得先看他的強項是什麼。

此文僅稍微整理一下,並把他的優缺點做個整理。

 

超強的線性代數能力

我覺得 julia很適合拿來算數學,尤其是線性代數

複數

利用 im 保留字輕鬆完成複數計算

julia> (1+3im)*(2+5im)
-13 + 11im
julia> (5-3im)^3
-10 - 198im

求項位角

利用angle並轉換成角度

julia> angle(1+2im)*180/pi
63.43494882292201

矩陣

下式等於是 [12][12]\left[ \begin{matrix} 1 \\2 \end{matrix} \right] \left[ \begin{matrix} 1 & 2 \end{matrix} \right]

julia> [1;2;]*[1 2]
2×2 Matrix{Int64}:
 1  2
 2  4

反矩陣及轉置矩陣

其中 [1 2; 3 4] 代表矩陣 [1234]\left[ \begin{matrix} 1 & 2 \\ 3 & 4 \end{matrix} \right]

julia> inv([1 2; 3 4;])
2×2 Matrix{Float64}:
 -2.0   1.0
  1.5  -0.5

 共軛轉置

julia> ([1 2; 3 4;])'
2×2 adjoint(::Matrix{Int64}) with eltype Int64:
 1  3
 2  4

轉置矩陣及求值

julia> using LinearAlgebra <== 呼叫線代library
julia> A = [
           1 3 8
           2 -5 10
           -3 1 7
        ]
3×3 Matrix{Int64}:  <== 定義結果
  1   3   8
  2  -5  10
 -3   1   7

julia> transpose(A)  <== 轉置矩陣
3×3 transpose(::Matrix{Int64}) with eltype Int64:
 1   2  -3
 3  -5   1
 8  10   7

julia> det(A) <== 行列式求值
-281.0

 

安裝套件

安裝套件可以使用 Pkg函數

julia> using Pkg
julia> Pkg.add("Plots")

利用 Pkg的函數進行套件安裝,管理上方便

 

繪圖

julia> using Plots
julia> plot(rand(100,4), layout = 4, label=["a" "b" "c" "d"],
           title=["A府" "B道" "C州" "D縣"], fontfamily="MingLiU" )

其它

分数

分数計算器

julia> 2//7+1//3
13//21

函數

julia> f(x) = 2x^3+x^2-5x-10
julia> g(x) = 2x-4
julia> h(x)= f(g(x))
julia> h(3)
0

集數合

求解集合數的和 f(x)=n=0xnn!

julia> f(x,nmax)= sum([x^n/factorial(BigInt(n)) for n=0:nmax])
julia> f(2,30)

7.389056098930650227230427182040632654314999242091465026550353896014737571231858

這是收斂函數,但其中 factorial()函數是算階乘,理論上在 20! 時就會溢位爆掉,但是透過 BigInt 還是可以算出值。

定積分

定積分有給定範圍的能夠計算,但如球體的體積分。

計算的精度就由切片的大小來決定,可以計算出定積分

 <<程式撰寫中、待完成>>

多平台支援

Linux/ Windows/ Mac 等多平台多系統支援,同時也支援 ARM, IA64等架構

結論

優點

  超強數學算力,很適合拿來做數學計算。

  眾多使用者貢獻算力及各種方便的函數。

  繪圖功能強大。

  程式自由度高,對於類別和寫法寬容。

  學習快速直覺。

缺點

  因為輸入法干擾,交談環境有時游標會不見。

  特殊符號在 linux上無法顯示。

  線上文件仍有限,程式碼錯誤及說明提示不夠完備

 

總體而言,JULIA值得學習,尤其你需要做許多的數學物理方面的計算。

 

參考資料

[1] https://en.wikipedia.org/wiki/Julia_(programming_language)

[2] https://runebook.dev/ja/docs/julia/stdlib/linearalgebra/index#LinearAlgebra.det

[3] 小抄紙 https://juliadocs.github.io/Julia-Cheat-Sheet/

[4] https://docs.juliaplots.org/latest/generated/pyplot/

[5] http://park.itc.u-tokyo.ac.jp/kato-yusuke-lab/nagai/julianote.pdf

END

你可能感興趣的文章

「許功蓋」的字以及源由 有玩過電腦一段時間的人,都聽過這個人(有一天我才發現7年級的竟然都不認識這個

移除google 的頁庫存檔--移除在google中保存的網頁資料 我的網頁或文件被google保存了,但我不想給別人下載要怎麼做?

檢測頁面載入速度 利用google提供的檢測工具來測試網頁的載入速度

WD硬碟保固查詢及送修 送修壞掉的WD硬碟,這篇是過程記錄

使用Wayback machine來查看以前的網站 你以前的網站長什麼樣子,想必你一定記得,但是越來越模糊,還好有人幫你把他記錄下來

[GITLAB] 解決git使用http/https clone或pull時在大小達1G時的斷線問題 git clone大專案時出現RPC failed; curl 18 transfer closed with outstanding read data remaining的錯誤,如何解決?

我有話要說

>>

限制:留言最高字數1000字。 限制:未登入訪客,每則留言間隔需超過10分鐘,每日最多5則留言。

訪客留言

[無留言]

隨機好文

[jQuery] select 元件的取值及給值 html中的元件select,在jquery中要如何使用?

SELinux 常用指令和檔案 在Redhat系列中,Centos5以後加入了selinux,他並沒有這麼可怕,不必每次看到Selinux ,就想把他

PHP for sphinx 函式庫安裝 PECL/sphinx PHP>= 5.2.2 已經能原生支援 sphinx,可是預設的沒有裝,我們得自己裝才能用

[札記] 2016.7~12月札記 札記,只是札記

看懂DSUB DVI HDMI USB等各式影音接頭 看懂DSUB DVI HDMI等各式影音接頭