Menggunakan matematik, modul standard Python untuk fungsi matematik, anda boleh mengira fungsi trigonometri (sin, cos, tan) dan fungsi trigonometri songsang (arcsin, arccos, arctan).
Kandungan berikut diterangkan di sini dengan kod sampel.
- Pi (3.1415926..):
math.pi
- Penukaran sudut (radian, darjah):
math.degrees()
,math.radians()
- Sinus, sinus songsang:
math.sin()
,math.asin()
- kosinus, kosinus songsang:
math.cos()
,math.acos()
- Tangen, Songsang tangen:
math.tan()
,math.atan()
,math.atan2()
- Perbezaan di bawah:
math.atan()
,math.atan2()
Pi (3.1415926..):math.pi
Pi disediakan sebagai pemalar dalam modul matematik. Ia dinyatakan seperti berikut.math.pi
import math
print(math.pi)
# 3.141592653589793
Penukaran sudut (radian, darjah):math.degrees(),math.radians()
Fungsi trigonometri dan songsang dalam modul matematik menggunakan radian sebagai unit sudut.
Gunakan math.degrees() dan math.radians() untuk menukar antara radian (kaedah darjah arka) dan darjah (kaedah darjah).
Math.degrees() menukar daripada radian kepada darjah dan math.radians() menukar daripada darjah kepada radian.
print(math.degrees(math.pi))
# 180.0
print(math.radians(180))
# 3.141592653589793
Sinus, sinus songsang:math.sin(),math.asin()
Fungsi untuk mencari sinus (sin) ialah math.sin() dan fungsi untuk mencari sinus songsang (arcsin) ialah math.asin().
Berikut ialah contoh mencari sinus 30 darjah, menggunakan math.radians() untuk menukar darjah kepada radian.
sin30 = math.sin(math.radians(30))
print(sin30)
# 0.49999999999999994
Sinus 30 darjah ialah 0.5, tetapi terdapat ralat kerana pi, nombor tak rasional, tidak boleh dikira dengan tepat.
Jika anda ingin membundarkan kepada bilangan digit yang sesuai, gunakan fungsi round() atau kaedah format() atau fungsi format().
Ambil perhatian bahawa nilai pulangan round() ialah nombor (int atau float), tetapi nilai pulangan format() ialah rentetan. Jika anda ingin menggunakannya untuk pengiraan seterusnya, gunakan round().
print(round(sin30, 3))
print(type(round(sin30, 3)))
# 0.5
# <class 'float'>
print('{:.3}'.format(sin30))
print(type('{:.3}'.format(sin30)))
# 0.5
# <class 'str'>
print(format(sin30, '.3'))
print(type(format(sin30, '.3')))
# 0.5
# <class 'str'>
Fungsi round() menentukan bilangan tempat perpuluhan sebagai hujah kedua. Ambil perhatian bahawa ini bukan pembundaran sepenuhnya. Lihat artikel berikut untuk butirannya.
Kaedah format() dan fungsi format() menentukan bilangan tempat perpuluhan dalam rentetan spesifikasi pemformatan. Lihat artikel berikut untuk butirannya.
- BERKAITAN:Format penukaran dalam Python, format (0-pengisian, notasi eksponen, perenambelasan, dll.)
Jika anda ingin membandingkan, anda juga boleh menggunakan math.isclose().
print(math.isclose(sin30, 0.5))
# True
Begitu juga, berikut adalah contoh mencari sinus songsang 0.5. math.asin() mengembalikan radian, yang ditukar kepada darjah dengan math.degrees().
asin05 = math.degrees(math.asin(0.5))
print(asin05)
# 29.999999999999996
print(round(asin05, 3))
# 30.0
kosinus, kosinus songsang:math.cos(),math.acos()
Fungsi untuk mencari kosinus (cos) ialah math.cos(), dan fungsi untuk mencari kosinus songsang (kosinus lengkok, arccos) ialah math.acos().
Berikut ialah contoh mencari kosinus 60 darjah dan kosinus songsang 0.5.
print(math.cos(math.radians(60)))
# 0.5000000000000001
print(math.degrees(math.acos(0.5)))
# 59.99999999999999
Jika anda ingin membundarkan kepada digit yang sesuai, anda boleh menggunakan bulat() atau format() seperti sinus.
Tangen, Songsang tangen:math.tan(),math.atan(),math.atan2()
Fungsi untuk mencari tangen (tan) ialah math.tan(), dan fungsi untuk mencari tangen songsang (arctan) ialah math.atan() atau math.atan2().
Math.atan2() diterangkan kemudian.
Contoh mencari tangen 45 darjah dan tangen songsang 1 darjah ditunjukkan di bawah.
print(math.tan(math.radians(45)))
# 0.9999999999999999
print(math.degrees(math.atan(1)))
# 45.0
Perbezaan antara math.atan() dan math.atan2()
Kedua-dua math.atan() dan math.atan2() ialah fungsi yang mengembalikan tangen songsang, tetapi ia berbeza dalam bilangan argumen dan julat nilai pulangan.
math.atan(x) mempunyai satu hujah dan mengembalikan arctan(x) dalam radian. Nilai pulangan adalah antara -pi \ 2 dan pi \ 2 (-90 hingga 90 darjah).
print(math.degrees(math.atan(0)))
# 0.0
print(math.degrees(math.atan(1)))
# 45.0
print(math.degrees(math.atan(-1)))
# -45.0
print(math.degrees(math.atan(math.inf)))
# 90.0
print(math.degrees(math.atan(-math.inf)))
# -90.0
Dalam contoh di atas, math.inf mewakili infiniti.
math.atan2(y, x) mempunyai dua hujah dan mengembalikan arctan(y \ x) dalam radian. Sudut ini ialah sudut (declination) yang dibuat oleh vektor dari asal ke koordinat (x, y) dengan arah positif paksi x dalam satah koordinat kutub, dan nilai yang dikembalikan adalah antara -pi dan pi (-180 hingga 180 darjah).
Memandangkan sudut dalam sukuan kedua dan ketiga juga boleh diperoleh dengan betul, math.atan2() adalah lebih sesuai daripada math.atan() apabila mempertimbangkan satah koordinat kutub.
Perhatikan bahawa susunan hujah ialah y, x, bukan x, y.
print(math.degrees(math.atan2(0, 1)))
# 0.0
print(math.degrees(math.atan2(1, 1)))
# 45.0
print(math.degrees(math.atan2(1, 0)))
# 90.0
print(math.degrees(math.atan2(1, -1)))
# 135.0
print(math.degrees(math.atan2(0, -1)))
# 180.0
print(math.degrees(math.atan2(-1, -1)))
# -135.0
print(math.degrees(math.atan2(-1, 0)))
# -90.0
print(math.degrees(math.atan2(-1, 1)))
# -45.0
Seperti dalam contoh di atas, arah negatif paksi-x (y ialah sifar dan x ialah negatif) ialah pi (180 darjah), tetapi apabila y ialah sifar negatif, ia ialah -pi (-180 darjah). Berhati-hati jika anda ingin mengendalikan tanda dengan ketat.
print(math.degrees(math.atan2(-0.0, -1)))
# -180.0
Sifar negatif adalah hasil daripada operasi berikut
print(-1 / math.inf)
# -0.0
print(-1.0 * 0.0)
# -0.0
Integer tidak dianggap sebagai sifar negatif.
print(-0.0)
# -0.0
print(-0)
# 0
Walaupun kedua-dua x dan y adalah sifar, hasilnya bergantung pada tanda.
print(math.degrees(math.atan2(0.0, 0.0)))
# 0.0
print(math.degrees(math.atan2(-0.0, 0.0)))
# -0.0
print(math.degrees(math.atan2(-0.0, -0.0)))
# -180.0
print(math.degrees(math.atan2(0.0, -0.0)))
# 180.0
Terdapat contoh lain di mana tanda keputusan berubah bergantung pada sifar negatif, seperti math.atan2() serta math.sin(), math.asin(), math.tan(), dan math.atan() .
print(math.sin(0.0))
# 0.0
print(math.sin(-0.0))
# -0.0
print(math.asin(0.0))
# 0.0
print(math.asin(-0.0))
# -0.0
print(math.tan(0.0))
# 0.0
print(math.tan(-0.0))
# -0.0
print(math.atan(0.0))
# 0.0
print(math.atan(-0.0))
# -0.0
print(math.atan2(0.0, 1.0))
# 0.0
print(math.atan2(-0.0, 1.0))
# -0.0
Ambil perhatian bahawa contoh setakat ini adalah hasil menjalankan program dalam CPython. Ambil perhatian bahawa pelaksanaan atau persekitaran lain mungkin mengendalikan sifar negatif secara berbeza.