99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

Julia 數(shù)學(xué)運(yùn)算和基本函數(shù)

2022-02-25 16:44 更新

Julia 為它所有的基礎(chǔ)數(shù)值類(lèi)型,提供了整套的基礎(chǔ)算術(shù)和位運(yùn)算,也提供了一套高效、可移植的標(biāo)準(zhǔn)數(shù)學(xué)函數(shù)。

算術(shù)運(yùn)算符

下面的算術(shù)運(yùn)算符適用于所有的基本數(shù)值類(lèi)型:

表達(dá)式 名稱(chēng) 描述
+x 一元加法 x 本身
-x 一元減法 相反數(shù)
x + y 二元加法 做加法
x - y 二元減法 做減法
x * y 乘法 做乘法
x / y 除法 做除法
x \ y 反除 等價(jià)于 y / x
x ^ y 乘方 x 的 y 次冪
x % y 取余 等價(jià)于 rem(x, y)

以及 Bool 類(lèi)型的非運(yùn)算:

表達(dá)式 名稱(chēng) 描述
!x true 和 false 互換

Julia 的類(lèi)型提升系統(tǒng)使得參數(shù)類(lèi)型混雜的算術(shù)運(yùn)算也很簡(jiǎn)單自然。詳見(jiàn)類(lèi)型轉(zhuǎn)換和類(lèi)型提升 。

算術(shù)運(yùn)算的例子:

julia> 1 + 2 + 3
6

julia> 1 - 2
-1

julia> 3*2/12
0.5

(習(xí)慣上,優(yōu)先級(jí)低的運(yùn)算,前后多補(bǔ)些空格。這不是強(qiáng)制的。)

位運(yùn)算符

下面的 位運(yùn)算符 適用于所有整數(shù)類(lèi)型:

表達(dá)式 名稱(chēng)
~x 按位取反
x & y 按位與
x \| y 按位或
x $ y 按位異或
x >>> y 向右 邏輯移位 (高位補(bǔ) 0 )
x >> y 向右 算術(shù)移位 (復(fù)制原高位)
x << y 向左邏輯/算術(shù)移位

位運(yùn)算的例子:

julia> ~123
-124

julia> 123 & 234
106

julia> 123 | 234
251

julia> 123 $ 234
145

julia> ~uint32(123)
0xffffff84

julia> ~uint8(123)
0x84

復(fù)合賦值運(yùn)算符

二元算術(shù)和位運(yùn)算都有對(duì)應(yīng)的復(fù)合賦值運(yùn)算符,即運(yùn)算的結(jié)果將會(huì)被賦值給左操作數(shù)。在操作符的后面直接加上 = 就組成了復(fù)合賦值運(yùn)算符。例如, x += 3 相當(dāng)于 x = x + 3

julia> x = 1
1

julia> x += 3
4

julia> x
4

復(fù)合賦值運(yùn)算符有:

+=  -=  *=  /=  \=  %=  ^=  &=  |=  $=  >>>=  >>=  <<=

數(shù)值比較

所有的基礎(chǔ)數(shù)值類(lèi)型都可以使用比較運(yùn)算符:

運(yùn)算符 名稱(chēng)
== 等于
!= 不等于
< 小于
<= 小于等于
> 大于
>= 大于等于

一些例子:

julia> 1 == 1
true

julia> 1 == 2
false

julia> 1 != 2
true

julia> 1 == 1.0
true

julia> 1 < 2
true

julia> 1.0 > 3
false

julia> 1 >= 1.0
true

julia> -1 <= 1
true

julia> -1 <= -1
true

julia> -1 <= -2
false

julia> 3 < -0.5
false

整數(shù)是按位比較的。浮點(diǎn)數(shù)是 IEEE 754 標(biāo)準(zhǔn) 比較的:

  • 有限數(shù)按照正常方式做比較。
  • 正數(shù)的零等于但不大于負(fù)數(shù)的零。
  • Inf 等于它本身,并且大于所有數(shù), 除了 NaN
  • -Inf 等于它本身,并且小于所有數(shù), 除了 NaN
  • NaN 不等于、不大于、不小于任何數(shù),包括它本身。

