Anterior: método JavaScript tan ()
Seguinte: JavaScript sin () Método
JavaScript Object Math
Retorna a raiz quadrada de um número:
Math.sqrt(9);
saída:
3
tente »
Definição e Uso
sqrt () retorna a raiz quadrada de um número.
Suporte a navegadores
Todos os principais navegadores suportam sqrt () Método
gramática
parâmetro Valor
Valor de retorno
Number/NaN | 参数 x 的平方根。如果 x 小于 0,则返回 NaN。 |
detalhes técnicos
mais exemplos
Neste caso, vamos voltar à raiz quadrada das diferentes figuras:
var a=Math.sqrt(0); var b=Math.sqrt(1); var c=Math.sqrt(9); var d=Math.sqrt(64);
var e=Math.sqrt(-9);
a, b, c, d, e e de saída:
tente »
JavaScript Object Math
Anterior: método JavaScript tan ()
Seguinte: JavaScript sin () Método
Nós usamos nossos próprios cookies e cookies de terceiros para atividades de marketing e para lhe proporcionar uma melhor experiência. Leia sobre como usamos cookies e como você pode controlá-los, clicando em Preferências.
Neste tutorial de JavaScript, vamos aprender como trabalhar com Matemática usando o objeto nativo Math, da linguagem, que fornece diversos métodos para cálculos matemáticos.
- Estudar offline pela Apostila de JavaScript
Bom, vamos lá.
Primeiro vamos estudar a square root, que significa raiz quadrada.
Para saber a raiz quadrada de qualquer número, basta usar o método sqrt() do objeto Math, que recebe um número como parâmetro e retorna um número também.
Ou seja:
Math.sqrt(16) = 4
Math.sqrt(25) = 5
Math.sqrt(2112) = 45.95650117230423
Ou seja, se o resultado for inteiro, ele mostra o inteiro.
Se for 'quebrado', ele mostra o float correspondente.
Bem simples calcular raiz quadrada, não ?
Para calcular um número x elevado a y, basta fazer:
Math.pow(x,y)
E vale tanto para números inteiros como decimais.
Por exemplo:
Math.pow( 2, 7 ) = 128
Math.pow( 9, 0.5 ) = 3.0
Para calcular o seno de um número x em radianos, use:
Math.sin(x)
Por exemplo:
Math.sin(0) = 0
Math.sin(0.523599) = 0.500 (0,523599 radianos valem 30 graus).
Math.sin(1.5708) = 0.99999 (seno de 90 graus)
Já para calcularmos o cosseno, fazemos:
Math.cos(x)
Por exemplo:
Math.cos(0) = 1
Math.cos(1.0472) = 0.49999 (1.0472 radianos valem 60 graus)
Math.cos(1.5708) = 0.0000
Já para calcularmos a tangente de x (em radianos), fazemos:
Math.tan(x)
Por exemplo:
Math.tan(0) = 0
Math.tan(0.785398) = 0.49999 (0.785398 equivale a 45 graus)
Exponencial de um valor x é o mesmo que: e^x
(ou seja, e elevado a x).
Para calcular em JavaScript, faça: Math.exp(x)
Por exemplo:
Math.exp( 1 ) = 2.71828
Math.exp( 2 ) = 7.38906
Para calcular o logaritmo natural, na base e, faça:
Math.log(x)
Veja bem, não é o logaritmo comum. É o ln X, logaritmo na base natural e.
Por exemplo:
Math.log( 2.718282 ) = 1
Math.log( 7.389056 ) = 2
Outros métodos muito usados do objeto Math, são as funções de arredondar.
Para arredondar um número para cima, fazemos:
Math.ceil(x)
Ele vai arredondar para o menor valor inteiro, que não é menor que x.
Por exemplo:
Math.ceil( 21.12 ) = 22
Math.ceil( -8.8 ) = -8
Para arredondar para baixo, usamos:
Math.floor(x)
Ele vai arredondar para o maior valor, maior que x.
Por exemplo:
Math.floor( 21.12 ) = 21
Math.floor( - 8.8 ) = -9
Já para arredondar para o inteiro mais próximo, não importante se é pra mais ou pra menos, use:
Math.round(x)
Por exemplo:
Math.round( 8.75 ) = 9
Math.round( 21.12 ) = 21
O que o JavaScript faz se você tentar arredondar um número que está a igual distância do maior e menor inteiro mais próximo, por exemplo: 1.5 ? Teste e descubra!
Para calcular o valor máximo entre os números x e y, use:
Math.max(x,y)
Por exemplo:
Math.max( 2.1, 1.2 ) = 2.1
Math.max( -21, -12) = -12
Já para calcular o menor valor entre os números x e y, faça:
Math.min(x,y)
Por exemplo:
Math.min( 2.1, 1.2 ) = 1.2
Math.min( -21, -12 ) = -21
Para calcular o valor absoluto de um número (ou seja, sua distância até o ponto 0 do plano cartesiano), também conhecido por módulo, faça:
Math.abs(x)
Por exemplo:
Math.abs(21) = 21
Math.abs(-12) = 12
Constantes Matemáticas
Outra importante ferramenta que o Objeto Math nativo do JavaScript nos proporciona, é a possibilidade de se trabalhar com as principais contantes da Matemática, vejamos algumas.
- Math.E - Base do logaritmo natural; vale aproximadamente 2.718
- Math.LN2 - Logaritmo natural de 2 ; vale aproximadamente 0.693
- Math.LN10 - Logaritmo natural de 10 ; vale aproximadamente 2.302
- Math.LOG2E - Logaritmo de e na base 2 ; vale aproximadamente 1.442
- Math.LOG10E - Logaritmo de e na base 10 ; vale aproximadamente 0.434
- Math.PI - A constante pi (razão do comprimento pelo diâmetro de um círculo) ; 3.141592653589793
- Math.SQRT1_2 - Raiz quadrada de 0.5 ; vale aproximadamente 0.707
- Math.SQRT2 - Raiz quadrada de 2 ; vale aproximadamente 1.414
Existe uma aproximação rápida de raiz quadrada através de uma equação linear:
L(x) = f(a) + f'(a)*(x-a)Para um dado valor a em que a função tenha um valor conhecido e f'(_) sendo a derivada da função. Por coincidência, a derivada da raiz quadrada é a metade do inverso da raiz quadrada.
O valor da raiz quadrada é plenamente conhecida em quadrados perfeitos, logo, vamos tratar a como sendo um quadrado perfeito, e f(a) sua raiz inteira.
Logo, a fórmula da aproximação pode ser transformada assim:
(x-a) sqrt_approx(x) = sqrt_int(a) + ------------- 2*sqrt_int(a)Para a aproximação dar certo, preciso escolher um a próximo o suficiente de x.
Assim, nosso algoritmo agora se resume a:
- achar a quadrado perfeito (e sua raiz inteira sqrt_int(a)) o mais próximo de x
- aplicar a fórmula
A grosso modo, seria isso:
function sqrt_approx(x) { let sqrt_a = raiz_do_quadrado_mais_proximo(x); let a = sqrt_a * sqrt_a; // se x for um quadrado perfeito, x-a resultará em zero e a resposta será sqrt_a return sqrt_a + (x-a)/(2*sqrt_a); }Ótimo, agora só falta definir quem é o quadrado mais próximo de x. Como estamos lidando com números reais, não faz sentido investigar raízes de números negativos, logo vou reduzir o conjunto de busca apenas para os positivos. A ideia é bem simples: itero de 0 a infinito, verificando a distância do quadrado da variável de iteração para o x. No momento em que houver uma inflexão (ie, a distância deixar de ser negativa e passar a ser positiva), retorno ou o elemento atual da iteração ou o elemento anterior, de acordo com o quadrado mais próximo de x:
function raiz_do_quadrado_mais_proximo(x) { let i = 0; while (true) { let ii = i * i; if (ii - x > 0) { let dist_ii = x - ii; let dist_ant = x - (i-1)*(i-1); if (dist_ii < 0) { dist_ii *= -1; } if (dist_ant < 0) { dist_ant *= -1; } return dist_ant < dist_ii? i-1: i; } } }O código acima pode ser otimizado trivialmente para:
function raiz_do_quadrado_mais_proximo(x) { let i = 0; while (i*i < x) { // itera até a inflexão i++; } let dist_ii = i*i - x; // i*i >= x garantido, depois da inflexão, daí dist_ii está sendo calculado já positivo let dist_ant = x - (i-1)*(i-1); // antes da inflexão, x será maior que o quadrado, daí dist_ant está sendo calculado já positivo return dist_ant < dist_ii? i-1: i; }Juntando tudo, temos:
function faz_leitura(form) { let x = Number(document.getElementById("quad").value); let raiz_apprx = sqrt_approx(x); let err = x - (raiz_apprx * raiz_apprx); if (err < 0) { err = -err; } document.write("<div>Raiz quadrada aproimada de " + x + " é " + raiz_apprx + ", com erro de " + err + "</div>"); } function raiz_do_quadrado_mais_proximo(x) { let i = 0; while (i*i < x) { i++; } let dist_ii = i*i - x; let dist_ant = x - (i-1)*(i-1); return dist_ant < dist_ii? i-1: i; } function sqrt_approx(x) { let sqrt_a = raiz_do_quadrado_mais_proximo(x); let a = sqrt_a * sqrt_a; // se x for um quadrado perfeito, x-a resultará em zero e a resposta será sqrt_a return sqrt_a + (x-a)/(2*sqrt_a); } <form onsubmit="faz_leitura(this); return false;"> <div> <input required type="text" id="quad"/> <label>valor a ser calculada a raiz</label> </div> <button type="submit">SQRT</button> </form>