Andrise programmeerimisalane WIKI

Matemaatika

Matemaatikafunktsioonid (ümardamine, siinuse leidmine jms.) erinevalt näiteks funktsioonist parseInt ei ole JavaScriptis globaalsed funktsioonid, vaid eritüübilise objekti Math meetoditeks. See tähendab, et ümardusfunktsiooni round saab kasutada vaid läbi matemaatikaobjekti.

var ymardus = Math.round(3.34); // 3

Math puhul ei ole tegu konstruktorfunktsiooniga nagu String või Number, vaid objektiga. Seega pole võimalik luua operaatoriga new uusi Math tüüpi objekte. Proovides seda siiski teha

var minuMath = new Math();

Tagastab interpretaator veateate

TypeError: Math is not a constructor

Küll aga on võimalik objekti, nagu kõiki muid kloonida, kasutades selleks objektide peatükis näidatud funktsiooni copy.

function copy(object) {
    function F() {}
    F.prototype = object;
    return new F();
}
 
var myMath = copy(Math);
myMath.g = 9.81;
alert(myMath.ceil(myMath.g)); // 10
alert(Math.g);  // undefined

Näites lõime objektist Math koopia myMath ja lisasime sellele omaduse g väärtusega 9.81. Seega objekt myMath sai prototüübiahelat pidi enda kasutusse kõik objekti Math meetodid ja omadused ning lisaks veel ühe unikaalse omaduse, mida originaalsel Math objektil pole.

Näidatud viisil Math objekti kloonimine pole siiski eriti mõistlik (ei anna midagi juurde ning muudab programmikoodi loetavust halvemaks) ja on siin ära toodud vaid illustratiivse näitena.

Konstandid

Math objektis on objekti omaduste näol defineeritud mitmed matemaatilised konstandid, mida saab vajadusel matemaatilistes tehetes kasutada.

Math.E

Number Math.E

Konstant e (Euleri arv) on naturaallogaritmi aluseks. Kuigi tegu on irratsionaalarvuga, mis tähendab et selle väärtust ei saa täpselt esitada, on JavaScriptis konstandil siiski lõpliku pikkusega väärtus. Math.E == 2.718281828459045.

Matemaatiliste konstantide numbrilised väärtused siin ja edaspidi on ligikaudsed ning sõltuvad kasutatavast platvormist.

Math.LN10

Number Math.LN10

LN10 on arvu 10 naturaallogaritmi väärtus. Math.LN10 == 2.302585092994046

Math.LN2

Number Math.LN2

LN2 on arvu 2 naturaallogaritmi väärtus. Math.LN2 == 0.6931471805599453

Math.LOG10E

Number Math.LOG10E

LOG10E on arvu e logaritm alusel 10. Math.LOG10E == 0.4342944819032518

Math.LOG2E

Number Math.LOG2E

LOG2E on arvu 2 logaritm alusel 10. Math.LOG2E == 1.4426950408889634

Math.PI

Number Math.PI

PI esitab matemaatilise konstandi π (pii) väärtust. Tegu on ringi ümbermõõdu ja diameetri pikkuse jagatisega. Math.PI == 3.141592653589793

Math.SQRT1_2

Number Math.SQRT1_2

SQRT1_2 tähistab jagatist numbri 1 jagamisel ruutjuurega numbrist 2.

Math.SQRT1_2 = 1/sqrt 2 == 0.7071067811865476

Math.SQRT2

Number Math.SQRT2

Konstant Math.SQRT2 tähistab ruutjuure väärtust arvust 2.

Math.SQRT2 = sqrt 2 == 1.4142135623730951

Meetodid

Objektil Math on terve hulk erinevaid meetodeid, mis aitavad läbi viia vajalikke matemaatilisi tegevusi. Kuigi need matemaatikafunktsioonid on defineeritud objekti Math meetoditena, on tegu siiski täiesti staatiliste funktsioonidega - funktsioonide tööks objekti Math ennast ei kasutata ning selle väärtusi ei muudeta. Math objekti puhul on tegu rohkem eraldi nimeruumi kui objektiga objekti mõistes, erinevad matemaatilise sisuga funktsioonid on kogutud ühte kindlasse konteinerisse kokku.

Math.abs

Number Math.abs(Number väärtus)

