• 科学计算语言Julia编程初步


    Julia号称有着比肩C的速度,同时又像Python一样便捷的编程语言,非常适合科研狗使用。之前写了很多博客介绍Julia在数值分析中的应用,这次写一个适合初学者学习的Julia教程系列。

    安装

    Julia可以在中文社区下载:下载 Julia,正常安装即可,无坑。

    但比较骚的是,Julia可以用Python安装

    pip install jill
    jill install [VERSION] [--upstream UPSTREAM] [--confirm]
    
    • 1
    • 2

    在Julia中,需要经常下载安装一些库,如果担心网速,可以换源,其方法是:新建环境变量JULIA_PKG_SERVER,内容任选其一

    如果习惯用VS Code写代码,可以配置VS Code的Julia环境:VS Code打造Julia IDE

    基本类型和计算

    Julia支持四则混合运算,加减乘除以及乘方分别是+, -, *, /, ^这五个运算符。在交互运算时,会有一个自动创建的ans变量表示运算结果,下面在命令行中做一个演示

    1 + 2*3 - 4^5   # -1017
    ans     # 返回值为-1017
    
    • 1
    • 2

    上面代码中,#用于注释,如果是多行注释,首尾标记分别是#==#

    字符用单引号表示,字符串用双引号,多行字符串需要用三个双引号头尾括起来。

    Julia和经典语言不同的是,提供了符号这种数据类型,并以:作为变量名的第一个字符,一般用来保存变量名。这里只是简单提一嘴,以后在Julia中见到冒号开头的变量别慌就行。

    函数初步

    在Julia中,可以非常复合直觉地创建函数,例如下面的表达式是完全合理的,而且功能也和你想的功能一模一样。

    f(x) = x^2 + 1
    f(5)        # 返回26
    
    • 1
    • 2

    如果函数内容比较复杂,则需使用function关键字,创建一个程序块,并以end作为结束符。其最后一行表达式的结果,便是函数的返回值,比如函数f可以写为下列形式。

    function f(x)
        x^2 + 1
    end
    
    • 1
    • 2
    • 3

    函数返回值也可以用return来标识,并且return可以返回多个值

    function getMinMax(x, y)
        return min(x, y), max(x, y)
    end
    
    getMinMax(10, 5)    # 返回值为 (5, 10)
    
    • 1
    • 2
    • 3
    • 4
    • 5

    条件和判断

    在编程宇宙,if是通用的条件分支结构关键字,当if后面的条件为真时,即执行代码块中的内容。在Julia中,其完整格式是if...elseif...else...end,当然elseifelse是可选的,下面创建一个函数来演示

    function testIf(x)
        if x < 60
            println("不及格")
        elseif x < 75
            println("及格")
        elseif x < 90
            println("良好")
        else
            println("优秀")
        end
    end
    testIf(5)       # 不及格
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    Julia中的比较运算包括==,!=, <, <=, >, >=,分别表示等于、不等于、小于、小于等于、大于、大于等于。这几个运算符可以独立于if语句使用,计算结果为布尔型,true表示真,false表示假。

    3 < 5       # 返回true
    
    • 1

    julia还提供了C风格的三元运算符a ? x : y,即a为真时执行x,否则执行y,有了这个,可以写一个非常简洁的递归阶乘函数

    function fac(n)
        n > 1 ? n*fac(n-1) : 1
    end
    
    fac(5)      # 120
    
    • 1
    • 2
    • 3
    • 4
    • 5

    循环

    julia支持for循环和while循环,循环之家可以嵌套,但每层嵌套都需要有end作为结束标志。for循环示例如下

    for i=1:3
        println(i, "^3 = ", i^3)
    end
    #= 输出如下
    1^3 = 1
    2^3 = 8
    3^3 = 27
    =#
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在Julia中,每一个end都会封死一层变量作用域,就像在函数中的变量无法被外部调用一样,循环亦然,比如刚刚尽管用i循环三次并输出了计算结果,但并不能事后调用

    println(i)      # 报错 i not defined
    
    • 1

    为了让变量可以穿透循环,就需要用到关键字global,表示当前使用的是一个全局变量,下面演示一下while循环

    j = 0
    s = 0
    while j < 3
        j += 1
        global j2 = j^2
        s += j2
    end 
    println(s, j2)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    向量计算

    Julia作为以科学计算为目标的语言,对向量和矩阵的计算有着非常良好的支持。通过方括号可以创建行向量、列向量以及矩阵,这些数学对象在编程语言中可以统称为数组

    x = [1 2 3 4 5] # 此为行向量 1×5 Matrix{Int64}
    y = [1,2,3,4,5] # 此为列向量 5-element Vector{Int64}
    z = [1 2 3, 4 5 6]  # 此为2行3列的矩阵 2×3 Matrix{Int64}
    
    • 1
    • 2
    • 3

    若想对数组进行计算,那么需要在原有的运算符前加一个点

    x + 1   # 报错
    x .+ 1  # 返回 2  3  4  5  6
    
    • 1
    • 2

    Julia支持自动广播,即行向量和列向量相加时,会自动扩展成矩阵

    > x .+ y
    
    • 1

    其返回值为

    [ 2 3 4 5 6 3 4 5 6 7 4 5 6 7 8 5 6 7 8 9 6 7 8 9 10 ] \begin{bmatrix} 2&3&4&5& 6\\ 3&4&5&6& 7\\ 4&5&6&7& 8\\ 5&6&7&8& 9\\ 6&7&8&9&10\\ \end{bmatrix} 23456345674567856789678910

    在这里插入图片描述

  • 相关阅读:
    火遍全网的Hutool,如何使用Builder模式构建线程池
    计算机网络学习笔记(二)---运输层,应用层
    冰冰学习笔记:string类的简单模拟
    Vue项目实战之电商后台管理系统(八) 订单管理及数据统计模块
    Linux 中如何安全地抹去磁盘数据?
    数据结构学习系列之顺序表的查找与排序以及去重
    【计算机专业浅谈】为什么我不建议你选择计算机专业?
    MySQL中的数字函数使用
    Springboot 整合 Spring Data Solr的基本流程
    qtdesigner使用QTableWidget控件实现读取excel表
  • 原文地址:https://blog.csdn.net/m0_37816922/article/details/132972761