上面最后一條是關(guān)于 NaN 的性質(zhì),值得留意:

julia> NaN == NaN
false

julia> NaN != NaN
true

julia> NaN < NaN
false

julia> NaN > NaN
false

NaN矩陣中使用時(shí)會(huì)帶來(lái)些麻煩:

julia> [1 NaN] == [1 NaN]
false

Julia 提供了附加函數(shù), 用以測(cè)試這些特殊值,它們使用哈希值來(lái)比較:

函數(shù) 測(cè)試
isequal(x, y) x 是否等價(jià)于 y
isfinite(x) x 是否為有限的數(shù)
isinf(x) x 是否為無(wú)限的數(shù)
isnan(x) x 是否不是數(shù)

isequal 函數(shù),認(rèn)為 NaN 等于它本身:

julia> isequal(NaN,NaN)
true

julia> isequal([1 NaN], [1 NaN])
true

julia> isequal(NaN,NaN32)
true

isequal 也可以用來(lái)區(qū)分有符號(hào)的零:

julia> -0.0 == 0.0
true

julia> isequal(-0.0, 0.0)
false

鏈?zhǔn)奖容^

與大多數(shù)語(yǔ)言不同,Julia 支持 Python鏈?zhǔn)奖容^

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

對(duì)標(biāo)量的比較,鏈?zhǔn)奖容^使用 && 運(yùn)算符;對(duì)逐元素的比較使用 & 運(yùn)算符,此運(yùn)算符也可用于數(shù)組。例如, 0 .< A .< 1 的結(jié)果是一個(gè)對(duì)應(yīng)的布爾數(shù)組,滿(mǎn)足條件的元素返回 true 。

操作符 .< 是特別針對(duì)數(shù)組的; 只有當(dāng) AB 有著相同的大小時(shí), A .< B 才是合法的。比較的結(jié)果是布爾型數(shù)組, 其大小同 AB 相同. 這樣的操作符被稱(chēng)為按元素操作符; Julia 提供了一整套的按元素操作符: .*, .+, 等等。 有的按元素操作符也可以接受純量, 例如上一段的 0 .< A .< B. 這種表示法的意思是, 相應(yīng)的純量操作符會(huì)被施加到每一 個(gè)元素上去。

注意鏈?zhǔn)奖容^的比較順序:

v(x) = (println(x); x)

julia> v(1) < v(2) <= v(3)
2
1
3
true

julia> v(1) > v(2) <= v(3)
2
1
false

中間的值只計(jì)算了一次,而不是像 v(1) < v(2) && v(2) <= v(3) 一樣計(jì)算了兩次。但是,鏈?zhǔn)奖容^的計(jì)算順序是不確定的。不要在鏈?zhǔn)奖容^中使用帶副作用(比如打?。┑谋磉_(dá)式。如果需要使用副作用表達(dá)式,推薦使用短路 && 運(yùn)算符(詳見(jiàn)短路求值)。

運(yùn)算優(yōu)先級(jí)

Julia 運(yùn)算優(yōu)先級(jí)從高至低依次為:

類(lèi)型 運(yùn)算符
語(yǔ)法 . 跟隨 ::
^.^ 等效
分?jǐn)?shù) //.//
乘除 / % & \.* ./ .% .\
位移 << >> >>>.<< .>> .>>>
加減 + - | $.+ .-
語(yǔ)法 : .. 跟隨于 |>
比較 > < >= <= == === != !== <:.> .< .>= .<= .== .!=
邏輯 && 跟隨于 || 跟隨于 ?
賦值 = += -= *= /= //= \= ^= %= \|= &= $= <<= >>= >>>=.+= .-= .*= ./= .//= .\= .^= .%=

基本函數(shù)