Funktsioon Math.abs(nr) tagastab parameetrina saadud numbri absoluutväärtuse. Positiivse numbri korral jääb väärtus samaks, negatiivse numbri korral muudetakse märk positiivseks.

var nr;
nr = Math.abs(30); // 30
nr = Math.abs(-30); // 30

Math.acos

Number Math.abs(Number arv)

Meetod acos tagastab arvu arkuskoosinuse, tegu on koosinuse pöördfunktsiooniga. Tagastusväärtuseks saadud nurk on radiaankujul vahemikus 0..π.

var nurk = Math.acos(cos);

Math.asin

Number Math.abs(Number arv)

Meetod asin tagastab arvu arkussiinuse, tegu on siinuse pöördfunktsiooniga. Tagastusväärtuseks saadud nurk on radiaankujul vahemikus -π/2..π/2.

var nurk = Math.asin(sin);

Math.atan

Number Math.atan(Number arv)

Meetod atan tagastab arvu arkustangensi, tegu on tangensi pöördfunktsiooniga. Tagastusväärtuseks saadud nurk on radiaankujul vahemikus -π/2..π/2.

var nurk = Math.atan(tan);

Math.atan2

Number Math.atan2(Number x, Number y)

Meetod atan2 leiab arkustangensi parameetritest x ja y radiaanides vahemikus -π .. π.

Math.ceil

Number Math.ceil(Number arv)

Meetod ceil ümardab arvu ülemise täisnumbrini.

var nr;
nr = Math.ceil(3.0); // 3
nr = Math.ceil(3.1); // 4

Math.cos

Number Math.cos(Number nurk)

Meetod cos tagastab parameetrina saadud nurga koosinuse, milleks on täisnurkse kolmnurga mittetäisnurkse nurga α lähiskaateti b ning selle täisnurkse kolmnurga hüpotenuusi c pikkuse jagatis.

var cos = Math.cos(nurk);

Funktsioon ootab parameetriks nurga suurust radiaanides. Radiaanid saab teisendada kraadideks konstandi π abil.

var kraadid = radiaanid * (Math.PI/360);

Math.exp

Number Math.exp(Number x)

Meetod exp tagastab väärtuse e astmes x. e^x

Math.E == Math.exp(1)

Math.floor

Number Math.floor(Number arv)

Meetod floor ümardab arvu alumise täisnumbrini. Juhul kui tegu on negatiivse numbriga, ümardatakse number suurima negatiivse väärtuse, mitte nulli poole.

var nr;
nr = Math.floor(3.0); // 3
nr = Math.floor(3.9); // 3
nr = Math.floor(-3.9); // -4

Math.log

Number Math.log(Number x)

Meetod log võtab sisendiks nullist suurema positiivse väärtusega numbri x ning tagastab sellest naturaallogaritmi log_e x.

Läbi naturaallogaritmi saab järgmiste funktsioonidega leida ka kümnendlogaritme ning kahendlogaritme.

var log10 = function(x){
    return Math.LOG10E * Math.log(x);
};
 
var log2 = function(x){
    return Math.LOG2E * Math.log(x);
};

Math.max

Number Math.max(mixed parameetrid)

Meetod max võtab parameetritena suvalise arvu väärtuseid ning tagastab neist suurima. Juhul kui sisendparameetreid pole, on tagastusväärtuseks negatiivse lõpmatuse väärtus -Infinity ning juhul kui mõni sisendparameetritest on NaN või pole teisendatav numbriks, on tagastusväärtuseks NaN.

var nr;
nr = Math.max(3,5,-1); // 5
nr = Math.max(); // -Infinity
nr = Math.max(3,5,"r"); // NaN

Math.min

Number Math.min(mixed parameetrid)

Meetod Math.min võtab parameetritena suvalise arvu väärtuseid ning tagastab neist vähima. Juhul kui sisendparameetreid pole, on tagastusväärtuseks lõpmatuse väärtus Infinity ning juhul kui mõni sisendparameetritest on NaN või pole teisendatav numbriks, on tagastusväärtuseks NaN.

var nr;
nr = Math.min(3,5,-1); // -1
nr = Math.min(); // Infinity
nr = Math.min(3,5,"r"); // NaN

Math.pow

Number Math.pow(Number x, Number y)

