Urgente:Dove sbaglio?

di il
1 risposte

Urgente:Dove sbaglio?

Ho scritto un programma che applica il metodo di newton, con la derivata approssimata dal rapporto incrementale per trovare una soluzione all'equazione f(x)=0 della seguente funzione
f(x)=x^3-7x^2-4x+12+10cos(x)

#include <stdlib.h>
#include <stdio.h>
#include <math.h>
/*definisco lo scarto per approssimare meglio la derivata*/
#define delta 0.1

/*definisco la funzione f di cui calcolo lo zero*/

double f (double x)
{
return x*x*x-7*x*x-4*x+12+10*cos(x);

}

/*definisco funzione che mi permette di fare l'iterazione secondo il metodo di newton*/
double passo(double x)
{
return x-f(x)*delta/(f(x)-f(x-delta));
}

int main (void)
{
double x1;
double x2;
double epsilon;



int i;
i=1;
scanf("%f",&x1);
scanf("%f",&epsilon);
x2=passo(x1);
printf("x_%d=%f, x_%d-x_%d=%f\n",i,x2,i,i-1,x2-x1);


while(fabs(x2-x1)>= epsilon)
{
i++;
x1=x2;
x2=passo(x1);
printf("x_%d=%f, x_%d-x_%d=%f\n",i,x2,i,i-1,x2-x1);
}
printf("iterazioni svolte:%d\n",i);
scanf("%f",&x1);
exit(EXIT_SUCCESS);
}

lo eseguo ma non ottengo il risultato sperato in pratica al posto del risultato viene scritto #INDOO. dove sbaglio?

1 Risposte

  • Re: Urgente:Dove sbaglio?

    Intanto non c'è nulla di "urgente" nei forum ... ad ogni domanda si risponde se e quando si può/vuole ...

    Per il problema, utilizza %lf e non %f per la gestione dei double
Devi accedere o registrarti per scrivere nel forum
1 risposte