FelipeRoque
(usa Ubuntu)
Enviado em 21/02/2018 - 22:48h
Boa noite pessoal, estou tentando contruir um programa que calcule erro verdadeiro e erro aproximado, a partir de uma serie:
e^-x = 1-x + x^2/2- x^3/3! +....
Só que ta dando um bug que o valor aproximado está vindo com error, segue o codigo, se possivel queria um help:
#include<stdlib.h>
#include<stdio.h>
#include<math.h>
int fatorial(int f)
{
int x;
float fatorial = 1;
for(f=x; x>=1;x--)
{
fatorial = fatorial * x;
}
return fatorial;
};
int main() {
float valor_verdadeiro = 0.006737947;
int truncamento, iteracoes, x;
float aux_de_x;
float aux;
int i = 0;
float valor_de_e;
float Erro_Verdadeiro, Erro_Aproximado;
//int f;
printf("\t\t\tO valor verdadeiro eh --> %.9f", valor_verdadeiro); // Mostra o valor verdadeiro
printf("\n\n\n");
printf("\tQuantidade Truncamento ---> "); // Pergunta quantidade de truncamentoa ser realizada
scanf("%i", &truncamento); //Ler
fflush(stdin);// Limpa
printf("\tQuantidade de iteracoes ---> "); // pergunta quantidade de iteracoes que devem ser realizadas
scanf("%i", &iteracoes); // Ler
fflush(stdin);//Limpa
printf("\tValor de X --->"); // Pede o valor de X, no caso X é a exponencial do "e"
scanf("%i", &x);// Ler
fflush(stdin);// Limpa
aux_de_x = 1 - x;
for (i = 2; i <= truncamento; i++){
if (i % 2 == 0)
{
valor_de_e = valor_de_e + (pow(iteracoes, i)) / fatorial(i); // Valores +
} else
valor_de_e = valor_de_e - (pow(iteracoes, i)) / fatorial(i); // Alternancia entre - e +
if (i == truncamento - 1)
{
aux = valor_de_e;
}
Erro_Verdadeiro = valor_verdadeiro - valor_de_e;
Erro_Verdadeiro = Erro_Verdadeiro / valor_verdadeiro;
Erro_Verdadeiro = Erro_Verdadeiro * 100;
Erro_Aproximado = valor_verdadeiro - valor_de_e;
Erro_Aproximado = Erro_Aproximado / valor_de_e;
Erro_Aproximado = Erro_Aproximado * 100;
printf("\n\n\n");
printf("\t O valor do Erro Verdadeiro/Relativo --> %f.10", Erro_Verdadeiro);
printf("\n\n");
printf("\t O valor do Erro Aproximado --> %f.10", Erro_Aproximado);
return 0;
}
}