参考资料
Julia教程:从入门到进阶
Julia 1.5 中文文档
编程工具
JuliaPro 1.4.2-1
地球物理局 转业处
地球物理局 基建处
地球物理局 地震波动力学实验室
地球物理局 信息化处
# 优先满足个人研究需求,所以系列文章不会面向程序员群体
# 欢迎批评指正,禁止转载
目录
石中居士:Julia程序设计基础与在地球物理学中的应用——目录zhuanlan.zhihu.com数学运算
- 四则运算与其它语言基本完全一样。
- 向量运算:与Matlab完全相同。
- 比较运算:支持链式比较。
julia> 1<=2<=3==3<=5>4>=2
true
- 常用数学函数
round(x):四舍五入
floor(x):向下取整
ceil(x):向上取整
trunc(x):直接截掉小数
div(x,y):取模
fld(x,y):取小于结果的最大整数
cld(x,y):取大于结果的最小整数
rem(x,y):取余
mod(x,y)
mod1(x,y1):如果x是y的整数倍,则返回y,不会返回零
mod2pi(x):对2pi取余
divrem(x,y):返回取模的值和取余的值
fldmod(x,y):返回取小于x的最大整数和取余的值
gcd(x,y,...):最大公约数
lcm(x,y,...):最小公倍数
abs(x):求模
abs2(x):求平方
sign(x):取负号
signbit(x):正数返回false,负数返回true
copysign(x,y):返回x*sign(y)
flipsign(x,y):返回x*sign(y)*(-1)
sqrt(x):开平方
cbrt(x):开三次方
hypot(x,y):sqrt(x^2+y^2)
exp(x):e^x
expm1(x):e^(-x)
ldexp(x,n):x^n
log(x):loge(x)
log(b,x):logb(x)
log2(x):log2(x)
log10(x):log10(x)
log1p(x):loge(1+x)
三角函数与Matlab相同。
矩阵操作
- 定义向量
julia> a=[1,2,3,4]
4-element Array{Int64,1}:
1
2
3
4
- 步进向量
julia> aa=(1:2:5)
1:2:5
julia> aa.start
1
julia> aa.stop
5
julia> aa.step
2
- 用[ ]定义空矩阵
- 用collect( )将元组转换为矩阵
julia> collect(1:4)
4-element Array{Int64,1}:
1
2
3
4
- 复制,用[:]表示
julia> c2 = c[:]
4-element Array{Int64,1}:
1
2
3
4
- 矩阵定义中,;和空格的区别如下
julia> b=[1;2;3;4]
4-element Array{Int64,1}:
1
2
3
4
julia> c=[1 2 3 4]
1×4 Array{Int64,2}:
1 2 3 4
- ones( ):生成全1阵
- zeros( ):生成零矩阵
- 在矩阵拼接中
julia> x = ones(2,3)
2×3 Array{Float64,2}:
1.0 1.0 1.0
1.0 1.0 1.0
julia> y = zeros(2,3)
2×3 Array{Float64,2}:
0.0 0.0 0.0
0.0 0.0 0.0
julia> z = [x y]
2×6 Array{Float64,2}:
1.0 1.0 1.0 0.0 0.0 0.0
1.0 1.0 1.0 0.0 0.0 0.0
julia> z = [x,y]
2-element Array{Array{Float64,2},1}:
[1.0 1.0 1.0; 1.0 1.0 1.0]
[0.0 0.0 0.0; 0.0 0.0 0.0]
julia> z = [x;y]
4×3 Array{Float64,2}:
1.0 1.0 1.0
1.0 1.0 1.0
0.0 0.0 0.0
0.0 0.0 0.0
- 矩阵索引:从1开始
julia> z[1]
1.0
- 矩阵维度:size( )
julia> size(z)
(4, 3)
- 矩阵元素数量:length( )
- 求矩阵中所有元素的和:sum( )
- 矩阵运算:
julia> a.+b
2×3 Array{Float64,2}:
2.0 4.0 6.0
3.0 5.0 7.0
julia> a+b
2×3 Array{Float64,2}:
2.0 4.0 6.0
3.0 5.0 7.0
julia> a.-b
2×3 Array{Float64,2}:
0.0 2.0 4.0
1.0 3.0 5.0
julia> a-b
2×3 Array{Float64,2}:
0.0 2.0 4.0
1.0 3.0 5.0
julia> a.*b
2×3 Array{Float64,2}:
1.0 3.0 5.0
2.0 4.0 6.0
julia> a*b'
2×2 Array{Float64,2}:
9.0 9.0
12.0 12.0
julia> a/b
2×2 Array{Float64,2}:
1.5 1.5
2.0 2.0
julia> a./b
2×3 Array{Float64,2}:
1.0 3.0 5.0
2.0 4.0 6.0
- 随机矩阵:rand( )
julia> rand(10)
10-element Array{Float64,1}:
0.8890523690119949
0.6663426924253881
0.929455692427464
0.37366209743663203
⋮
0.822873573178756
0.6738858960099268
0.25423093806313224
julia> rand(Int8,2,3)
2×3 Array{Int8,2}:
-94 105 22
111 -60 -93