Julia 提供了一系列數(shù)學(xué)函數(shù)和運(yùn)算符:

舍入函數(shù)

函數(shù) 描述 返回類(lèi)型
round(x) 把 x 舍入到最近的整數(shù) FloatingPoint
iround(x) 把 x 舍入到最近的整數(shù) Integer
floor(x) 把 x 向 -Inf 取整 FloatingPoint
ifloor(x) 把 x 向 -Inf 取整 Integer
ceil(x) 把 x 向 +Inf 取整 FloatingPoint
iceil(x) 把 x 向 +Inf 取整 Integer
trunc(x) 把 x 向 0 取整 FloatingPoint
itrunc(x) 把 x 向 0 取整 Integer

除法函數(shù)

函數(shù) 描述
div(x,y) 截?cái)嗳≌?;商?0 舍入
fld(x,y) 向下取整除法;商向 -Inf 舍入
cld(x,y) 向上取整除法; 商向 +Inf 舍入
rem(x,y) 除法余數(shù);滿(mǎn)足 x == div(x,y)*y + rem(x,y) ,與 x 同號(hào)
divrem(x,y) 返回 (div(x,y),rem(x,y))
mod(x,y) 取模余數(shù);滿(mǎn)足 x == fld(x,y)*y + mod(x,y) ,與 y 同號(hào)
mod2pi(x) 對(duì) 2pi 取模余數(shù); 0 <= mod2pi(x) < 2pi
gcd(x,y...) x, y, ... 的最大公約數(shù),與 x 同號(hào)
lcm(x,y...) x, y, ... 的最小公倍數(shù),與 x 同號(hào)

符號(hào)函數(shù)和絕對(duì)值函數(shù)

函數(shù) 描述
abs(x) x 的幅值
abs2(x) x 的幅值的平方
sign(x) x 的正負(fù)號(hào),返回值為 -1, 0, 或 +1
signbit(x) 是否有符號(hào)位,有 (true) 或者 無(wú) (false)
copysign(x,y) 返回一個(gè)數(shù),它具有 x 的幅值, y 的符號(hào)位
flipsign(x,y) 返回一個(gè)數(shù),它具有 x 的幅值, x*y 的符號(hào)位

乘方,對(duì)數(shù)和開(kāi)方

函數(shù) 描述
sqrt(x) √x x 的平方根
cbrt(x) ?x x 的立方根
hypot(x,y) 誤差較小的 sqrt(x^2 + y^2)
exp(x) 自然指數(shù) e 的 x 次冪
expm1(x) 當(dāng) x 接近 0 時(shí),精確計(jì)算 exp(x)-1
ldexp(x,n)  當(dāng) n 為整數(shù)時(shí),高效計(jì)算x*2^n
log(x) x 的自然對(duì)數(shù)
log(b,x) 以 b 為底 x 的對(duì)數(shù)
log2(x) 以 2 為底 x 的對(duì)數(shù)
log10(x) 以 10 為底 x 的對(duì)數(shù)
log1p(x) 當(dāng) x 接近 0 時(shí),精確計(jì)算 log(1+x)
exponent(x) trunc(log2(x))
significand(x) returns the binary significand (a.k.a. mantissa) of a floating-point number x

為什么要有 hypot, expm1, log1p 等函數(shù),參見(jiàn) John D. Cook 的博客: expm1, log1p, erfchypot 。

三角函數(shù)和雙曲函數(shù)

Julia 內(nèi)置了所有的標(biāo)準(zhǔn)三角函數(shù)和雙曲函數(shù)

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   atan2

除了 atan2 之外,都是單參數(shù)函數(shù)。 atan2 給出了 x 軸,與由 x 、 y 確定的點(diǎn)之間的弧度 。

另外,sinpi(x)cospi(x)各自被提供給更準(zhǔn)確的 sin(pi*x)cos(pi*x)的計(jì)算。

