其他分享
首页 > 其他分享> > Julia学习笔记(一):变量、数值与运算

Julia学习笔记(一):变量、数值与运算

作者:互联网

交互式会话REPL

REPL模式:

变量

合法变量名

唯一明确禁止的变量名称是内置关键字的名称。

命名规范

整数、浮点数

整数和浮点值是算术和计算的基础。这些数值的内置表示被称作原始数值类型(numeric primitive),且整数和浮点数在代码中作为立即数时称作数值字面量(numeric literal)。

整数类型

类型带符号?比特数最小值最大值
Int88-2^72^7-1
UInt8802^8-1
Int1616-2^152^15-1
UInt161602^16-1
Int3232-2^312^31-1
UInt323202^32-1
Int6464-2^632^63-1
UInt646402^64-1
Int128128-2^1272^127-1
UInt12812802^128-1
BoolN/A8false(0)true(1)

浮点数

类型精度比特数
Float16half16
Float32single32
Float64double64

特殊浮点值

Float16Float32Float64名称描述
Inf16Inf32Inf正无穷一个大于所有有限浮点数的数
-Inf16-Inf32-Inf负无穷一个小于所有有限浮点数的数
NaN16NaN32NaN不是数一个不和任何浮点值(包括自己)相等的值

机器精度

Note.两个相邻可表示的浮点数之间的距离并不是常数,数值越小,间距越小,数值越大,间距越大。

舍入模式

Julia所使用的默认模式总是RoundNearest,指舍入到最接近的可表示的值,这个被舍入的值会使用尽量少的有效位数。

数值字面量系数

为了让常见的数值公式和表达式更清楚,Julia允许变量直接跟在一个数值字面量后,暗指乘法。另外,数值字面量也能作为被括号表达式的系数,括号表达式也可以被用作变量的系数。

julia> x = 3;
julia> 2x^2 - 3x + 1
10
julia> 2(x-1)^2 - 3(x-1) + 1
3

Note.

julia> (x-1)(x+1)
ERROR: MethodError: objects of type Int64 are not callable

零和一字面量

函数描述
zero(x)x类型或变量x类型的零字面量
one(x)x类型或变量x类型的一字面量

Note.在比较中可避免不必要的类型转换开销。

数学运算和初等函数

算术运算符

表达式名称操作
+x一元加法运算符全等操作
-x一元减法运算符取相反数
x+y二元加法运算符加法
x-y二元减法运算符减法
x*y二元乘法运算符乘法
x/y二元除法运算符除法
x÷y整除取x/y整数部分
x\y反向除法等价于y/x
x^y幂操作符x的y次幂
x%y取余等价于rem(x,y)

Bool类型:

表达式名称描述
!x否定互换true与false

位运算符

所有原始整数类型都支持以下位运算符:

表达式名称
~x按位取反
x&y按位与
x|y按位或
x$y按位异或
x>>>y向右逻辑移位(高位补0)
x>>y向右算术移位(复制原高位)
x<<y向左逻辑/算数移位

复合赋值操作符

每一个二元运算符和位运算符都可以给左操作数复合赋值:方法是把 = 直接放在二元运算符后面。

+= -= *= /= = ÷= %= ^= &= |= ⊻= >>>= >>= <<=

Note. 复合赋值后会把变量重新绑定到左操作数上,所以变量的类型可能会改变。

向量化dot运算符

每个二元运算符都有一个dot运算符与之对应,例如 ^ 就有对应的 .^ 存在。这个对应的.^被Julia自动地定义为逐元素地执行 ^ 运算。

Note 将点运算符用于数值字面量可能会导致歧义。例如,1.+x到底是表示1.+x还是1.+x?这会令人疑惑。因此不允许使用这种语法,遇到这种情况时,必须明确地用空格消除歧义。
数值比较

数值比较符

表达式含义
==等于
!=不等于
<小于
<=小于等于
>大于
>=大于等于

测试函数

函数测试是否满足如下性质
isequal(x,y)x与y是完全相同的
isfinite(x)x是有限大的数字
isinf(x)x是(正/负)无穷大
isnan(x)x是NaN

Note

链式比较

Julia允许链式比较:

julia> 1 < 2 <= 2 < 3 == 3 > 2 >= 1 == 1 < 3 != 5
true

运算符的优先级与结合性

