Pular para o conteúdo

Raiz enésima em código

Escapes Unicode, LaTeX e a fórmula real x^(1/n) em JavaScript, Python, Excel e meia dúzia de outras linguagens — incluindo por que índices ímpares e pares se comportam de forma completamente diferente em números negativos.

Ou gere seu símbolo exato agora →

Escapes Unicode e entidades HTML

A raiz 4ª, ∜, é o ponto de código Unicode U+221C e se encaixa em um literal de string como qualquer outro escape. Todo outro índice precisa ser construído a partir de dois escapes: um dígito sobrescrito seguido por U+221A, o radical base.

JavaScript / TypeScript (raiz 4ª)
"\u221C" // ∜
Python (raiz 4ª)
"\u221c"  # ∜
JavaScript / TypeScript (raiz 5ª, composta)
"\u2075\u221A" // ⁵√
HTML (raiz 4ª)
∜ (sem entidade nomeada)
CSS (raiz 4ª)
content: "\221C";

LaTeX

\sqrt renderiza um radical adequado com uma barra sobre seu argumento em LaTeX, MathJax e KaTeX — o valor entre colchetes é o que define o índice, seja um número literal ou a letra n.

LaTeX — raiz enésima (índice variável)
\sqrt[n]{x}
LaTeX — raiz 5ª
\sqrt[5]{x}
LaTeX — raiz cúbica, para comparação
\sqrt[3]{x}

Calculando uma raiz enésima em código

Diferente da raiz quadrada ou cúbica, nenhuma linguagem popular vem com uma função dedicada de «raiz enésima» — todas essas calculam elevando x à potência de 1/n. Aqui está a sintaxe de cada linguagem para a raiz 5ª de 32.

JavaScript
Math.pow(32, 1 / 5);
// 2
Math.pow(-243, 1 / 5);
// NaN — mesmo a resposta real sendo -3, veja as pegadinhas
Python
32 ** (1/5)
# 2.0
(-243) ** (1/5)
# complexo! veja as pegadinhas abaixo
Excel / Google Sheets
=A1^(1/B1)
=SIGN(A1)*ABS(A1)^(1/B1)  // seguro para A1 negativo, B1 ímpar
Java
Math.pow(32, 1.0 / 5);
// 2.0
C / C++
#include <math.h>
pow(32, 1.0 / 5);
// 2
PHP
pow(32, 1 / 5);
// 2
PostgreSQL
SELECT POWER(32, 1.0/5);
-- 2
Swift
import Foundation
pow(32.0, 1.0 / 5.0)
// 2.0
R
32 ^ (1/5)
# 2

Pegadinhas que vale a pena conhecer

Índice ímpar vs. par muda se números negativos sequer têm uma resposta real

A raiz 5ª de -243 é um número real, -3, da mesma forma que funcionam as raízes cúbicas de números negativos — qualquer índice ímpar funciona assim. A raiz 4ª de -16 não é um número real de forma alguma, da mesma forma que as raízes quadradas de números negativos não são — qualquer índice par se comporta assim. Se x^(1/n) sequer faz sentido para um x negativo depende inteiramente de n ser ímpar ou par, antes mesmo de chegar em como uma linguagem específica implementa isso.

Funções genéricas de potência erram bases negativas mesmo quando existe uma resposta real

Math.pow(-243, 1/5) retorna NaN em JavaScript, mesmo a resposta matematicamente correta sendo -3 — Math.pow() calcula expoentes fracionários usando logaritmos, que não são definidos para bases negativas, então ele não consegue distinguir um índice ímpar de um par. O (-243) ** (1/5) do Python retorna um número complexo em vez de -3, pelo mesmo motivo de fundo. Nenhuma das duas linguagens tem uma função dedicada de «raiz enésima» como o JavaScript tem Math.cbrt() especificamente para raiz cúbica — você precisa escrever um auxiliar que verifica se n é ímpar, ou se restringir a entradas não negativas.

Um auxiliar seguro de raiz enésima precisa ramificar pelo sinal e pela paridade

