Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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 tô 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!*
Carregando comentários...