Ir ao conteúdo
  • Cadastre-se

Como melhorar esse código?


Posts recomendados

#include <stdio.h>
#include <stdlib.h>
 
float Abs( float x ){
    x = ( x * x ) / -(x);
    return x;
};
 
int main(){
    float solucao = 0., xini = 0., xnovo = 0., Fxnovo = 0.,
          Fdxnovo = 0., E = 0.;// Fdxini = derivada de Fxini
    int k = 0;
 
    printf( "Digite o x inicial: " );
    scanf( "%f", &xnovo );
    printf( "Digite a precisao: " );
    scanf( "%f", &E );
    
    do{
        
       xini = xnovo;
       Fxnovo = ( xini * xini * xini ) - 9. * xini + 3.; //inserir sua função principal aqui
       Fdxnovo = 3. * ( xini * xini ) - 9.; //inserir a derivada da função principal aqui
       xnovo = xini - ( Fxnovo / Fdxnovo );
        k += 1;
        printf( "\niteracao = %d", k );
        printf( "\nxini = %f\nxnovo = %f", xini, xnovo );
 
    } while( Abs( xnovo - xini ) >= E || Abs( Fxnovo ) >= E );
 
    printf( "\n\nxnovo - xini = %f\n", xnovo - xini);
    printf( "A solucao final é: %f\n", xnovo );
    return 0;
}
 
Como posso melhorar este código a fim de que ele me retorne todas as raízes que estão em um determinado intervalo [a,b] ?
Essa função do código tem 3 raízes. Se eu coloco meu X inicial como 4, ele me retorna a raíz mais prox de 4, no caso 2,8169.

Queria aprimorá-lo de forma que eu pudesse indicar o intervalo e ele pudesse me retornar as raízes que estão dentro dele.

Por exemplo, se eu entrasse com x inicial igual a 4 e o x final igual a 0, ele deveria me retornar as raízes  2,8169 e 0,33761.

 

* tem que ser pelo metodo de newton

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...