1. Fungsi trigonometri ing basa Jawa

Nalika kita sinau pembulatan angka sadurungé, kita kenal karo Mathkelas lan sawetara cara. Saiki kita bakal nliti kelas iki kanthi luwih rinci.

Minangka jeneng kasebut, Mathkelas kasebut ngemot metode kanggo operasi matematika sing paling kerep digunakake dening programer. Ing ngisor iki sing paling menarik:

Metode Katrangan
double sin(double d)
Ngasilake sinus sudut d, ing radian
double cos(double d)
Ngasilake kosinus sudut d, ing radian
double tan(double d)
Ngasilake tangen saka sudut d, ing radian
double asin(double d)
Ngasilake arcsine
double acos(double d)
Ngasilake arccosine
double atan(double d)
Ngasilake arctangent
double sinh(double d)
Ngasilake sinus hiperbolik
double cosh(double d)
Ngasilake kosinus hiperbolik
double tanh(double d)
Ngasilake tangen hiperbolik

Ing , lan cara njupuk amba ditulis ing radians. Kanggo ngowahi sudut saka derajat dadi radian lan kosok balene, kelas kasebut nawakake rong cara khusus:Math.sin()Math.cos()Math.tan()Math

Metode Katrangan
double toRadians(double angdeg)
Ngonversi sudut saka derajat menyang radian
double toDegrees(double angrad)
Ngonversi sudut saka radian dadi derajat

Miturut cara, saliyane metode, Mathkelas uga duwe rong variabel konstan (bidang statis kelas):

pancet Katrangan
double Math.PI
Konstanta "Pi" padha karo3.141592653589793
double Math.E
Konstanta "E" padha karo2.718281828459045

Kabeh fungsi kasebut bisa migunani banget kanggo sampeyan yen sampeyan arep nulis game dhewe, nggarap grafis, utawa mung ngetung dawa dalan ing peta.

Contone, yen sampeyan pengin ngetung sin(45°), iki cara sampeyan nindakake:

Math.sin( Math.toRadians(45) )

Iki contone:

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 ing basa Jawa

Ing sawetara kasus, matematika SMA cukup kanggo programmer: malah sinus lan cosinus arang banget ditemokake ing kode. Paling asring dibutuhake nalika nggarap game, peta utawa mesin game. 90% programer ora tau nemoni iki.

Nanging saliyane geometri, programer kadhangkala kudu nggunakake fungsi aljabar. Lan, mesthi, Mathkelas kasebut ngemot sing paling umum:

Metode Katrangan
double sqrt(double a)
werna kuadrat sakaa
double cbrt(double a)
ROOT kubik sakaa
double pow(double a, double b)
eksponensial:ab
double exp(double a)
eksponensial (angka Euler diunggahake dadi daya):ea
double log(double a)
logaritma alam saka a:ln(a)
double log10(double a)
logaritma basis-10 saka a:log10(a)
double log1p(double x)
logaritma alam saka x + 1:ln(x + 1)
double expm1(double x)
ex-1

Yen sampeyan pengin kothak utawa kubus ROOT saka nomer, sqrt(a)lan cbrt(a)cara ana ing layanan sampeyan.

Root kuadrat bisa diitung kaya ing ngisor iki:

Math.sqrt(2)

Yen sampeyan pengin entuk oyod saka kekuwatan sing luwih dhuwur, banjur gunakake metode eksponensial: akanggo kekuwatan ¼yaiku akar kaping papat, lsp.

Math.pow(2, 0.25)

Kanggo logaritma lan eksponen, ana metode log(a)(logaritma alami) lan exp(x)(eksponensial). Kanggo ngetung logaritma basis-10, kita duwe log10(a).

Yen sampeyan pengin logaritma nomer bdadi basis a, gunakake rumus prasaja iki:loga(b) = ln(b) / ln(a)

Cara sing migunani

Yen sampeyan nindakake petungan sing nglibatake nilai cilik saka x, banjur rong fungsi pungkasan — log1p()lan expm1()— bisa migunani kanggo sampeyan.

Nalika nambahake variabel sing cilik banget lan gedhe banget double, sampeyan bakal kerep nemokake yen nilai sing cilik banget mung diabaikan (dibuwang) minangka ora pati penting. Nyatane, iki bakal kedadeyan yen sampeyan nggunakake metode log()lan exp(). Kanggo ngatasi masalah iki, programer nggawe fungsi sing mung ngasilake "bagean penting cilik"

Tuladha:

Upaminipun sampeyan pengin ngetung logaritma alam saka 1 + x, ngendi xiku . Sampeyan ora bisa mung pass nomer iki kanggo cara, wiwit yen sampeyan nambah lan , sampeyan njaluk . iku nomer cilik sing bakal rampung dibuwak nalika nomer sing ditambahake.10-20log()110-20110-20

Amarga matématika asring ngetung log()angka sing cedhak karo 1, programer teka karo cara kanggo ngatasi masalah iki: tinimbang ngirim nomer kasebut menyang metode kasebut, mung ngliwati prabédan saka 1.



3. Minimal lan maksimal

Loro fungsi liyane migunani yaiku min(a, b)lan max(a, b). Kaya sing wis sampeyan duga, sing pertama ngasilake minimal rong nomer:

Math.min(a, b)

Lan nomer loro ngasilake maksimal rong nomer:

Math.max(a, b)

Napa kita butuh fungsi kasebut nalika sampeyan bisa nulis ifutawa nggunakake operator ternary (a < b ? a: b)?

Iku kabeh babagan maca kode. Kadhangkala kode sampeyan kakehan karo ifpernyataan lan sampeyan pengin nggunakake notasi sing luwih kompak. Ayo mbandhingake:

Kode Katrangan
int x = 0;
if (x-5+y*20 < x*x+y*y)
   x = x-5+y*20;
else
   x = x*x+y*y;
Nggunakake if-elsestatement (cara paling dawa kanggo nulis)
int x = x-5+y*20 < x*x+y*y ? x-5+y*20 : x*x+y*y;
Nggunakake operator ternary Cons:
- kode gedhe banget
- petungan dileksanakake kaping pindho
int a = x-5+y*20;
int b = x*x+y*y;
int x = a < b ? a : b;
Iki cara sing apik kanggo nulis, nanging rada keluwih
int x = Math.min(x-5+y*20, x*x+y*y);
Bener wae 🙂

4. Minimal lan maksimal sawetara nomer

Ana cara liyane sing apik kanggo nggunakake min()lan max()metode.

Kanggo ngetung minimal (utawa maksimum) sawetara nomer utawa variabel. Iku trep banget kanggo nelpon nested kanggo cara iki.

Mangkene carane nemokake minimal 3 nomer:

Math.min(a, Math.min(b, c))

Dadi apa? Iku super trep: ngetung minimal rong nomer, banjur bali minimal nomer iki lan nomer katelu.

Minimal papat nomer dijupuk kanthi cara sing padha:

Math.min(a, Math.min(b, Math.min(с, d)))

Sing jarene, kita bisa nulis rumus iki kanthi luwih cetha:

Math.min(Math.min(a, b), Math.min(c, d))

Kabeh padha dianggo kanggo max()cara.

Nggunakake if-elseoperator utawa operator ternary bakal nggawe potongan kode iki rada rumit. Nanging nggunakake min()lan max()cara mung sampurna.