Innanzitutto qui c'è un errore logico:
codice:
do {
printf("\n CALCOLO DELLA FUNZIONE ln(1+x)\n\n");
printf("\n Quanto vale il parametro x= ");
scanf("%lf", &x);
}
while ((x < 0) && (x > 1 / 2));
la condizione del while è errata, così com'è risulterà sempre falsa perché nessun numero potrebbe essere < 0 e > 1/2. Devi sostituire && con II
codice:
while((x < 0.) || (x > 0.5));
ti ho anche eliminato 1/2: la divisione 1/2 è tra interi, e dà come risultato l'intero 0, non 0.5.
Fatto questo, con parametri x compresi tra 0 e 0.5 ottengo risultati corretti:
CALCOLO DELLA FUNZIONE ln(1+x)
Quanto vale il parametro x= 0.3
Inserire la tolleranza richiesta eps=0.001
Il risultato finale e' ln(1+0.300000)=0.262340
La libreria matematica dice ln(1+0.300000)=0.262364
CALCOLO DELLA FUNZIONE ln(1+x)
Quanto vale il parametro x= 0.4
Inserire la tolleranza richiesta eps=0.000001
Il risultato finale e' ln(1+0.400000)=0.336472
La libreria matematica dice ln(1+0.400000)=0.336472
C'è forse qualcosa che non ho compreso?