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 =
== 0.7071067811865476
Math.SQRT2
Number Math.SQRT2
Konstant Math.SQRT2 tähistab ruutjuure väärtust arvust 2.
Math.SQRT2 =
== 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.
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
.
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) =
. Juhul kui avaldise tulemuseks on kompleksarv kujul a+bi, kus i tähistab imaginaarühikut i =
, 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 ning n on täisarvud). Seega avaldise
saab murdarvulise astme korral lahti kirjutada kujule
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.
Käidud rada: • whois • numbrid • objektid • advanced • stringid • massiivid • script_tag • nimeruumid • operaatorid • matemaatika