Μας είπε ότι γίνεται Χj+1=1/2(Xj+a/Xj) μέχρι να είναι δύο διαδοχικά Χ ίσα. Δηλαδή για παράδειγμα η ρίζα του 4 είναι Xo=1, X1=1/2(1+1/4)=2,5 , X2=1/2(2,5+4/2,5)=2,05 ,X3=2, X4=4
Αυτό που έχω κάνει εγώ είναι το εξής:
- Κώδικας: Επιλογή όλων
#include <stdio.h>
float sqNR(float);
int main(){
float num;
printf ("\nΠληκτρολογήστε τον αριθμό για να βρώ την τετραγωνική ρίζα.\n");
scanf ("%f",&num);
if (num>0)
printf ("\nΗ τετραγωνική ρίζα με την μέθοδο Newton-Raphson είναι ίση με: %.1f",sqNR(num));
else
printf ("\nΔεν υπολογίζεται η τετραγωνική ρίζα αρνητικού αριθμού.\n");
return 0;
}
float sqNR(float N){
float x=1,xn=1/2*(x+(N/x));
while (x!=xn){
x=xn;
xn=1/2*(x+(N/x));
}
return xn;
};
Περνάει από το compile κανονικά και μόλις δώσω τον αριθμό φαίνεται σαν να έχω σταματήσει να τρέχει και δεν κάνει τίποτα. Μπορείτε να μου πείτε τι κάνω λάθος; Και πως πρέπει να το κάνω;
Σας ευχαριστώ πολύ!