Julia 入门笔记

                     

贡献者: addis

  • 本文处于草稿阶段。

   Julia 从 Matlab 和 C/C++ 借鉴了不少语法,如果你两种语言都已经会了,那么 Julia 是十分简单的。本章的目的就是为已经学习过类似语言的读者提供一个 Julia 语言的快速入门笔记。

   Ubuntu/Debian 安装方法。

sudo apt install julia
# 或者
sudo snap install Julia --classic
如果版本较老,最好还是从官网下载安装包,直接解压即可使用 bin/julia 执行文件。也可以创建软链 sudo ln -s /home/用户名/julia-xxx/bin/julia /usr/bin/julia

   另外本地的 Jupyter Notebook 也支持 Julia。在 julia 命令行里面运行 import PkgPkg.add("IJulia")。现在打开 Jupyter notebook 就可以新建 julia 文档了。

   至于 IDE,Juno 和 JuliaPro 都已经停止更新,当前(2023-3)最热门的 IDE 环境是 Julia 的 VScode 拓展,应该支持逐行调试。

1. 命令行

2. 计算器

3. 变量

4. 数组和矩阵

5. 子数组

   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

6. 指针

7. 线性代数

特殊矩阵类

8. BLAS 和 Lapack

9. 脚本

10. 画图

   第三方画图包 Plots,无需安装

using Plots
x = 1:10; y = rand(10); # These are the plotting data
plot(x,y)

11. 控制流

b = 3;
for a = 1:5
    if a < b
        println(a, " < ", b)
    elseif a > b
        println(a, " > ", b)
    else
        println(a, " = ", b)
    end
end
其中 1:5 的类型是 UnitRange{Int64}。若令 a = 1:5,可以使用 a[i] 获取 “元素”。类似地,1:2:5 的类型是 StepRange{Int64, Int64}

12. 函数

   函数定义

function sphere_vol(r)
    return 4/3*pi*r^3
end

   定义含名参数如

function greet(name; greeting="Hello")
    println("$greeting, $(name)!")
end

13. 常用函数

14. 异常处理

try 
    一些命令
catch y
    if isa(y, 错误类型1)
        一些命令
    elseif isa(y, 错误类型2)
        一些命令
    end
end

15. 储存变量

   要把任意变量存到文件,用 using Serialization,除此之外常用的还有 using JLD2

using Serialization
a = randn(100,100)
f = serialize("file1.dat", a)
a1 = deserialize("file1.dat")
println(a == a1)

16. 文件读写

17. 模块

18. 调用 C/C++/Fortran 函数

19. 并行计算

20. 宏


致读者: 小时百科一直以来坚持所有内容免费无广告,这导致我们处于严重的亏损状态。 长此以往很可能会最终导致我们不得不选择大量广告以及内容付费等。 因此,我们请求广大读者热心打赏 ,使网站得以健康发展。 如果看到这条信息的每位读者能慷慨打赏 20 元,我们一周就能脱离亏损, 并在接下来的一年里向所有读者继续免费提供优质内容。 但遗憾的是只有不到 1% 的读者愿意捐款, 他们的付出帮助了 99% 的读者免费获取知识, 我们在此表示感谢。

                     

友情链接: 超理论坛 | ©小时科技 保留一切权利