有理数和复数
在本章中,我们将讨论有理数和复数。
有理数
Julia 借助有理数类型表示整数的精确比率。让我们在接下来的章节中了解 Julia 中的有理数 -
构造有理数
在 Julia REPL 中,有理数是使用运算符 // 构造的。下面给出的是相同的示例 -
julia> 4//5 4//5
您还可以提取标准化分子和分母,如下所示 -
julia> numerator(8//9) 8 julia> denominator(8//9) 9
转换为浮点数
将有理数转换为浮点数非常容易。查看以下示例 -
julia> float(2//3) 0.6666666666666666 Converting rational to floating-point numbers does not loose the following identity for any integral values of A and B. For example: julia> A = 20; B = 30; julia> isequal(float(A//B), A/B) true
复数
我们知道,全局常数im表示 -1 的主平方根,它与复数相关。Julia 中的这种绑定足以为复数提供方便的语法,因为 Julia 允许数字文字与作为系数的标识符进行对比。
julia> 2+3im 2 + 3im
执行标准算术运算
我们可以对复数执行所有标准算术运算。示例如下 -
julia> (2 + 3im)*(1 - 2im) 8 - 1im julia> (2 + 3im)/(1 - 2im) -0.8 + 1.4im julia> (2 + 3im)+(1 - 2im) 3 + 1im julia> (2 + 3im)-(1 - 2im) 1 + 5im julia> (2 + 3im)^2 -5 + 12im julia> (2 + 3im)^2.6 -23.375430842463754 + 15.527174176755075im julia> 2(2 + 3im) 4 + 6im julia> 2(2 + 3im)^-2.0 -0.059171597633136105 - 0.14201183431952663im
组合不同的操作数
Julia 中的提升机制确保组合不同类型的运算符可以在复数上正常工作。让我们借助以下示例来理解它 -
julia> 2(2 + 3im) 4 + 6im julia> (2 + 3im)-1 1 + 3im julia> (2 + 3im)+0.7 2.7 + 3.0im julia> (2 + 3im)-0.7im 2.0 + 2.3im julia> 0.89(2 + 3im) 1.78 + 2.67im julia> (2 + 3im)/2 1.0 + 1.5im julia> (2 + 3im)/(1-3im) -0.7000000000000001 + 0.8999999999999999im julia> 3im^3 0 - 3im julia> 1+2/5im 1.0 - 0.4im
操纵复数值的函数
在 Julia 中,我们还可以借助标准函数来操作复数的值。下面给出了一些相同的例子 -
julia> real(4+7im) #real part of complex number 4 julia> imag(4+7im) #imaginary part of complex number 7 julia> conj(4+7im) # conjugate of complex number 4 - 7im julia> abs(4+7im) # absolute value of complex number 8.06225774829855 julia> abs2(4+7im) #squared absolute value 65 julia> angle(4+7im) #phase angle in radians 1.0516502125483738
让我们在下面的例子中看看复数的初等函数的使用 -
julia> sqrt(7im) #square root of imaginary part 1.8708286933869707 + 1.8708286933869707im julia> sqrt(4+7im) #square root of complex number 2.455835677350843 + 1.4251767869809258im julia> cos(4+7im) #cosine of complex number -358.40393224005317 + 414.96701031076253im julia> exp(4+7im) #exponential of complex number 41.16166839296141 + 35.87025288661357im julia> sinh(4+7im) #Hyperbolic sine value of complex number 20.573930095756726 + 17.941143007955223im