使用 REPL 作为计算器

Julia REPL 是一款出色的计算器。我们可以从一些简单的操作开始:

julia> 1 + 1
2

julia> 8 * 8
64

julia> 9 ^ 2
81

ans 变量包含上次计算的结果:

julia> 4 + 9
13

julia> ans + 9
22

我们可以使用赋值 = 运算符定义我们自己的变量:

julia> x = 10
10

julia> y = 20
20

julia> x + y
30

Julia 对数字文字有隐式乘法,这使得一些计算编写得更快:

julia> 10x
100

julia> 2(x + y)
60

如果我们犯了一个错误并做了一些不允许的事情,那么 Julia REPL 会抛出错误,通常会提供有关如何解决问题的有用提示:

julia> 1 ^ -1
ERROR: DomainError:
Cannot raise an integer x to a negative power -n. 
Make x a float by adding a zero decimal (e.g. 2.0^-n instead of 2^-n), or write
1/x^n, float(x)^-n, or (x//1)^-n.
 in power_by_squaring at ./intfuncs.jl:82
 in ^ at ./intfuncs.jl:106

julia> 1.0 ^ -1
1.0

要访问或编辑以前的命令,请使用 ↑ (向上)键,该键移动到历史记录中的最后一项。在 ↓ 历史上移动到下一个项目。该 ← 和 → 键可用于移动和进行编辑一条线。

朱莉娅有一些内置的数学常数,包括 epi(或π)。

julia> e
e = 2.7182818284590...

julia> pi
π = 3.1415926535897...

julia> 3π
9.42477796076938

按:我们可以快速地使用他们的 LaTeX 的代码类型像π字符 \ ,然后 p 和 i,然后点击 Tab 键来代替刚才输入与π\pi。这适用于其他希腊字母和其他 unicode 符号。

我们可以使用 Julia 的任何内置数学函数,范围从简单到相当强大:

julia> cos(π)
-1.0

julia> besselh(1, 1, 1)
0.44005058574493355 - 0.7812128213002889im

使用 im 作为虚构单元支持复数:

julia> abs(3 + 4im)
5.0

有些函数不会返回复杂的结果,除非你给它一个复杂的输入,即使输入是真的:

julia> sqrt(-1)
ERROR: DomainError:
sqrt will only return a complex result if called with a complex argument. Try
sqrt(complex(x)).
 in sqrt at math.jl:146

julia> sqrt(-1+0im)
0.0 + 1.0im

julia> sqrt(complex(-1))
0.0 + 1.0im

使用//有理除法运算符可以对有理数进行精确运算:

julia> 1//3 + 1//3
2//3

有关 Julia 支持哪种算术运算符的更多信息,请参阅算术主题。

处理机器精度

请注意,机器整数的大小受到限制,如果结果太大而无法存储,则会溢出

julia> 2^62
4611686018427387904

julia> 2^63
-9223372036854775808

这可以通过在计算中使用任意精度整数来防止:

julia> big"2"^62
4611686018427387904

julia> big"2"^63
9223372036854775808

机器浮点的精度也有限:

julia> 0.1 + 0.2
0.30000000000000004

再次使用 big 可以获得更多(但仍然有限)的精度:

julia> big"0.1" + big"0.2"
3.000000000000000000000000000000000000000000000000000000000000000000000000000017e-01

在某些情况下可以使用 Rationals 完成精确算术:

julia> 1//10 + 2//10
3//10