大多数编程语言的大多数内容都是大同小异,这里笔者根据Julia官方文档中文版
给出比较有意思的一些知识点!
一、变量
Julia 提供了非常灵活的变量命名策略。变量名是大小写敏感的,且不包含语义,意思是说,Julia 不会根据变量的名字来区别对待它们。
例如,可以使用反斜杠加 LaTeX 符号名再按 tab 键打出,如:变量名 δ
可以通过 \delta
tab 来输入,甚至可以用 \alpha
tab \hat
tab \_2
tab 来输入 α̂₂
这种复杂的变量名。还有ans
变量,它保存着交互式会话中上一个表达式的运算结果,但以其他方式运行的 Julia 代码中没有这个变量。
二、整数和浮点数
1、浮点数使用标准格式表示,必要时可使用E-表示法
,如1e-4
,2.5e3
。
2、机器精度:大多数实数都无法用浮点数准确地表示,因此有必要知道两个相邻可表示的浮点数间的距离。Julia 提供了eps
函数,它可以给出 1.0
与下一个 Julia 能表示的浮点数之间的差值,如eps(Float32) = 1.1920929f-7
。
3、变量系数:为了让常见的数值公式和表达式更清楚,Julia 允许变量直接跟在一个数值量后,代指乘法,优先级比+、-
高。这可以让写多项式变得很清楚,如2x^2 - 3x + 1
,2x^2x
(注意:这里等价于2*(x^(2*x))
)。
特例如下:由于历史原因 E
和 e
在数值字面量上是等价的,与之不同的是,F
只是一个行为和 f
不同的字母。因此开头为 F
的表达式将会被 解析为一个数值字面量乘以一个变量,例如 1.5F22
等价于 1.5 * F22
。
-
0x
开头的表达式总是十六进制字面量。 -
数值开头跟着
e
和E
的表达式总是浮点字面量。 -
数值开头跟着
f
的表达式总是 32-bit 浮点字面量。
三、数学运算和初等函数
1、数值比较:整数的比较方式是标准的按位比较,而浮点数的比较方式则遵循:
-
有限数的大小顺序,和我们所熟知的相同。
-
+0
等于但不大于-0
. -
Inf
等于自身,并且大于除了NaN
外的所有数。 -
-Inf
等于自身,并且小于除了NaN
外的所有数。 -
NaN
不等于、不小于且不大于任何数值,包括它自己。
Julia 给这些特别的数提供了下面几个额外的测试函数。这些函数在某些情况下很有用处,比如在做 hash 比较时。
函数 | 测试是否满足如下性质 |
---|---|
isequal(x, y) | x 与 y 是完全相同的 |
isfinite(x) | x 是有限大的数字 |
isinf(x) | x 是(正/负)无穷大 |
isnan(x) | x 是 NaN |
isequal
认为 NaN
之间是相等的,也能用来区分带符号的零。
2、链式比较:与其他多数语言不同,Julia 允许链式比较:链式比较在写数值代码时特别方便,它使用 &&
运算符比较标量,数组则用&
进行按元素比较。比如,0 .< A .< 1
会得到一个 boolean 数组,如果 A
的元素都在 0 和 1 之间则数组元素就都是 true。注意:链式比较的运算顺序是不确定的。
3、Julia的数值转换、舍入、符号及初等运算与其他编程语言类似
四、复数和有理数
1、虚数:在Julia中,为了与常用的全局常量i或j区分,使用im
表示复数 i,即 -1 的平方根。
2、分数:Julia 有一个用于表示整数精确比值的分数类型。分数通过 //
运算符构建,如 2//3
表示三分之二。取分子函数 numerator()
,取分母函数 denominator()
。
Julia的许多用法与MATLAB相似,比如ans
,eps
,.^
等,相信熟悉 MATLAB 编程的你会很容易上手Julia!
觉得文章还不错请关注我的微信公众号: 科学计算与编程
一起学习科学计算与MATLAB、Julia、Python编程