许多语法和 Matlab 很像,另一些和 C/C++ 很像,如果你两种语言都已经会了,那么 Julia 是十分简单的.
安装方法
sudo snap install Julia --classic
另外 Jupyter Notebook 也支持 Julia.
Ctrl + D 退出或者 exit() 退出
ans 变量和 Matlab 一样
println("hello world")
b = 2a 和 c = 2(b+3) 都可以省略乘号
2/3 返回 Float64 而不是整数
2//3 返回 Rational{Int64},相当于用两个 Int64 来表示分数,分数之间的运算没有误差.
1 + 2im,相当于 ComplexF64(0,1).
typeof() 查看某个变量的类型
::类型 限制变量类型
typemax(Int64),typemin(Int64)
BigInt 和 BigFloat(底层是 GMP)
// 可以让整数除法返回 Rational 类型,例如 1//2 + (3//4)im 的类型是 Complex{Rational{Int64}}
Array{T, 1} 不区分行和列,但是 Array{T, 2} 可以区分行向量和列向量
Psi[:, j, :]
size(Psi, 维度)
zeros(整数) 或 zeros(整数, 整数) 分别返回 Array{Float64,1} 和 Array{Float64,2}
Int64
a = [1 2; 3 4] 得到 Array{Float64,2}
a[:, 1] 仍然得到 Array{Float64,2}
a[:, 1] = [3; 4] 可以修改 a 的值
b = a[:, 1] 却是复制数据.
a 作为参数传给函数是 pass by reference
a[:, 1] 作为参数传给函数是 pass by value,如果需要 by reference,使用 SubArray 类
view(a, :, 1) 得到的类型是 SubArray,具体是……SubArray{Int64,1,Array{Int64,2},Tuple{Base.Slice{Base.OneTo{Int64}},Int64},true}
SubArray 不存数据,可以用来给函数参数 pass by reference
SubArray <: AbstractArray{T,Ndim} <: Any
Array{T,Ndim} <: DenseArray{T,Ndim} <: AbstractArray{T,Ndim} <: Any
AbstractArray,就可以同时接受 Array, SubArray.
SubArray 的结构
struct SubArray{T,N,P,I,L} <: AbstractArray{T,N}
parent::P
indices::I
offset1::Int # for linear indexing and pointer, only valid when L==true
stride1::Int # used only for linear indexing
...
end
随机矩阵
rand(ComplexF64, Nr1, Nr2, Npw)
Julia <file> 运行脚本,用 Julia <file> <arg1> <arg2> 给出 arguments
include("/Users/addis/Desktop/main.jl")(路径不区分大小写),也支持反斜杠,但要转义成 \\
abspath(PROGRAM_FILE) == @__FILE__
第三方画图包 Plots,无需安装!
using Plots
x = 1:10; y = rand(10); # These are the plotting data
plot(x,y)
函数定义
function sphere_vol(r)
return 4/3*pi*r^3
end
hash(把结果的 hash 输出可以保证计算过程不被优化掉)
hash(矩阵)
当前时间 time()