Como é a exponenciação raiz quadrada nos algoritimos

Exercicios Fluxograma em DuplaDaniel da FonsecaJose JordaoEXERCÍCIOS8.5Represente com um fuxograma o algoritmo do cálculo da raiz quadrada ilustrado durante asaulas.

Todo mundo já usou operadores aritméticos na escola! Nos primeiros anos de estudo aprendemos a fazer continhas de soma, subtração, multiplicação e divisão. Em algoritmos eles também são simples e têm a mesma simbologia em todas as linguagens de programação ( +, -, * e / ).

Além desses mais simples, dois outros operadores aritméticos não recebem muita atenção e pode ser que você não os conhece, eles são o div e o mod, que resultam, respectivamente, o quociente (a parte inteira do resultado da divisão) e o resto da divisão. Observe as operações abaixo:

14 / 4 = 3,5

14 div 4 = 3

14 mod 4 = 2

O operador mod em muitas linguagens de programação (java por exemplo) é representado pelo símbolo “%“, assim:

14 % 4 = 2

Como é a exponenciação raiz quadrada nos algoritimos

Um outro operador aritmético que existe em algumas linguagens de programação é o ^ e executa a operação de potência, mas geralmente essa operação é realizada através de uma função chamada pow, bem como a operação de radiciação (função sqrt). Veja um exemplo do operador ^:

^ 5 = 32 (dois elevado a cinco)

Operadores aritméticos de radiciação também são fornecidos por algumas linguagens de programação, mas esses são bem mais raros. O Postgres por exemplo oferece os símbolos |/ e ||/ para operações de raiz quadrada e raiz cúbica, respectivamente.

Precedência entre os operadores aritméticos

Da mesma forma que na matemática, os operadores de multiplicação e divisão têm precedência de execução em relação aos operadores de soma e subtração. Aliás se tiver parênteses na expressão estes têm precedência ainda maior. A tabela abaixo indica a precedência dos operadores.

PrioridadeOperadores
Parênteses internos
potência (^) e raiz (quando a linguagem oferece esses operadores)
* / div e mod
+ e -

Os operadores de mesma prioridade são interpretados da esquerda para a direita. Para exemplificar essa questão de precedência, observe a expressão:

5 + 3 * ( 3 – 1 ) – 2 ^ 5 / 4 – 1

O computador executa o cálculo na seguinte sequência:

5 + 3 * 2 - 2 ^ 5 / 4 – 1

5 + 3 * 2 - 32 / 4 – 1

5 + 6 - 32 / 4 – 1

5 + 6 - 8 – 1

11 - 8 - 1

3 – 1

2

Os operadores aritméticos realmente todo mundo deve saber desde criança, mas para criarmos algoritmos é muito importante conhecermos mais detalhes, como o operador mod ou a ordem de precedência de cada um. Ainda assim, um dia você pode ser surpreendido com um resultado que você não esperava de uma expressão.

Este artigo apresenta conceitos e código de demonstração de um  programa escrito em linguagem C++ que calcula e exibe no ecrã de forma iterativa o resultado de uma raiz enésima com base e índice informados para o cálculo.

Introdução

Um facto a ser considerado é que as ciências relacionadas a Matemática e a Computação andam juntas. Neste sentido, vem a mente como soluções matemáticas simples são implementadas na arquitetura de um computador. A questão não se refere a soluções relacionadas a parte eletrônica do computador, mas como são realizadas tais operações a luz da base Matemática.

As operações básicas de adição, subtração, multiplicação e divisão são de fácil dedução a partir de seus algoritmos funcionais que são ensinados nas escolas, aprende-se a realizar essas operações a partir de diversos e sucessivos exercícios para fixá-los, desde o nível aritmético até o nível algébrico.

No estudo da álgebra é feito o contacto com equações, inequações, exponenciações, radiciações e diversas outras ferramentas e elementos matemáticos.

A operação de exponenciação é facilmente percebida a partir de um algoritmo iterativo de multiplicação sucessiva da base em relação ao número de vezes indicado no índice definido, facilmente aplicado em um programa de computador. No entanto, a operação de radiciação iterativa não se mostra tão simples.

A partir do interesse sobre tal operação veio uma longa pesquisa sobre este facto, onde alguns professores da área Matemática não souberam responder sobre a existência de tal algoritmo e parte dos interpelados até criticaram jocosamente tal curiosidade e demonstraram estarem ofendidos.

Dentre as diversas fontes pesquisadas uma trouxe resposta clara a questão. Um livro intitulado Manual de Fórmulas Técnicas do autor Kurt Gieck publicado no Brasil pela editora Hemus e em Portugal pela editora Dinalivro em seu primeiro volume.

Fundamentação Matemática

A solução de uma raiz enésima (ou n-ésima) pode ser obtida a partir da exponenciação da base elevando-se esta ao valor inverso do índice de radiciação como apresentado na Figura 1.

Como é a exponenciação raiz quadrada nos algoritimos
Figura 1

No entanto, o que mostra a Figura 1 não é a fórmula pretendida, pois a solução iterativa do cálculo ocorre a partir do exposto junto a Figura 2.

Como é a exponenciação raiz quadrada nos algoritimos
Figura 2

A equação indicada na Figura 2 caracteriza-se a partir da definição dos valores da base (b), do índice (n) e de x0 como resultado sucessivo inicialmente definido com valor 1 para obter iterativamente o resultado de x.

A partir deste estágio pega-se o valor da incógnita x e efetua-se a substituição na equação junto ao valor da incógnita x0 e calcula-se um novo valor para a incógnita x. A partir deste passo efetua-se a repetição da substituição do novo valor da incógnita x pelo valor da incógnita x0 até que os valores das incógnitas x e x0 sejam iguais quando se terá o resultado efetivo da raiz calculada.

O Programa

O código C++ seguinte aplica o algoritmo apresentado com o uso do cálculo iterativo de raiz enésima.

#include <iostream> #include <iomanip> #include <cmath> using namespace std; int main(void) {   char LETRA;   double B, N, X, XZero;   cout << setprecision(16);   cout << setiosflags(ios::fixed);   cout << endl;   cout << "Informe a base ...: ";   cin >> B;   cout << "Informe o indice .: ";   cin >> N;   X = 1;   do     {       XZero = X;       X = (1/N) * ((N-1) * XZero +         (B / pow(XZero, N-1)));     }   while (X != XZero);   cout << "Resultado ........: ";   cout << setw(16) << X << endl;   return 0; }

Considerando o cálculo da raiz quadrada de base 5 ter-se-á calculado o resultado da raiz como: 2.2360679774997898.

Conclusão

O encontro da equação para cálculo de raiz enésima publicado pelo autor Gieck trouxe luz a questão de uma maneira impar, além de ser um procedimento operacional muito simples e ter respondido a uma pergunta, que até então, parecia insolúvel.

Um ponto que chamou a atenção dentro da curiosidade manifestada e que levou a esta breve pesquisa foi não ter encontrado resposta condizente. Foi o fato de alguns professores não estarem preparados para responder perguntas que fogem do padrão acadêmico de referência das suas aulas, preparadas. Desconhecer um tema que foge do escopo da aula planejada é natural, pois não é necessário que se saiba tudo sobre certo tema. O que fica a se refletir é o descaso ou desinteresse em buscar responder certa pergunta mesmo com uma resposta do tipo “eu não sei, vamos pesquisar sobre este fato”. O que, de fato, movimenta o conhecimento no mundo não são as respostas dadas, mas as perguntas realizadas.