Escreva um algoritmo / programa em linguagem C, para implementar a fórmula recursiva, obtida no Exemplo 2 da Aula Remota 1 e use-o para determinar raiz2 e raiz834.

Passo 1

Beleza, a questão pede pra gente criar um programa em C que use a fórmula recursiva do Exemplo 2 da Aula Remota 1 (que é, na real, o método de Newton pra extrair raiz quadrada) e aí rodar pra achar e . O conteúdo principal é recursão (ou iteração com parada) e o método de Newton–Raphson. Para resolver, vamos precisar:
  • Entender o método de Newton pra raiz quadrada;
  • Definir uma condição de parada (um pra garantir precisão);
  • Implementar a função recursiva (ou iterativa) em C;
  • Testar pra e .

Passo 2

Teoria do método de Newton pra raiz quadrada:
Se queremos f(x) = x^2 - A , consideramos a função
xn+1 = xn - f(xn)f'(xn) = xn - xn^2 - A2,xn = xn + Axn2
e usamos a iteração
Basicamente, cada passo aproxima melhor o palpite pra raiz de .

Passo 3

Montando a recursão (ou iteração):
  1. Escolhe um chute inicial xn+1 = xn + Axn2 (por exemplo, ).
  2. Calcula
  3. Para quando .
já vai estar bem próximo de .

Passo 4

Código em C (linguagem pura, sem bibliotecas extras, só stdio.h e math.h pra comparação):
#include <stdio.h>
#include <math.h>

double raizNewton(double A, double x, double eps) {
    double xn = (x + A/x) / 2.0;    // fórmula de Newton
    if (fabs(xn - x) < eps)        // condição de parada
        return xn;
    return raizNewton(A, xn, eps); // chama recursivamente
}

int main() {
    double eps = 1e-8;            // precisão desejada
    // Chutes iniciais:
    double chute2   = 2.0 / 2.0;   // para sqrt(2)
    double chute834 = 834.0 / 2.0; // para sqrt(834)

    double r2   = raizNewton(2.0, chute2, eps);
    double r834 = raizNewton(834.0, chute834, eps);

    printf("sqrt(2)   ≈ %.8f\n", r2);
    printf("sqrt(834) ≈ %.8f\n", r834);
    return 0;
}
Explicando rapidinho: a função raizNewton recebe
  • A: o número pra extrair raiz,
  • x: o palpite atual,
  • eps: a tolerância.
    Ela calcula xn pela fórmula de Newton, testa se a diferença é menor que eps e, se não for, chama ela mesma com o novo palpite.

Resposta

Ao rodar esse programa com raiz2 approx 1.41421356, raiz834 approx 28.86607004 , obtemos aproximadamente:

Exercícios relacionados