Como calcular raiz quadrada em javascript

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.

  1. Math.E - Base do logaritmo natural; vale aproximadamente 2.718
  2. Math.LN2 - Logaritmo natural de 2 ; vale aproximadamente 0.693
  3. Math.LN10 - Logaritmo natural de 10 ; vale aproximadamente 2.302
  4. Math.LOG2E - Logaritmo de e na base 2 ; vale aproximadamente 1.442
  5. Math.LOG10E - Logaritmo de e na base 10 ; vale aproximadamente 0.434
  6. Math.PI - A constante pi (razão do comprimento pelo diâmetro de um círculo) ; 3.141592653589793
  7. Math.SQRT1_2 - Raiz quadrada de 0.5 ; vale aproximadamente 0.707
  8. 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:

  1. achar a quadrado perfeito (e sua raiz inteira sqrt_int(a)) o mais próximo de x
  2. 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>

Última postagem

Tag