科学计算语言Julia编程初步

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

安装

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

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

pip install jill
jill install [VERSION] [--upstream UPSTREAM] [--confirm]

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

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

基本类型和计算

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

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

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

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

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

函数初步

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

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

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

function f(x)
    x^2 + 1
end

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

function getMinMax(x, y)
    return min(x, y), max(x, y)
end

getMinMax(10, 5)    # 返回值为 (5, 10)

条件和判断

在编程宇宙,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)       # 不及格

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

3 < 5       # 返回true

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

function fac(n)
    n > 1 ? n*fac(n-1) : 1
end

fac(5)      # 120

循环

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

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

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

println(i)      # 报错 i not defined

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

j = 0
s = 0
while j < 3
    j += 1
    global j2 = j^2
    s += j2
end 
println(s, j2)

向量计算

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}

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

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

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

> x .+ y

其返回值为

[ 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

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微小冷

请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值