Meetod pow tagastab väärtuse x astmes y. Math.pow(x,y) = x^y. Juhul kui avaldise tulemuseks on kompleksarv kujul a+bi, kus i tähistab imaginaarühikut i = sqrt{-1}, tagastab funktsioon eriväärtuse NaN. Seega negatiivse x väärtuse korral peaks y olema positiivne või negatiivne täisarv. Murdarvuline aste tähendab arvust n-astmel juure võtmist, kui y oleks esitatav kujul m/n (m ning n on täisarvud). Seega avaldise x^y saab murdarvulise astme korral lahti kirjutada kujule root{n}{x^m} ning negatiivse arvu x puhul oleks selle avaldise tulemuseks kompleksarv.

var nr;
nr = Math.pow(4, 2); // 16
nr = Math.pow(5, -2); // 0.04 = 1/5^2 = 1/25
nr = Math.pow(-3, -0.5); //NaN, tulemus on kompleksarv

Math.random

Number Math.random()

Meetod random tagastab pseudojuhusliku numbri vahemikus 0..1 kus 0 kuulub hulka, kuid 1 mitte. Pseudojuhuslik tähendab seda, et juhusliku numbri genereerimiseks kasutatakse lõpliku pikkusega nihkeregistrit. Kui tõeliselt juhusliku numbri puhul ei sõltu numbri tulemine mitte kuidagi eelmistest väärtustest, on pseudojuhusliku numbri korral iga järgmise numbri väärtus üheselt määratud eelmiste numbritega. Nihkeregistri sama väärtusega lähtestamise korral (selleks kasutatakse tegelikult hetke aega, mis on pidevas muutumises) oleks numbrite järjestus juhuslike numbrite genreerimisel täpselt sama. Reeglina on pseudojuhuslik number ikkagi tava-programmide jaoks piisavalt juhuslik.

var nr = Math.random(); // 0.00 .. 0.99

Kuna üldiselt on juhuslikku numbrit vaja mingis kindlas vahemikus, saab seda kergelt teha juhusliku numbri korrutamises ülemise piiriga. Sellisel juhul muutub genereeritud juhuslik number omamoodi protsendiks maksimaalsest limiidist. Kuna aga väärtus 1 ei tule juhuslikku numbrit genreerides kunagi välja, tuleb maksimaalse limiidi kaasamiseks liita limiidile väärtus 1 ning võtta saadud numbrist ainult täisosa. Niiviisi on tagatud, et kõik numbrid vastavas vahemikus on võrdselt esinevad.

function juhuslik(limiit){
    var nr = Math.floor(Math.random()*(limiit+1))
}
 
var nr = juhuslik(100); // 0 .. 100

Math.round

Number Math.round(Number arv)

Meetod round ümardab numbri lähima täisarvuni. Alates murdosa väärtusest 0.5 ümardatakse number üles, väiksema väärtuse korral alla.

var nr;
nr = Math.round(4.3); // 4
nr = Math.round(4.5); // 5

Math.sin

Number Math.sin(Number nurk)

Meetod sin tagastab parameetrina saadud nurga siinuse, milleks on täisnurkse kolmnurga mittetäisnurkse nurga α vastaskaateti a ning selle täisnurkse kolmnurga hüpotenuusi c pikkuse jagatis.

var sin = Math.sin(nurk);

Math.sqrt

Number Math.sqrt(Number arv)

Meetod sqrt leiab numbri ruutjuure. Numbri väärtus peab olema positiivne reaalarv või 0. Negatiivse väärtuse korral on tagastusväärtuseks eriväärtus NaN.

var nr
nr = Math.sqrt(4); // 2
nr = Math.sqrt(-4); // NaN

Juhul kui on vaja leida mingit muud juurt peale ruutjuure, saab seda teha funktsiooniga Math.pow, kasutades arvu astmeks murdarvu. Näiteks kuupjuurt arvust x saab leida järgmise avaldisega.

var nr;
nr = Math.pow(x,1/3); //kuupjuur

Math.tan

Number Math.tan(Number nurk)

Meetod Math.tan(nurk) leiab parameetrina saadud nurga tangensi. Tangens on täisnurkse kolmnurga mittetäisnurkse nurga α vastaskaateti a ning lähiskaateti b pikkuse jagatis.

var tan = Math.tan(nurk);

Funktsioon ootab parameetriks nurga suurust radiaanides.