Try   HackMD

FDCSC110 Dec3 Handout - Math & Operators


之所以會想要介紹這個單元是因為 Python 最大的用途就是計算!
有很多的經濟、物理、太空等需要大量計算的科系都會使用 Python (還有 Matlab 啦)

還有探究課也會用到

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

code
import math import os sin = math.sin cos = math.cos tan = math.tan arcsin = math.asin PI = math.pi C = 16 H = 0 W = 15 deg = 0 L = 25 def deg_to_rad(x): return x*PI/180 def rad_to_deg(x): return x*180/PI def calL(x): return (H + C*sin(x))*tan(x) + C*cos(x) - W def calD(x): K = L+W return arcsin(((4*x*x*C*C-4*(x*x+K*K)*(C*C-K*K))**(1/2)-2*x*C)/(2*(x*x+K*K))) if __name__ == '__main__': while True: H, deg = map(float, input('H, deg = ').strip().split()) print('L = {}cm'.format(calL(deg_to_rad(deg)))) print('RAD = {}'.format(calD(H))) print('DEG = {}'.format(rad_to_deg(calD(H)))) print('tan(PI/2-x) = {}'.format(tan(PI/2-deg_to_rad(deg)))) os.system('pause')

Functions from math

數論衍生函數

ceil(x)

回傳大於等於 x 的最小整數

floor(x)

回傳小於等於 x 的最大整數

comb(n, k)

回傳

Ckn

factorial(x)

回傳 x 的階乘

frexp(x, y)

n=a×2b,以 tuple 回傳 (a, b)

ldexp(x, y)

回傳

x×2y,為 frexp() 的反函數

fsum(l)

更精準的計算串列 l 裡面的數字總和

gcd(...)

回傳引數的最大公因數

lcm(...)

計算引數的最大公因數

nextafter(x, y)

如果

x 較小回傳
limkx+k
,否則回傳
limkxk

指數與對數函數

exp(x)

回傳

ex

expml(x)

回傳

ex1,比 exp(x)-1 精準

log(x, b)

回傳

logbx,如果
b
沒有參數,則使用預設值
e

log1p(x)

回傳

ln(x+1),針對
x
趨近於
0
時使用 (
x
極小時)

log2(x)

回傳

log2x,比 log(x, 2) 精準

pow(x, y)

回傳

xy,在
x=1
y=0
永遠回傳
1
,不可計算虛數,以 float(x)**float(y) 進行計算

sqrt(x)

回傳

x,可以使用 x**0.5pow(x, 0.5) 取代

三角函數

sin(x)

回傳

sinx

cos(x)

回傳

cosx

tan(x)

回傳

tanx

asin(x)

回傳

sin1x,回傳值介於
π2
π2
之間

acos(x)

回傳

cos1x,回傳值介於
0
π
之間

atan(x)

回傳

tan1x,回傳值介於
π2
π2
之間

atan2(x)

回傳

tan1x,回傳值介於
π
π
之間

向量長度衍生函數

dist(x, y)

xy 皆為 tuple,回傳

|xy|

hypot(...)

令帶入的引數為

a1a2...an,且
A=(a1,a2,...,an)
,則回傳
|OA|

角度轉換

degrees(x)

回傳 x 的度度量

radians(x)

回傳 x 的弳度

雙曲函數

sinh(x)

回傳

sinhx

cosh(x)

回傳

coshx

tanh(x)

回傳

tanhx

asinh(x)

回傳

sinh1x

acosh(x)

回傳

cosh1x

atanh(x)

回傳

tanh1x

常數

π
e

tau

相當於

2π

inf

相當於

nan

相當於 無意義

Operators

因為大部分的運算子之前都上過了,
所以這裡著重在位元運算

原則上所有整數

z 都可以被表示為
k=0ai×2k
,其中
ai{0,1}

電腦就是以此原則把
2
進位轉換成
10
進位。
舉例
10(10)=1010(2)

負數的轉換比較複雜,這裡暫時不講

位元運算子主要有

4 個,分別是 &|^~

AND 運算

也就是 & 運算,
如果兩個數字取 &
在同一個位元的數字如果其中一個有

0
則該位元就會是
0

反之就會是
1

舉例 2&1 會等於 0

OR 運算

也就是 | 運算,
如果兩個數字取 |
在同一個位元的數字如果其中一個有

1
則該位元就會是
1

反之就會是
0

舉例 2&1 會等於 3

XOR 運算

也就是 ^ 運算,
如果兩個數字取 ^
在同一個位元的數字如果值相同
則該位元就會是

0
反之就會是
1

舉例 2^1 會等於 3

NOT 運算

也就是 ~ 運算,
一個數字如果取 ~ 運算,
則所有位元反轉。
但是這個會牽扯到負數的位元運算,
所以這裡先不講。

基本上學到這裡已經很後面了,
位元運算的主要功能就是省時間,
現在的程式碼還沒有必要用到位元運算
所以有個概念就好。