/* O MÉTODO EXPLICADO: De f quero achar a raiz: escolho g(x) de modo que f(x)=0 e g(x)=x Dada f(x), com f(x_0) = 0, queremos encontrar um intervalo [a,b] tal que x_0 em [a,b] e uma função g tal que g(x_0) = x_0 e |g'(x)| < 1 pra todo x em [a,b]. 1. Dada a função, plotar gráfico pra verificr comportamento 2. Definir intervalo no qual se encontra a raiz (definir [a,b]) 3. Definir derivada da função 4. Aplicar os pontos limite do intervalo da raiz da função na derivada e ver o intervalo da derivada 5. Definir g(x) = (-1/M)*f(x) + x, sendo m o máximo valor no intervalo da derivada para que, desse modo, possamos limitar |g'(x)| < 1 6. Se f(x_0) = 0, então g(x_0) = -1/8*f(x_0) + x_0 = x_0, isto é, x_0 é a raiz da f (o que queremos) é ponto fixo de [; g ;] Determinar os pontos fixos de uma função f(x) é determinar a interseção entre as curvas y=f(x) e y=x. */ #include #include #define eps 1e-6 double f(double x) { return (1./5*(6 - x*x + 4*x)); // g(x) vinda de f(x) } int main(void) { int i; double x=1.5, y, delta; // x é o ponto de partida do { y=f(x); delta=fabs(y-x); x=y; printf("%lf \t %lf \n",x,f(x)); //g(x) vai convergir pra um ponto (x_0) -- seu ponto fixo -- que é raiz da função f(x) } while (delta > eps); return 0; }