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!