Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

MimiMeow

Método de Newton

Recommended Posts

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!

Compartilhar este post


Link para o post
Compartilhar em outros sites
O que está em vermelho é o que está dando erro, o que eu fiz de errado?

Poste o erro que o compilador escreve na tela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.