Jump to content
Fórum Script Brasil
  • 0

Golden Mean


Braddock11
 Share

Question

Galera meu professor de computação pediu para que resolvesse este programa, valendo um ponto extra. Eu não estou conseguindo resolver de jeito nenhum, será que alguém consegue resolver ou dar dicas de como se resolve? Obrigado, segue abaixo a questão:

O valor da chamada “Golden mean” () ´e definido como:

Phi = (V5 - 1)/2 = 0.61803398

O aluno pode verificar, facilmente, que a recursao:

Phi^n+1 = phi^n−1 − phi^n

fornece o valor das potˆencias inteiras de partindo de 0 = 1 e 1 = 0.61803398.

Assim, o calculo de potencias inteiras de pode ser feito por operacoes de

subtracao no lugar de multiplicacoes sucessivas e, portanto com menor custo

computacional.

Entretanto, pode-se observar que a partir de certas potencias a equacao

2 torna-se instavel quando efetuada por um programa de computador. Implemente

um programa que calcule as potencias inteiras de usando a multiplicaçao sucessiva e usando uma funcao recursiva.

Obrigado a todos.

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

  • 0

Bom dia!

Esta lógica é complicada mesmo mas o principal é encontrar no enunciado o que precisa ser calculado ao invés de se prender à história... :)

Segue abaixo um programa para fazer o cálculo pelos dois métodos:

#include <math.h>
#include <stdio.h>

float CalcPhiN(int n)
{
        if(n <  0) return 0;
        if(n == 0) return 1;
        if(n == 1) return (sqrt(5) - 1)/2;

        return CalcPhiN(n-2) - CalcPhiN(n-1);
}

int main(void)
{
        int n, i;
        float result, phi = (sqrt(5) - 1)/2;

        printf("Valor de phi: %f\n", phi);

        printf("Digite a potencia de phi: ");
        scanf("%d", &n);

        if(n<0) {
                printf("Potencia invalida! Deve ser >= a 0.\n");
                return 1;
        } else {
                result = 1;
                for(i=0; i<n; i++)
                        result *= phi;
        }

        printf("Metodo 1: Multiplicacao\n\tphi ^ n = %f\n", result);
        printf("Metodo 2: Recursao\n\tphi ^ n = %f\n", CalcPhiN(n));

        return 0;
}

Abraços,

Marcelo Utikawa da Fonseca

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.2k
    • Total Posts
      647.4k
×
×
  • Create New...