Julia语言矩阵运算入门
【摘要】 Julia 是一门支持过程式、函数式和面向对象的多范式语言。 它像 R、MATLAB 和 Python 一样简单,在高级数值计算方面有丰富的表现力,并且支持通用编程。 为了实现这个目标,Julia 以数学编程语言为基础,同时也参考了不少流行的动态语言。
在科学计算领域,一直对性能有较高的要求,Julia是一个新的高性能动态高级编程语言,功能强大,语法简洁,易于用户学习。它拥有丰富的函数库,提供了数字精度和分布式并行运行方式。它内部使用Just-in-Time实时编译器很有效地提高了它的运行效率,有些场景下能比得上C和C++。
根据官网的介绍,Julia 是一门支持过程式、函数式和面向对象的多范式语言。 它像 R、MATLAB 和 Python 一样简单,在高级数值计算方面有丰富的表现力,并且支持通用编程。 为了实现这个目标,Julia 以数学编程语言(mathematical programming languages)为基础,同时也参考了不少流行的动态语言,例如 Lisp、Perl、Python、Lua、和 Ruby。Julia中文文档可见网站 https://docs.juliacn.com/latest/ 。
Julia 还拥有以下优势:
- 采用 MIT 许可证:免费又开源
- 用户自定义类型的速度与兼容性和内建类型一样好
- 无需特意编写向量化的代码
- 为并行计算和分布式计算设计
- 轻量级协程支持
- 低调又牛逼的类型系统
- 优雅、可扩展的类型转换和类型提升
- 对 Unicode 的有效支持,包括但不限于 UTF-8
- 直接调用 C 函数,无需封装或调用特别的 API
- 像 Shell 一样强大的管理其他进程的能力
- 像 Lisp 一样的宏和其他元编程工具
下面给出一些Julia处理矩阵的示例,感觉和Matlab很像,示例如下:
julia> a = [ 1 3 5 ; 2 6 8]
2×3 Array{Int64,2}:
1 3 5
2 6 8
julia> a[1,:]
3-element Array{Int64,1}:
1
3
5
julia> a[1:2,1]
2-element Array{Int64,1}:
1
2
julia> b = a'
3×2 LinearAlgebra.Adjoint{Int64,Array{Int64,2}}:
1 2
3 6
5 8
julia> a = [ 1 2 3 ; 4 5 6 ; 7 8 9 ]
3×3 Array{Int64,2}:
1 2 3
4 5 6
7 8 9
julia> a * a
3×3 Array{Int64,2}:
30 36 42
66 81 96
102 126 150
julia> a ^ 2
3×3 Array{Int64,2}:
30 36 42
66 81 96
102 126 150
julia> a .^ 2
3×3 Array{Int64,2}:
1 4 9
16 25 36
49 64 81
注意:矩阵运算这里的 .^2 和 ^2 的区别。
Julia 有一个用于表示整数精确比值的分数类型。分数通过 //
运算符,示例如下:
julia> inv(2//3)
3//2
julia> pi
π = 3.1415926535897...
julia> (3 // 5) * (2 // 3)
2//5
julia> rationalize(0.5)
1//2
julia> denominator(2//3)
3
julia> numerator(2//3)
2
Julia还支持约等于 ≈,示例如下:
julia> 0.1 ≈ (0.1 - 1e-10)
true
julia> function f(x,y)
x^2+2x*y+y^2
end
f (generic function with 1 method)
julia> f(2,3)
25
julia> 1:5 |> sum |> sqrt
3.872983346207417
julia> ["a", "list", "of", "strings"] .|> [uppercase, reverse, titlecase, length]
4-element Array{Any,1}:
"A"
"tsil"
"Of"
7
julia> a = [2 4 8]
1×3 Array{Int64,2}:
2 4 8
julia> sqrt.(a)
1×3 Array{Float64,2}:
1.41421 2.0 2.82843
julia> println(factorial(big(15)))
1307674368000
julia> println(factorial(big(1000)))
402387260077093773543702433923003985719374864210714632543799910429938512398629020592044208486969404800479988610197196058631666872994808558901323829669944590997424504087073759918823627727188732519779505950995276120874975462497043601418278094646496291056393887437886487337119181045825783647849977012476632889835955735432513185323958463075557409114262417474349347553428646576611667797396668820291207379143853719588249808126867838374559731746136085379534524221586593201928090878297308431392844403281231558611036976801357304216168747609675871348312025478589320767169132448426236131412508780208000261683151027341827977704784635868170164365024153691398281264810213092761244896359928705114964975419909342221566832572080821333186116811553615836546984046708975602900950537616475847728421889679646244945160765353408198901385442487984959953319101723355556602139450399736280750137837615307127761926849034352625200015888535147331611702103968175921510907788019393178114194545257223865541461062892187960223838971476088506276862967146674697562911234082439208160153780889893964518263243671616762179168909779911903754031274622289988005195444414282012187361745992642956581746628302955570299024324153181617210465832036786906117260158783520751516284225540265170483304226143974286933061690897968482590125458327168226458066526769958652682272807075781391858178889652208164348344825993266043367660176999612831860788386150279465955131156552036093988180612138558600301435694527224206344631797460594682573103790084024432438465657245014402821885252470935190620929023136493273497565513958720559654228749774011413346962715422845862377387538230483865688976461927383814900140767310446640259899490222221765904339901886018566526485061799702356193897017860040811889729918311021171229845901641921068884387121855646124960798722908519296819372388642614839657382291123125024186649353143970137428531926649875337218940694281434118520158014123344828015051399694290153483077644569099073152433278288269864602789864321139083506217095002597389863554277196742822248757586765752344220207573630569498825087968928162753848863396909959826280956121450994871701244516461260379029309120889086942028510640182154399457156805941872748998094254742173582401063677404595741785160829230135358081840096996372524230560855903700624271243416909004153690105933983835777939410970027753472000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
关于Julia的其他语法还有比较多,这里先介绍到这里,后期再进行介绍。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)