分类运算符结合性
语法.followed by::左结合
幂运算^右结合
一元运算符+ - √右结合
移位运算<< >> >>>左结合
除法//左结合
乘法* / % & \ ÷左结合
加法+ - | $左结合
语法: …左结合
语法|>左结合
语法<|右结合
比较> < >= <= == === != !== <:无结合性
流程控制&& followed by || followed by ?右结合
Pair 操作=>右结合
赋值= += -= *= /= //= = ^= ÷= %== &= ⊻= <<= >>= >>>=

数值转换

Julia 支持三种数值转换,它们在处理不精确转换上有所不同。

舍入函数

函数描述返回类型
round(x)x舍到最接近的整数typeof(x)
round(T, x)x舍到最接近的整数T
floor(x)x向-Inf 舍入typeof(x)
floor(T, x)x向-Inf 舍入T
ceil(x)x向+Inf方向取整typeof(x)
ceil(T, x)x向+Inf方向取整T
trunc(x)x向0取整typeof(x)
trunc(T, x)x向0取整T

除法函数

函数描述
div(x,y), x÷y截断除法;商向零近似
fld(x,y)向下取整除法;商向-Inf近似
cld(x,y)向上取整除法;商向+Inf近似
rem(x,y) 取余;满足 x == div(x,y)*y + rem(x,y);符号与 x 一致
mod(x,y) 取模;满足 x == fld(x,y)*y + mod(x,y);符号与 y 一致
mod1(x,y) 偏移 1 的 mod;若 y>0,则返回 r∈(0,y],若 y<0,则 r∈[y,0) 且满足 mod(r, y) == mod(x, y)
mod2pi(x) 以 2pi 为基取模;0 <= mod2pi(x) < 2pi
divrem(x,y) 返回 (div(x,y),rem(x,y))
fldmod(x,y) 返回 (fld(x,y),mod(x,y))
gcd(x,y…) x, y,… 的最大公约数
lcm(x,y…) x, y,… 的最小公倍数

符号和绝对值函数

函数描述
abs(x)x的模
abs2(x)x 的模的平方
sign(x)表示 x 的符号,返回 -1,0,或 +1
signbit(x)表示符号位是true或false
copysign(x,y)返回一个数,其值等于x的模,符号与 y 一致
flipsign(x,y)返回一个数,其值等于x的模,符号与 x*y 一致

幂、对数与平方根

函数描述
sqrt(x),√xx 的平方根
cbrt(x),∛xx 的立方根
hypot(x,y)当直角边的长度为x和y时,直角三角形斜边的长度
exp(x)自然指数函数在x处的值
expm1(x)当x接近0时的exp(x)-1的精确值
ldexp(x,n)x*2^n的高效算法,n为整数
log(x)x的自然对数
log(b,x)以b为底x的对数
log2(x)以2为底x的对数
log10(x)以10为底x的对数
log1p(x)当 x接近 0 时的 log(1+x) 的精确值
exponent(x)x 的二进制指数
significand(x)浮点数 x 的二进制有效数(也就是尾数)

三角和双曲函数

sin cos tan cot sec csc sinh cosh tanh coth sech csch asin acos atan acot asec acsc asinh acosh atanh acoth asech acsch sinc cosc

Note

复数和有理数

复数

全局常量 im 被绑定到复数 i,表示 -1的主平方根。

Note. 注意 3/4im == 3/(4im) == -(3/4im),因为系数比除法的优先级更高。

Julia 提供了一些操作复数的标准函数:

函数含义
real()实部
imag()虚部
conj()复共轭
abs()绝对值
abs2()平方后绝对值
angle()以弧度为单位的相位角

Note

julia> a = 1; b = 2; complex(a, b)
1 + 2im
julia> 1 + Inf*im
1.0 + Inf*im

julia> 1 + NaN*im
1.0 + NaN*im

有理数

Julia 有一个用于表示整数精确比值的分数类型。分数通过 // 运算符构建:

julia> 2//3
2//3

如果一个分数的分子和分母含有公因子,它们会被约分到最简形式且分母非负。整数比值的这种标准化形式是唯一的,所以分数值的相等性可由校验分子与分母都相等来测试。分数值的标准化分子和分母可以使用numerator()和denominator()函数得到。

Julia接受构建无穷分数值,但不接受试图构建一个 NaN 分数值:

julia> 5//0
1//0
julia> 0//0
ERROR: ArgumentError: invalid rational: zero(Int64)//zero(Int64)
Stacktrace:
[...]

标签:函数,浮点数,数值,运算符,笔记,Julia,Inf,运算
来源: https://blog.csdn.net/weixin_44104200/article/details/118083613