如果想要以度,而非弧度,為單位計(jì)算三角函數(shù),應(yīng)使用帶 d 后綴的函數(shù)。例如,sind(x) 計(jì)算 x 的正弦值,這里 x 的單位是度。以下的列表是全部的以度為單位的三角函數(shù):

sind   cosd   tand   cotd   secd   cscd
asind  acosd  atand  acotd  asecd  acscd

特殊函數(shù)

函數(shù) 描述
erf(x) x 處的 誤差函數(shù)
erfc(x) 補(bǔ)誤差函數(shù)。當(dāng) x 較大時(shí),精確計(jì)算 1-erf(x)
erfinv(x) erf 的反函數(shù)
erfcinv(x) erfc 的反函數(shù)
erfi(x) 將誤差函數(shù)定義為 -im erf(x im) ,其中 im 是虛數(shù)單位
erfcx(x) 縮放的互補(bǔ)誤差函數(shù),即對(duì)較大的 x 值的準(zhǔn)確的 exp(x ^ 2)* erfc(x)
dawson(x) 縮放虛誤差函數(shù),又名道森函數(shù),即對(duì)較大的 x 值求精確的 exp(-x^2) erfi(x) sqrt(pi) / 2
gamma(x) x 處的 gamma 函數(shù)
lgamma(x) 當(dāng) x 較大時(shí),精確計(jì)算 log(gamma(x))
lfact(x) 對(duì)較大的 x 求精確的 log(factorial(x)); 與對(duì)大于 1 的 x 值求 lgamma(x+1) 相等, 否則等于 0
digamma(x) x 處的 digamma 函數(shù),即導(dǎo)數(shù)的衍生
beta(x,y) 在(x,y)處的 beta 函數(shù)
lbeta(x,y) 對(duì)較大的 x 或 y 值求準(zhǔn)確的 log(beta(x,y))
eta(x) x 處的 Dirichlet eta 函數(shù)
zeta(x) x 處的 Riemann zeta 函數(shù)
airy(z), airyai(z), airy(0,z) z 處的 Airy Ai 函數(shù)
airyprime(z), airyaiprime(z), airy(1,z) Airy Ai 函數(shù)在 z 處的導(dǎo)數(shù)
airybi(z), airy(2,z) z 處的 Airy Bi 函數(shù)
airybiprime(z), airy(3,z) Airy Bi 函數(shù)在 z 處的導(dǎo)數(shù)
airyx(z), airyx(k,z) 縮放 Airy Ai 函數(shù) 以及 k 對(duì) z 的導(dǎo)數(shù)
besselj(nu,z) 對(duì) z 中一階 nu 的貝塞爾函數(shù)
besselj0(z) besselj(0,z)
besselj1(z) besselj(1,z)
besseljx(nu,z) 對(duì) z 中一階 nu 的縮放貝塞爾函數(shù)
bessely(nu,z) 對(duì) z 中二階 nu 的貝塞爾函數(shù)
bessely0(z) bessely(0,z)
bessely1(z) bessely(1,z)
besselyx(nu,z) 對(duì) z 中二階 nu 的縮放貝塞爾函數(shù)
besselh(nu,k,z) 對(duì) z 中三階 nu (例如漢克爾函數(shù))的貝塞爾函數(shù); k 必須為 1 或 2
hankelh1(nu,z) besselh(nu, 1, z)
hankelh1x(nu,z) 縮放 besselh(nu, 1, z)
hankelh2(nu,z) besselh(nu, 2, z)
hankelh2x(nu,z) 縮放 besselh(nu, 2, z)
besseli(nu,z) 對(duì) z 中一階 nu 的修正貝塞爾函數(shù)
besselix(nu,z) 對(duì) z 中一階 nu 的縮放修正貝塞爾函數(shù)
besselk(nu,z) 對(duì) z 中二階 nu 的修正貝塞爾函數(shù)
besselkx(nu,z) 對(duì)二階 o 的縮放修正貝塞爾函數(shù)


以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)