Uma versão confiável se parece com: se x é negativo, só calcule um resultado real quando n é ímpar, e nesse caso pegue a raiz enésima do valor absoluto e reaplique o sinal negativo — Math.sign(x) * Math.abs(x) ** (1/n) em JavaScript, ou math.copysign(abs(x) ** (1/n), x) em Python. Para x negativo com n par, não existe resultado real para retornar — decida com antecedência se seu código deve lançar um erro, retornar NaN, ou retornar um valor complexo.

Excel e Google Sheets não têm função NTHROOT

Não existe uma fórmula dedicada em nenhum dos dois. =A1^(1/B1) funciona sempre que o resultado deveria ser real e não vindo de entrada negativa, mas retorna um erro #NÚM! para um A1 negativo combinado com certos valores de B1. =SIGN(A1)*ABS(A1)^(1/B1) corrige o caso em que B1 é ímpar; ainda assim não vai produzir um resultado real quando B1 é par e A1 é negativo, porque nenhum existe.

A precisão de ponto flutuante piora com índices maiores

32 ** (1/5) pode resultar em 1.9999999999999998 em vez de exatamente 2 em algumas linguagens, e essa diferença tende a crescer com índices maiores, já que o próprio 1/n costuma ser uma fração binária imprecisa. Arredonde antes de comparar um resultado de raiz enésima por igualdade exata, a mesma cautela que se aplica a raízes quadradas, mas um pouco mais acentuada.

Só precisa do símbolo em si?

A página de formatos para copiar tem todas as versões prontas para colar — o caractere dedicado de raiz 4ª, símbolos compostos de índice maior, e a fórmula de planilha — sem precisar de editor de código.

Abrir formatos para copiar

Perguntas frequentes

Qual é o escape Unicode para um símbolo de raiz enésima em código?

Para a raiz 4ª especificamente, use \u221C (JavaScript, Java, C#) ou \u221c (Python) — ambos resultam em ∜. Para qualquer outro índice, concatene um escape de dígito sobrescrito com \u221A (o radical base): \u2075\u221A produz ⁵√ em JavaScript, por exemplo.

Como calculo uma raiz enésima em JavaScript?

Use Math.pow(x, 1 / n) — por exemplo, Math.pow(32, 1/5) retorna 2. Isso funciona bem para x não negativo. Para um x negativo com n ímpar, Math.pow() retorna NaN incorretamente, mesmo existindo uma resposta real; você precisa de um auxiliar que verifica o sinal e a paridade de n primeiro (veja as pegadinhas abaixo).

Como calculo uma raiz enésima em Python?

Para números não negativos, x ** (1/n) ou math.pow(x, 1/n) funcionam, por exemplo 32 ** (1/5) retorna 2.0. Para um x negativo, x ** (1/n) retorna um número complexo em vez de um real, mesmo quando n é ímpar e existe uma resposta real — use math.copysign(abs(x) ** (1/n), x) para obter um resultado real nesse caso.

Qual é a fórmula do Excel ou Google Sheets para uma raiz enésima?

Nenhum dos dois tem uma função NTHROOT integrada. Use =A1^(1/B1), com o índice em B1. Se A1 pode ser negativo e B1 é ímpar, use =SIGN(A1)*ABS(A1)^(1/B1) — uma fórmula de potência simples dá erro com uma base negativa nos outros casos.

Qual é o comando LaTeX para uma raiz enésima?

\sqrt[n]{x} para um índice variável, ou substitua n por um número específico — \sqrt[5]{x} para uma raiz 5ª, \sqrt[12]{x} para uma 12ª. Removendo o argumento entre colchetes por completo, \sqrt{x} renderiza uma raiz quadrada simples. Funciona em LaTeX, MathJax e KaTeX.

Por que Math.pow(-243, 1/5) retorna NaN em vez de -3?

Math.pow() (e o equivalente na maioria das linguagens da família C) calcula expoentes fracionários usando logaritmos, que não são definidos para uma base negativa, independentemente de o índice ser ímpar ou par — então ele retorna NaN de forma geral, em vez de reconhecer que uma raiz de índice ímpar de um número negativo é um valor real bem definido. Funções dedicadas de raiz cúbica como Math.cbrt() tratam isso corretamente porque são implementadas separadamente para esse índice específico e comum; não existe equivalente integrado para uma raiz enésima arbitrária.