Sabrina_aa Postado Novembro 18, 2014 Denunciar Share Postado Novembro 18, 2014 Olá pessoal, estou fazendo um programinha para achar raízes de uma equação pelo método de Newton. Mas estou com um probleminha e não sei resolver... A função: sqrt(x) - 5*exp(-x) Eu estou fazendo o seguinte: #include <stdio.h> #include <math.h> float f(float x) { return sqrt(x)-5*exp(-x); //Função } float der(float x) { return (5*exp(-x))+(1/(2*sqrt(x))); // derivada de f(x). } int main() { float E, x0, *it; // erro, ponto inicial, vetor iterações. int i, num_it; // iteração atual, número de iterações. E=pow(10,-7); printf("Digite o número máximo de iterações:\n"); scanf("%d", &num_it); printf("Digite o X0 inicial: \n"); scanf("%f", &x0); // Alocar dinamicamente memória para o vetor das iterações. it = malloc( sizeof(int) *num_it); // Condições iniciais. it[0] = x0; i = 0; // Iterações. while(f(it) > E) { // Excedeu o limite de iterações. if(i > num_it) { printf("Não convergiu em %d iterações!!!\n", num_it); printf("Provavelmente f'(x) está errada.\n"); } it[i+1] = it - f(it)/der(it); i++; } printf("X ~= %f ", it); printf("\nForam feitas %d iterações.\n",i); } O que está em vermelho é o que está dando erro, o que eu fiz de errado? Alguém pode me corrigir? Obrigada! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 ScreenBlack Postado Novembro 21, 2014 Denunciar Share Postado Novembro 21, 2014 A alocação de memória está correta, apesar da variável ser do tipo float e estar alocando tamanho do tipo int, porém, são do mesmo tamanho (geralmente 32 bits ou 4 bytes). Testei seu código e rodou sem problemas. Talvez o(s) erro(s) esteja(m) na(s) fórmula(s). Isso eu não parei pra olhar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Sabrina_aa
Olá pessoal, estou fazendo um programinha para achar raízes de uma equação pelo método de Newton. Mas estou com um probleminha e não sei resolver...
A função: sqrt(x) - 5*exp(-x)
Eu estou fazendo o seguinte:
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.