math --- æ°å¦å½æ°Â¶
该模åæä¾äºå¯¹éç¨æ°å¦å½æ°å常éç访é®ï¼å æ¬ç± C æ åæå®ä¹çã
è¿äºå½æ°ä¸éç¨äºå¤æ°ï¼å¦æä½ éè¦è®¡ç®å¤æ°ï¼è¯·ä½¿ç¨ cmath 模åä¸çåå彿°ãå°æ¯æè®¡ç®å¤æ°ç彿°åºåå¼çç®çï¼å¨äºå¤§å¤æ°ç¨æ·å¹¶ä¸æ¿æä¸ºäºçè§£å¤æ°èå»å¦ä¹ å¤ªå¤æ°å¦ç¥è¯ãå¾å°ä¸ä¸ªå¼å¸¸è䏿¯ä¸ä¸ªå¤æ°ç»æè½è®©å¤æ°å½ä½åæ°çæ
嵿´æ©è¢«çæµå°ï¼è¿èç¨åºåå¯ä»¥ç¬¬ä¸æ¶é´è°æ¥å
¶äº§ççåå ã
该模åæä¾äºä»¥ä¸å½æ°ãé¤é妿æç¡®è¯´æï¼å¦åææè¿åå¼åä¸ºæµ®ç¹æ°ã
æ°è®ºå½æ° |
|
ä¸éå¤ä¸æ 顺åºå°ä» n 项ä¸éæ© k é¡¹çæ¹å¼æ»æ° |
|
n çé¶ä¹ |
|
æ´æ°åæ°çæå¤§å ¬çº¦æ° |
|
éè´æ´æ° n çæ´æ°å¹³æ¹æ ¹ |
|
æ´æ°åæ°çæå°å ¬åæ° |
|
æ éå¤ä¸æé¡ºåºå°ä» n 项ä¸éæ© k é¡¹çæ¹å¼æ»æ° |
|
æµ®ç¹ç®æ° |
|
x åä¸åæ´ï¼å³å¤§äºçäº x çæå°æ´æ°ã |
|
x çç»å¯¹å¼ |
|
x åä¸åæ´ï¼å³å°äºçäº x çæå¤§æ´æ°ã |
|
å并乿³å æ³è¿ç®: |
|
餿³è¿ç® |
|
x çå°æ°åæ´æ°é¨å |
|
x å¯¹äº y ç使° |
|
x çæ´æ°é¨å |
|
æµ®ç¹æä½å½æ° |
|
ä½¿ç¨ y çç¬¦å·æ¾å¤§ x çï¼ç»å¯¹å¼ï¼ |
|
x çå°¾æ°åææ° |
|
æ£æ¥ a å b ç弿¯å¦å½¼æ¤æ¥è¿ |
|
æ£æ¥ x æ¯å¦ä¸ä¸ºæ 穷大ä¹ä¸ä¸º NaN |
|
æ£æ¥ x æ¯å¦ä¸ºæ£æè´æ 穷大 |
|
æ£æ¥ x æ¯å¦ä¸º NaN (éæ°å) |
|
|
|
ä» x å¾ y æ¹åçæ¥æ°æµ®ç¹å¼ steps |
|
x çæå°æææ¯ç¹ä½çå¼ |
|
å¹ãææ°å对æ°å½æ° |
|
x çç«æ¹æ ¹ |
|
e ç x æ¬¡å¹ |
|
2 ç x æ¬¡å¹ |
|
e ç x 次å¹ï¼å 1 |
|
x çæå®åºæ° (é»è®¤ä¸º e) çå¯¹æ° |
|
1+x çèªç¶å¯¹æ° (以 e 为åº) |
|
x ç以 2 为åºçå¯¹æ° |
|
x ç以 10 为åºçå¯¹æ° |
|
x ç y æ¬¡å¹ |
|
x çå¹³æ¹æ ¹ |
|
å æ»åä¹ç§¯å½æ° |
|
ä»¥åæ çå¯è¿ä»£å¯¹è±¡å½¢å¼ç»åºç p å q 两ç¹ä¹é´ç欧å éå¾è·ç¦» |
|
è¾å ¥ç iterable å¼çæ»è®¡ |
|
åæ çå¯è¿ä»£å¯¹è±¡ç欧å éå¾èæ° |
|
å ·æ start å¼çè¾å ¥ iterable ä¸å ç´ ç积 |
|
æ¥èªä¸¤ä¸ªå¯è¿ä»£å¯¹è±¡ p å q çå¼çä¹ç§¯çæ»è®¡å¼ã |
|
è§åº¦è½¬æ¢ |
|
å°åº¦æ°å¼ x ä»å¼§åº¦è½¬æ¢ä¸ºè§åº¦ |
|
å°åº¦æ°å¼ x ä»è§åº¦è½¬æ¢ä¸ºå¼§åº¦ |
|
ä¸è§å½æ° |
|
x çåä½å¼¦ |
|
x ç忣弦 |
|
x ç忣å |
|
|
|
x çä½å¼¦ |
|
x çæ£å¼¦ |
|
x çæ£å |
|
忲彿° |
|
x çååæ²ä½å¼¦ |
|
x çååæ²æ£å¼¦ |
|
x çååæ²æ£å |
|
x çåæ²ä½å¼¦ |
|
x çåæ²æ£å¼¦ |
|
x çåæ²æ£å |
|
ç¹æ®å½æ° |
|
å¨ x å¤ç è¯¯å·®å½æ° |
|
å¨ x å¤ç äºè¡¥è¯¯å·®å½æ° |
|
å¨ x å¤ç 伽马彿° |
|
å¨ x å¤ç 伽马彿° çç»å¯¹å¼çèªç¶å¯¹æ° |
|
常é |
|
Ï = 3.141592... |
|
e = 2.718281... |
|
Ï = 2Ï = 6.283185... |
|
æ£æ ç©· |
|
"éæ°å" (NaN) |
|
æ°è®ºå½æ°Â¶
- math.comb(n, k)¶
è¿åä¸éå¤ä¸æ 顺åºå°ä» n 项ä¸éæ© k é¡¹çæ¹å¼æ»æ°ã
å½
k <= næ¶åå¼ä¸ºn! / (k! * (n - k)!)ï¼å½k > næ¶åå¼ä¸ºé¶ãä¹ç§°ä¸ºäºé¡¹å¼ç³»æ°ï¼å 为å®çä»·äº
(1 + x)â¿çå¤é¡¹å¼å±å¼ä¸ç¬¬ k 项çç³»æ°ã妿任ä¸åæ°ä¸ä¸ºæ´æ°åä¼å¼å
TypeErrorã 妿任ä¸åæ°ä¸ºè´æ°åä¼å¼åValueErrorãå¨ 3.8 çæ¬å å ¥.
- math.factorial(n)¶
è¿åéè´æ´æ° n çé¶ä¹ã
å¨ 3.10 çæ¬åçåæ´: å ·ææ´æ°å¼çæµ®ç¹æ° (å¦
5.0) å°ä¸å被æ¥åã
- math.gcd(*integers)¶
è¿åç»å®çæ´æ°åæ°çæå¤§å ¬çº¦æ°ã 妿æä¸ä¸ªåæ°éé¶ï¼åè¿åå¼å°æ¯è½åæ¶æ´é¤ææåæ°çæå¤§æ£æ´æ°ã 妿ææåæ°ä¸ºé¶ï¼åè¿åå¼ä¸º
0ã ä¸å¸¦åæ°çgcd()è¿å0ãå¨ 3.5 çæ¬å å ¥.
å¨ 3.9 çæ¬åçåæ´: æ·»å äºå¯¹ä»»ææ°éçåæ°çæ¯æã ä¹åççæ¬åªæ¯æä¸¤ä¸ªåæ°ã
- math.isqrt(n)¶
è¿åéè´æ´æ° n çæ´æ°å¹³æ¹æ ¹ã è¿å°±æ¯å¯¹ n çå®é å¹³æ¹æ ¹åä¸åæ´ï¼æè ç¸å½äºä½¿å¾ a² â¤Â n çæå¤§æ´æ° aã
å¯¹äºæäºåºç¨æ¥è¯´ï¼å¯ä»¥æ´éååå¼ä¸ºä½¿å¾ n â¤Â a² çæå°æ´æ° a ï¼æè æ¢å¥è¯è¯´å°±æ¯ n çå®é å¹³æ¹æ ¹åä¸åæ´ã å¯¹äºæ£æ° nï¼è¿å¯ä»¥ä½¿ç¨
a = 1 + isqrt(n - 1)æ¥è®¡ç®ãå¨ 3.8 çæ¬å å ¥.
- math.lcm(*integers)¶
è¿åç»å®çæ´æ°åæ°çæå°å ¬åæ°ã 妿ææåæ°åéé¶ï¼åè¿åå¼å°æ¯ä¸ºææåæ°çæ´æ°åçæå°æ£æ´æ°ã 妿忰ä¹ä¸ä¸ºé¶ï¼åè¿åå¼ä¸º
0ã ä¸å¸¦åæ°çlcm()è¿å1ãå¨ 3.9 çæ¬å å ¥.
- math.perm(n, k=None)¶
è¿åä¸éå¤ä¸æé¡ºåºå°ä» n 项ä¸éæ© k é¡¹çæ¹å¼æ»æ°ã
å½
k <= næ¶åå¼ä¸ºn! / (n - k)!ï¼å½k > næ¶åå¼ä¸ºé¶ã妿 k æªæå®æä¸º
Noneï¼å k é»è®¤å¼ä¸º n å¹¶ä¸å½æ°å°è¿ån!ã妿任ä¸åæ°ä¸ä¸ºæ´æ°åä¼å¼å
TypeErrorã 妿任ä¸åæ°ä¸ºè´æ°åä¼å¼åValueErrorãå¨ 3.8 çæ¬å å ¥.
æµ®ç¹ç®æ°Â¶
- math.ceil(x)¶
è¿å x çåä¸åæ´ï¼å³å¤§äºæçäº x çæå°çæ´æ°ã妿 x 䏿¯æµ®ç¹æ°ï¼å§æç»
x.__ceil__ï¼å®åºè¯¥è¿åä¸ä¸ªIntegralçå¼ã
- math.fabs(x)¶
è¿å x çç»å¯¹å¼ã
- math.floor(x)¶
è¿å x çåä¸åæ´ï¼å°äºæçäº x çæå¤§æ´æ°ã妿 x 䏿¯æµ®ç¹æ°ï¼åå§æç»
x.__floor__ï¼å®åºè¿åä¸ä¸ªIntegralå¼ã
- math.fma(x, y, z)¶
èåç乿³-å æ³è¿ç®ã è¿å
(x * y) + zï¼ç±»ä¼¼äºä½¿ç¨æ é精度ååå¼èå´è¿è¡è®¡ç®ç¶åæ§è¡ä¸æ¬¡èå ¥å°floatæ ¼å¼ã æ¤è¿ç®å¾å¾å¯æä¾æ¯ç´æ¥ä½¿ç¨è¡¨è¾¾å¼(x * y) + zæ´é«çç²¾ç¡®åº¦ãæ¤å½æ°éµå¾ªå¨ IEEE 754 æ åä¸æè¿°ç fusedMultiplyAdd è¿ç®è§èã 该æ åå®ä¹äºç¸ååºæ¯çç»ä¸å®ç°ï¼å³
fma(0, inf, nan)åfma(inf, 0, nan)ã å¨è¿äºåºæ¯ä¸ï¼math.fmaå°è¿å NaNï¼ä¸ä¸ä¼å¼åä»»ä½å¼å¸¸ãå¨ 3.13 çæ¬å å ¥.
- math.fmod(x, y)¶
è¿å
x / yç以浮ç¹è¡¨ç¤ºç使°ï¼å¦å¹³å°ç C åºå½æ°fmod(x, y)æå®ä¹çã 请注æ Python 表达å¼x % yå¯è½ä¸ä¼è¿åç¸åçç»æã C æ åçç®çæ¯fmod(x, y)å®å ¨å°ï¼å¨æ°å¦æ¦å¿µä¸ï¼ç²¾åº¦æ éï¼çäºx - n*yå¯¹äºæ´æ° n 使å¾ç»æå ·æä¸ x ç¸åçæ£è´å·åå°äºabs(y)çé级ã Python çx % yåè¿åä¸å ·æ y ç¸åçæ£è´å·çç»æï¼è对浮ç¹åæ°æ¥è¯´å¯è½ä¸æ¯å®å ¨å¯è®¡ç®çã ä¾å¦ï¼fmod(-1e-100, 1e100)æ¯-1e-100ï¼ä½ Python ç-1e-100 % 1e100忝1e100-1e-100ï¼å®ä¸è½å确表示为ä¸ä¸ªæµ®ç¹æ°ï¼å¹¶ä¼èå ¥ä¸ºä»¤äººæè®¶ç1e100ã åºäºè¿ä¸ªåå ï¼å½æ°fmod()å¨å¤çæµ®ç¹æ°æ¶é叏齿¯é¦éï¼è Python çx % yåå¨å¤çæ´æ°æ¶æ¯é¦éã
- math.modf(x)¶
è¿å x çå°æ°åæ´æ°é¨åãä¸¤ä¸ªç»æé½å¸¦æ x ç符å·å¹¶ä¸æ¯æµ®ç¹æ°ã
请注æ
modf()å ·æä¸å®ç C 对åºç©ä¸åçè°ç¨/è¿å模å¼ï¼å®æ¥ååä¸ªåæ°å¹¶è¿åä¸å¯¹å¼ï¼è䏿¯éè¿ 'è¾åºå½¢å' è¿åå®ç第äºä¸ªè¿åå¼ (Python 䏿²¡æè¿ä¸ªæ¦å¿µ)ã
- math.remainder(x, y)¶
è¿å IEEE 754 飿 ¼ç x ç¸å¯¹äº y ç使°ãå¯¹äºæé x åæééé¶ y ï¼è¿æ¯å·®å¼
x - n*yï¼å ¶ä¸næ¯ä¸åx / yçç²¾ç¡®å¼ææ¥è¿çæ´æ°ã妿x / yæ°å¥½ä½äºä¸¤ä¸ªè¿ç»æ´æ°ä¹é´ï¼åå°ææ¥è¿ç å¶æ° ç¨ä½nã 使°r = remainder(x, y)å æ¤æ»æ¯æ»¡è¶³abs(r) <= 0.5 * abs(y)ãç¹æ®æ åµéµå¾ªIEEE 754ï¼ç¹å«æ¯
remainder(x, math.inf)对äºä»»ä½æé x 齿¯ x ï¼èremainder(x, 0)åremainder(math.inf, x)å¼åValueErroréç¨äºä»»ä½éNaNç x ã妿使°è¿ç®çç»æä¸ºé¶ï¼å该é¶å°å ·æä¸ x ç¸åç符å·ãå¨ä½¿ç¨IEEE 754äºè¿å¶æµ®ç¹çå¹³å°ä¸ï¼æ¤æä½çç»æå§ç»å¯ä»¥å®å ¨è¡¨ç¤ºï¼ä¸ä¼å¼å ¥èå ¥é误ã
å¨ 3.7 çæ¬å å ¥.
- math.trunc(x)¶
è¿åå»é¤å°æ°é¨åç x ï¼åªç䏿´æ°é¨åã è¿æ ·å°±å¯ä»¥åèäºå ¥å°0äºï¼
trunc()å¯¹äºæ£ç x ç¸å½äºfloor()ï¼å¯¹äºè´ç x ç¸å½äºceil()ã妿 x 䏿¯æµ®ç¹æ°ï¼å§æç»x.__trunc__ï¼å®åºè¯¥è¿åä¸ä¸ªIntegralå¼ã
å¯¹äº ceil() ï¼ floor() å modf() 彿°ï¼è¯·æ³¨æ ææ è¶³å¤å¤§çæµ®ç¹æ°é½æ¯ç²¾ç¡®æ´æ°ãPythonæµ®ç¹æ°é常ä¸è¶
è¿53ä½ç精度ï¼ä¸å¹³å°C doubleç±»åç¸åï¼ï¼å¨è¿ç§æ
åµä¸ï¼ä»»ä½æµ®ç¹ x ä¸ abs(x) >= 2**52 å¿
ç¶æ²¡æå°æ°ä½ã
æµ®ç¹æä½å½æ°Â¶
- math.copysign(x, y)¶
è¿åä¸ä¸ªåºäº x çç»å¯¹å¼å y ç符å·çæµ®ç¹æ°ã卿¯æå¸¦ç¬¦å·é¶çå¹³å°ä¸ï¼
copysign(1.0, -0.0)è¿å -1.0.
- math.frexp(x)¶
以
(m, e)对çå½¢å¼è¿å x çå°¾æ°åææ°ã m æ¯ä¸ä¸ªæµ®ç¹æ°ï¼ e æ¯ä¸ä¸ªæ´æ°ï¼æ£å¥½æ¯x == m * 2**eã 妿 x 为é¶ï¼åè¿å(0.0, 0)ï¼å¦åè¿å0.5 <= abs(m) < 1ãè¿ç¨äºä»¥å¯ç§»æ¤æ¹å¼âåç¦»âæµ®ç¹æ°çå é¨è¡¨ç¤ºã注æ
frexp()å ·æä¸å®ç C 对åºç©ä¸åçè°ç¨/è¿å模å¼ï¼å®æ¥ååä¸ªåæ°å¹¶è¿åä¸å¯¹å¼ï¼è䏿¯éè¿ 'è¾åºå½¢å' è¿åå®ç第äºä¸ªè¿åå¼ (Python 䏿²¡æè¿ä¸ªæ¦å¿µ)ã
- math.isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0)¶
è¥ a å b ç弿¯è¾æ¥è¿åè¿å
Trueï¼å¦åè¿åFalseãä¸¤ä¸ªå¼æ¯å¦ä¼è¢«è§ä¸ºç¸è¿æ¯æ ¹æ®ç»å®çç»å¯¹åç¸å¯¹å¯æ¥åå·®å¼åº¦æ¥ç¡®å®çã 妿æªåçé误ï¼ç»æå°ä¸º:
abs(a-b) <= max(rel_tol * max(abs(a), abs(b)), abs_tol)ãrel_tol æ¯ç¸å¯¹å®¹å·® -- 宿¯ a å b ä¹é´çæå¤§å 许差å¼ï¼ç¸å¯¹äº a æ b ä¸ç»å¯¹å¼è¾å¤§çä¸ä¸ªèè¨ã ä¾å¦ï¼è¦è®¾ç½® 5% ç容差ï¼åä¼ å ¥
rel_tol=0.05ã é»è®¤ç容差为1e-09ï¼è¿å°ç¡®ä¿ä¸¤ä¸ªå¼å¨å¤§çº¦ 9 个åè¿å¶æ°ä½å æ¯ç¸åçã rel_tol å¿ é¡»ä¸ºéé¶å¼å¹¶ä¸å°äº1.0ãabs_tol æ¯ç»å¯¹å®¹å·®ï¼å ¶é»è®¤å¼ä¸º
0.0ä¸å¿ 须为éè´æ°ã å½å°xä¸0.0æ¯è¾æ¶ï¼isclose(x, 0)å°æabs(x) <= rel_tol * abs(x)æ¥è®¡ç®ï¼å¯¹äºä»»ä½éé¶çxåå°äº1.0ç rel_tol æ¥è¯´å为Falseã å æ¤è¯·ä¸ºè¯¥è°ç¨æ·»å ä¸ä¸ªéå½çæ£æ° abs_tol åæ°ãIEEE 754ç¹æ®å¼
NaNï¼infå-infå°æ ¹æ®IEEEè§åå¤çãå ·ä½æ¥è¯´ï¼NaNä¸è¢«è®¤ä¸ºæ¥è¿ä»»ä½å ¶ä»å¼ï¼å æ¬NaNãinfå-infåªè¢«è®¤ä¸ºæ¥è¿èªå·±ãå¨ 3.5 çæ¬å å ¥.
åè§
PEP 485 ââ ç¨äºæµè¯è¿ä¼¼ç¸çç彿°
- math.isfinite(x)¶
妿 x æ¢ä¸æ¯æ 穷大ä¹ä¸æ¯NaNï¼åè¿å
Trueï¼å¦åè¿åFalseã ï¼æ³¨æ0.0被认为 æ¯ æéçãï¼å¨ 3.2 çæ¬å å ¥.
- math.isinf(x)¶
妿 x æ¯æ£æè´æ 穷大ï¼åè¿å
Trueï¼å¦åè¿åFalseã
- math.isnan(x)¶
妿 x æ¯ NaNï¼ä¸æ¯æ°åï¼ï¼åè¿å
Trueï¼å¦åè¿åFalseã
- math.nextafter(x, y, steps=1)¶
è¿åä» x å° y çæ¥æ°çæµ®ç¹å¼ stepsã
妿 x çäº yï¼åè¿å yï¼é¤é steps å¼ä¸ºé¶ã
示ä¾ï¼
math.nextafter(x, math.inf)çæ¹åæä¸ï¼è¶åäºæ£æ ç©·ãmath.nextafter(x, -math.inf)çæ¹åæä¸ï¼è¶åäºè´æ ç©·ãmath.nextafter(x, 0.0)è¶åäºé¶ãmath.nextafter(x, math.copysign(math.inf, x))è¶åäºé¶çåæ¹åã
å¦è¯·åé
math.ulp()ãå¨ 3.9 çæ¬å å ¥.
å¨ 3.12 çæ¬åçåæ´: å¢å äº steps åæ°ã
- math.ulp(x)¶
è¿åæµ®ç¹æ° x çæå°æææ¯ç¹ä½çå¼:
妿 x æ¯ NaN (éæ°å)ï¼åè¿å xã
妿 x ä¸ºè´æ°ï¼åè¿å
ulp(-x)ã妿 x ä¸ºæ£æ°ï¼åè¿å xã
妿 x çäºé¶ï¼åè¿å 廿£è§åç å¯è¡¨ç¤ºæå°æ£æµ®ç¹æ° (å°äº æ£è§åç æå°æ£æµ®ç¹æ°
sys.float_info.min)ã妿 x çäºå¯è¡¨ç¤ºæå¤§æ£æµ®ç¹æ°ï¼åè¿å x çæä½æææ¯ç¹ä½çå¼ï¼ä½¿å¾å°äº x ç第ä¸ä¸ªæµ®ç¹æ°ä¸º
x - ulp(x)ãå¨å ¶ä»æ åµä¸ (x æ¯ä¸ä¸ªæéçæ£æ°)ï¼åè¿å x çæä½æææ¯ç¹ä½çå¼ï¼ä½¿å¾å¤§äº x ç第ä¸ä¸ªæµ®ç¹æ°ä¸º
x + ulp(x)ã
ULP å³ "Unit in the Last Place" ç缩åã
å¦è¯·åé
math.nextafter()åsys.float_info.epsilonãå¨ 3.9 çæ¬å å ¥.
å¹ãææ°å对æ°å½æ°Â¶
- math.cbrt(x)¶
è¿å x çç«æ¹æ ¹ã
å¨ 3.11 çæ¬å å ¥.
- math.exp(x)¶
è¿å e ç x 次å¹ï¼å ¶ä¸ e = 2.718281... æ¯èªç¶å¯¹æ°çåºæ°ãè¿é常æ¯
math.e ** xæpow(math.e, x)æ´ç²¾ç¡®ã
- math.exp2(x)¶
è¿å 2 ç x 次å¹ã
å¨ 3.11 çæ¬å å ¥.
- math.expm1(x)¶
è¿å e ç x 次æ¹å 1ã è¿é e æ¯èªç¶å¯¹æ°çåºã 对äºå°æµ®ç¹æ° xï¼å¨
exp(x) - 1ä¸çåæ³è¿ç®å¯è½å¯¼è´ ææ¾ç精度æå¤±ï¼expm1()彿°æä¾äºä¸ç§ä»¥å®æ´ç²¾åº¦è®¡ç®æ¤æ°éçåæ³ï¼>>> from math import exp, expm1 >>> exp(1e-5) - 1 # gives result accurate to 11 places 1.0000050000069649e-05 >>> expm1(1e-5) # result accurate to full precision 1.0000050000166668e-05
å¨ 3.2 çæ¬å å ¥.
- math.log(x[, base])¶
使ç¨ä¸ä¸ªåæ°ï¼è¿å x çèªç¶å¯¹æ°ï¼åºä¸º e ï¼ã
使ç¨ä¸¤ä¸ªåæ°ï¼è¿åç»å®ç base çå¯¹æ° x ï¼è®¡ç®ä¸º
log(x)/log(base)ã
- math.log1p(x)¶
è¿å 1+x çèªç¶å¯¹æ°ï¼ä»¥ e 为åºï¼ã ä»¥å¯¹äºæ¥è¿é¶ç x ç²¾ç¡®çæ¹å¼è®¡ç®ç»æã
- math.log2(x)¶
è¿å x 以2为åºç对æ°ãè¿é常æ¯
log(x, 2)æ´åç¡®ãå¨ 3.3 çæ¬å å ¥.
åè§
int.bit_length()è¿å表示äºè¿å¶æ´æ°æéç使°ï¼ä¸å æ¬ç¬¦å·åå导é¶ã
- math.log10(x)¶
è¿å x åºä¸º10ç对æ°ãè¿é常æ¯
log(x, 10)æ´åç¡®ã
- math.pow(x, y)¶
è¿å x ç y 次å¹ã ç¹æ®æ åµå°å°½å¯è½éµå¾ª IEEE 754 æ åã å ·ä½æ¥è¯´ï¼
pow(1.0, x)åpow(x, 0.0)æ»æ¯è¿å1.0ï¼å³ä½¿å½ x ä¸ºé¶æ NaN æ¶ä¹æ¯å¦æ¤ã 妿 x å y å为æéå¼ï¼x æ¯è´æ°ï¼è y 䏿¯è´æ°åpow(x, y)å°æ¯æªå®ä¹çï¼å¹¶ä¼å¼åValueErrorãä¸å ç½®ç
**è¿ç®ç¬¦ä¸åï¼math.pow()å°å ¶åæ°è½¬æ¢ä¸ºfloatç±»åã使ç¨**æå ç½®çpow()彿°æ¥è®¡ç®ç²¾ç¡®çæ´æ°å¹ãå¨ 3.11 çæ¬åçåæ´: ç¹æ®æ åµ
pow(0.0, -inf)åpow(-0.0, -inf)å·²æ¹ä¸ºè¿åinfè䏿¯å¼åValueErrorï¼ä»¥ä¾¿å IEEE 754 ä¿æä¸è´ã
- math.sqrt(x)¶
è¿å x çå¹³æ¹æ ¹ã
å æ»åä¹ç§¯å½æ°Â¶
- math.dist(p, q)¶
è¿å p ä¸ q 两ç¹ä¹é´ç欧å éå¾è·ç¦»ï¼ä»¥ä¸ä¸ªåæ åºåï¼æå¯è¿ä»£å¯¹è±¡ï¼çå½¢å¼ç»åºã 两个ç¹å¿ é¡»å ·æç¸åç维度ã
大è´ç¸å½äºï¼
sqrt(sum((px - qx) ** 2.0 for px, qx in zip(p, q)))
å¨ 3.8 çæ¬å å ¥.
- math.fsum(iterable)¶
è¿åå¯è¿ä»£å¯¹è±¡ä¸çå¼çç²¾ç¡®æµ®ç¹æ»è®¡å¼ã éè¿è·è¸ªå¤ä¸ªä¸é´é¨å忥é¿å 精度æå¤±ã
è¯¥ç®æ³çåç¡®æ§åå³äºIEEE-754ç®æ¯ä¿è¯åèå ¥æ¨¡å¼ä¸ºåå¶çå ¸åæ åµã卿äºéWindowsçæ¬ä¸ï¼åºå±Cåºä½¿ç¨æ©å±ç²¾åº¦æ·»å ï¼å¹¶ä¸ææ¶å¯è½ä¼ä½¿ä¸é´åå åï¼å¯¼è´å®å¨æä½ææä½ä¸å ³éã
æå ³è¿ä¸æ¥ç讨论åä¸¤ç§æ¿ä»£æ¹å¼ï¼è¯·åé ASPN cookbook recipes for accurate floating-point summationã
- math.hypot(*coordinates)¶
è¿å欧å éå¾èæ°ï¼
sqrt(sum(x**2 for x in coordinates))ã è¿æ¯ä»åç¹å°åæ ç»å®ç¹çåéé¿åº¦ã对äºä¸ä¸ªäºç»´ç¹
(x, y)ï¼è¿çä»·äºä½¿ç¨æ¯è¾¾å¥ææ¯å®ä¹sqrt(x*x + y*y)计ç®ä¸ä¸ªç´è§ä¸è§å½¢çæè¾¹ãå¨ 3.8 çæ¬åçåæ´: æ·»å äºå¯¹ n ç»´ç¹çæ¯æã ä¹åççæ¬åªæ¯æäºç»´ç¹ã
å¨ 3.10 çæ¬åçåæ´: æ¹è¿äºç®æ³ç精确æ§ï¼ä½¿å¾æå¤§è¯¯å·®å¨ 1 ulp (æåä¸ä½çå使°å¼) 以ä¸ã æ´ä¸ºå¸¸è§çæ 嵿¯ï¼ç»æå 乿»æ¯è½æ£ç¡®å°èå ¥å° 1/2 ulp èå´ä¹å ã
- math.prod(iterable, *, start=1)¶
计ç®è¾å ¥ç iterable 䏿æå ç´ ç积ã 积çé»è®¤ start å¼ä¸º
1ãå½å¯è¿ä»£å¯¹è±¡ä¸ºç©ºæ¶ï¼è¿åèµ·å§å¼ã æ¤å½æ°ç¹å«é对æ°åå¼ä½¿ç¨ï¼å¹¶ä¼æç»éæ°åç±»åã
å¨ 3.8 çæ¬å å ¥.
- math.sumprod(p, q)¶
两个å¯è¿ä»£å¯¹è±¡ p å q ä¸çå¼çä¹ç§¯çæ»è®¡å¼ã
妿è¾å ¥å¼çé¿åº¦ä¸ç¸çåä¼å¼å
ValueErrorã大è´ç¸å½äºï¼
sum(map(operator.mul, p, q, strict=True))
å¯¹äºæµ®ç¹æ°ææ··åæ´æ°/æµ®ç¹æ°çè¾å ¥ï¼ä¸é´çä¹ç§¯åæ»è®¡å¼å°ä½¿ç¨æ©å±ç²¾åº¦æ¥è®¡ç®ã
å¨ 3.12 çæ¬å å ¥.
è§åº¦è½¬æ¢Â¶
- math.degrees(x)¶
å°è§åº¦ x ä»å¼§åº¦è½¬æ¢ä¸ºåº¦æ°ã
- math.radians(x)¶
å°è§åº¦ x ä»åº¦æ°è½¬æ¢ä¸ºå¼§åº¦ã
ä¸è§å½æ°Â¶
- math.acos(x)¶
è¿å以弧度为åä½ç x çåä½å¼¦å¼ã ç»æèå´å¨
0å°piä¹é´ã
- math.asin(x)¶
è¿å以弧度为åä½ç x ç忣弦å¼ã ç»æèå´å¨
-pi/2å°pi/2ä¹é´ã
- math.atan(x)¶
è¿å以弧度为åä½ç x ç忣åå¼ã ç»æèå´å¨
-pi/2å°pi/2ä¹é´ã.
- math.atan2(y, x)¶
以弧度为åä½è¿å
atan(y / x)ãç»ææ¯å¨-piåpiä¹é´ãä»åç¹å°ç¹(x, y)çå¹³é¢ç¢é使该è§åº¦ä¸æ£Xè½´ææ£æ¯ãatan2()çç¹ç两个è¾å ¥ç符å·é½æ¯å·²ç¥çï¼å æ¤å®å¯ä»¥è®¡ç®è§åº¦çæ£ç¡®è±¡éã ä¾å¦ï¼atan(1)åatan2(1, 1)齿¯pi/4ï¼ä½atan2(-1, -1)æ¯-3*pi/4ã
- math.cos(x)¶
è¿å x 弧度çä½å¼¦å¼ã
- math.sin(x)¶
è¿å x å¼§åº¦çæ£å¼¦å¼ã
- math.tan(x)¶
è¿å x å¼§åº¦çæ£åå¼ã
忲彿°Â¶
忲彿° æ¯åºäºåæ²çº¿èé忥坹ä¸è§£å½æ°è¿è¡ç模æã
- math.acosh(x)¶
è¿å x çååæ²ä½å¼¦å¼ã
- math.asinh(x)¶
è¿å x çååæ²æ£å¼¦å¼ã
- math.atanh(x)¶
è¿å x çååæ²æ£åå¼ã
- math.cosh(x)¶
è¿å x çåæ²ä½å¼¦å¼ã
- math.sinh(x)¶
è¿å x çåæ²æ£å¼¦å¼ã
- math.tanh(x)¶
è¿å x çåæ²æ£åå¼ã
ç¹æ®å½æ°Â¶
- math.erf(x)¶
è¿å x å¤ç è¯¯å·®å½æ° ã
å¯ä»¥ä½¿ç¨
erf()彿°æ¥è®¡ç®ä¼ ç»çç»è®¡å½æ°å¦ 累积æ 忣æåå¸:def phi(x): 'æ 忣æåå¸ç累积åå¸å½æ°' return (1.0 + erf(x / sqrt(2.0))) / 2.0
å¨ 3.2 çæ¬å å ¥.
- math.erfc(x)¶
è¿å x å¤çäºè¡¥è¯¯å·®å½æ°ã äºè¡¥è¯¯å·®å½æ° å®ä¹ä¸º
1.0 - erf(x)ã å®ç¨äºå¤§ç x åå¼ï¼ä»¥é¿å ç´æ¥ç¨ 1 åå ¶è¯¯å·®å½æ°å¼å¯¼è´ç ææä½æ°æå¤±ãå¨ 3.2 çæ¬å å ¥.
- math.gamma(x)¶
è¿å x å¤ç 伽马彿° å¼ã
å¨ 3.2 çæ¬å å ¥.
- math.lgamma(x)¶
è¿åGamma彿°å¨ x ç»å¯¹å¼çèªç¶å¯¹æ°ã
å¨ 3.2 çæ¬å å ¥.
常é¶
- math.pi¶
æ°å¦å¸¸æ° Ï = 3.141592...ï¼ç²¾ç¡®å°å¯ç¨ç²¾åº¦ã
- math.e¶
æ°å¦å¸¸æ° e = 2.718281...ï¼ç²¾ç¡®å°å¯ç¨ç²¾åº¦ã
- math.tau¶
æ°å¦å¸¸æ° Ï = 6.283185...ï¼ç²¾ç¡®å°å¯ç¨ç²¾åº¦ãTau æ¯ä¸ä¸ªåå¨å¸¸æ°ï¼çäº 2Ïï¼åçå¨é¿ä¸åå¾ä¹æ¯ãæ´å¤å ³äº Tau çä¿¡æ¯å¯åè Vi Hart çè§é¢ åå¨çä»ç¶æ¯é误çãå两åå¤çæ´¾æ¥åºç¥ Tau æ¥ å§ï¼
å¨ 3.6 çæ¬å å ¥.
- math.inf¶
æµ®ç¹æ£æ 穷大ã ï¼å¯¹äºè´æ 穷大ï¼ä½¿ç¨
-math.infãï¼ç¸å½äºfloat('inf')çè¾åºãå¨ 3.5 çæ¬å å ¥.
- math.nan¶
ä¸ä¸ªæµ®ç¹æ°å¼ "Not a Number" (NaN)ã ç¸å½äº
float('nan')çè¾åºã æ ¹æ® IEEE-754 æ å è¦æ±ï¼math.nanåfloat('nan')ä¸ä¼è¢«è§ä¸ºçäºä»»ä½å ¶ä»æ°å¼ï¼å æ¬å ¶æ¬èº«ã è¦æ£æ¥ä¸ä¸ªæ°åæ¯å¦ä¸º NaNï¼è¯·ä½¿ç¨isnan()彿°æ¥æµè¯ NaN èä¸è½ä½¿ç¨isæ==ã ä¾å¦:>>> import math >>> math.nan == math.nan False >>> float('nan') == float('nan') False >>> math.isnan(math.nan) True >>> math.isnan(float('nan')) True
å¨ 3.5 çæ¬å å ¥.
å¨ 3.11 çæ¬åçåæ´: 该常éç°å¨æ»æ¯å¯ç¨ã
math 模å主è¦å
å«å´ç»å¹³å°Cæ°å¦åºå½æ°çç®åå
è£
å¨ãç¹æ®æ
åµä¸çè¡ä¸ºå¨é彿
åµä¸éµå¾ªC99æ åçéå½Fãå½åçå®ç°å°å¼å ValueError ç¨äºæ ææä½ï¼å¦ sqrt(-1.0) æ log(0.0) ï¼å
¶ä¸C99éä»¶F建议ååºæ ææä½ä¿¡å·æè¢«é¶é¤ï¼ï¼ å OverflowError ç¨äºæº¢åºçç»æï¼ä¾å¦ï¼ exp(1000.0) ï¼ãé¤éä¸ä¸ªæå¤ä¸ªè¾å
¥åæ°æ¯NaNï¼å¦åä¸ä¼ä»ä¸è¿°ä»»ä½å½æ°è¿åNaNï¼å¨è¿ç§æ
åµä¸ï¼å¤§å¤æ°å½æ°å°è¿åä¸ä¸ªNaNï¼ä½æ¯ï¼å次éµå¾ªC99éä»¶Fï¼è¿ä¸ªè§åæä¸äºä¾å¤ï¼ä¾å¦ pow(float('nan'), 0.0) æ hypot(float('nan'), float('inf')) ã
请注æï¼Pythonä¸ä¼å°æ¾å¼NaNä¸éé»NaNåºå弿¥ï¼å¹¶ä¸æ¾å¼NaNçè¡ä¸ºä»æªæç¡®ãå ¸åçè¡ä¸ºæ¯å°ææNaNè§ä¸ºéé»çã
åè§
cmath模åè¿éå¾å¤å½æ°ç夿°çæ¬ã