Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda - Método de Newton


Sabrina_aa

Pergunta

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!
Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

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.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...