1. Fungsi trigonometri di Jawa
Ketika kami mempelajari angka pembulatan sebelumnya, kami berkenalan dengan Math
kelas dan beberapa metodenya. Sekarang kita akan melihat kelas ini secara lebih rinci.
Sesuai dengan namanya, Math
kelas berisi metode untuk operasi matematika yang paling sering digunakan oleh pemrogram. Inilah yang paling menarik:
metode | Keterangan | |
---|---|---|
|
Mengembalikan sinus sudut d , dalam radian |
|
|
Mengembalikan kosinus sudut d , dalam radian |
|
|
Mengembalikan tangen sudut d , dalam radian |
|
|
Mengembalikan arcsine | |
|
Mengembalikan arccosine | |
|
Mengembalikan arctangen | |
|
Mengembalikan sinus hiperbolik | |
|
Mengembalikan kosinus hiperbolik | |
|
Mengembalikan tangen hiperbolik |
Metode , dan mengambil sudut yang dinyatakan dalam radian. Untuk mengonversi sudut dari derajat ke radian dan sebaliknya, kelas menawarkan dua metode khusus:Math.sin()
Math.cos()
Math.tan()
Math
metode | Keterangan |
---|---|
|
Mengonversi sudut dari derajat ke radian |
|
Mengonversi sudut dari radian ke derajat |
Omong-omong, selain metode, Math
kelas juga memiliki dua variabel konstan (bidang statis kelas):
Konstan | Keterangan |
---|---|
|
Konstanta "Pi" sama dengan3.141592653589793 |
|
Konstanta "E" sama dengan2.718281828459045 |
Semua fungsi ini bisa sangat berguna bagi Anda jika Anda memutuskan untuk membuat game sendiri, bekerja dengan grafik, atau sekadar menghitung panjang jalur di peta.
Misalnya, jika Anda ingin menghitung sin(45°)
, berikut cara melakukannya:
Math.sin( Math.toRadians(45) )
Berikut contohnya:
public class Main
{
public static int N = 10;
public static void drawValue(double y)
{
int value = (int) (y * N) + N;
for (int i = 0; i < 2 * N; i++)
{
char c = i == N ? '|': '.';
if (i == value)
c = '*';
System.out.print(c);
}
System.out.println();
}
public static void main(String[] args)
{
for (int i = 0; i < 10 * N; i++)
{
double x = i * 1.0 / N;
double y = Math.sin(x);
drawValue(y);
}
}
}
2. Fungsi aljabar di Jawa
Dalam kebanyakan kasus, matematika sekolah menengah sudah cukup untuk seorang programmer: bahkan sinus dan cosinus sangat jarang ditemukan dalam kode. Paling sering mereka dibutuhkan saat bekerja dengan game, peta, atau mesin game. 90% programmer tidak pernah menemukan ini.
Namun selain geometri, programmer terkadang harus menggunakan fungsi aljabar. Dan, tentu saja, Math
kelas berisi yang paling umum:
metode | Keterangan |
---|---|
|
akar kuadrat daria |
|
akar kubik daria |
|
eksponensial:ab |
|
eksponensial (bilangan Euler dipangkatkan):ea |
|
logaritma natural dari a :ln(a) |
|
logaritma basis-10 dari a :log10(a) |
|
logaritma natural dari x + 1 :ln(x + 1) |
|
ex-1 |
Jika Anda menginginkan akar kuadrat atau pangkat tiga dari sebuah angka, metode sqrt(a)
dan cbrt(a)
siap melayani Anda.
Akar kuadrat dapat dihitung sebagai berikut:
Math.sqrt(2)
Jika Anda ingin mendapatkan akar pangkat yang lebih tinggi, gunakan metode eksponensial: a
pangkat dari ¼
adalah akar keempat, dll.
Math.pow(2, 0.25)
Untuk logaritma dan eksponen, ada metode log(a)
(logaritma natural) dan exp(x)
(eksponensial). Untuk menghitung logaritma basis-10, kita memiliki log10(a)
.
Jika Anda ingin logaritma angka b
menjadi base a
, gunakan rumus sederhana ini:loga(b) = ln(b) / ln(a)
Metode yang berguna
Jika Anda melakukan perhitungan yang melibatkan nilai yang sangat kecil dari x
, maka dua fungsi terakhir — log1p()
dan expm1()
— mungkin berguna bagi Anda.
Saat menambahkan variabel yang sangat kecil dan sangat besar double
, Anda akan sering menemukan bahwa nilai yang sangat kecil diabaikan begitu saja (dibuang) sebagai tidak signifikan. Sebenarnya, ini akan terjadi jika Anda menggunakan metode log()
and exp()
. Untuk mengatasi ini, pemrogram membuat fungsi yang hanya mengembalikan "bagian penting kecil"
Contoh:
Misalkan Anda ingin menghitung logaritma natural dari 1 + x
, x
Dimana . Anda tidak bisa begitu saja meneruskan nomor ini ke metode, karena jika Anda menambahkan dan , Anda mendapatkan . adalah angka yang sangat kecil sehingga akan dibuang sama sekali saat angka ditambahkan.10-20
log()
1
10-20
1
10-20
Karena matematika sering melibatkan penghitungan log()
angka yang mendekati 1
, pemrogram menemukan cara untuk mengatasi masalah ini: alih-alih meneruskan angka itu sendiri ke metode, hanya meneruskan selisihnya dari 1
.
3. Minimal dan maksimal
Dua fungsi yang lebih berguna adalah min(a, b)
dan max(a, b)
. Seperti yang mungkin sudah Anda duga, yang pertama mengembalikan minimal dua angka:
Math.min(a, b)
Dan yang kedua mengembalikan maksimal dua angka:
Math.max(a, b)
Mengapa kita memerlukan fungsi-fungsi ini ketika Anda selalu dapat menulis if
atau bahkan menggunakan operator ternary (a < b ? a: b)
?
Ini semua tentang keterbacaan kode. Terkadang kode Anda dipenuhi dengan if
pernyataan dan Anda ingin menggunakan notasi yang lebih ringkas. Mari kita bandingkan:
Kode | Keterangan |
---|---|
|
Menggunakan if-else pernyataan (cara terpanjang untuk menulisnya) |
|
Menggunakan operator ternary Cons: - kode besar - perhitungan dilakukan dua kali |
|
Ini adalah cara yang bagus untuk menulisnya, tetapi sedikit berlebihan |
|
Tepat 🙂 |
4. Minimal dan maksimal beberapa angka
Ada cara hebat lainnya untuk menggunakan metode min()
and max()
.
Untuk menghitung minimum (atau maksimum) dari beberapa angka atau variabel. Sangat nyaman untuk membuat panggilan bersarang ke metode ini.
Berikut cara mencari minimal 3 angka:
Math.min(a, Math.min(b, c))
Terus? Ini sangat mudah: hitung minimal dua angka, lalu kembalikan minimal angka ini dan angka ketiga.
Minimal empat angka diperoleh dengan cara yang sama:
Math.min(a, Math.min(b, Math.min(с, d)))
Yang mengatakan, kita dapat menulis rumus ini sedikit lebih jelas:
Math.min(Math.min(a, b), Math.min(c, d))
Semuanya bekerja sama untuk max()
metode ini.
Menggunakan if-else
operator atau operator ternary akan membuat cuplikan kode ini sedikit lebih rumit. Tetapi menggunakan metode min()
dan max()
itu sempurna.
GO TO FULL VERSION