είναι σωστό το πρόγραμμα στη C που έχω φτιάξει?

...ασύγχρονα μαθήματα γλώσσας C

είναι σωστό το πρόγραμμα στη C που έχω φτιάξει?

Δημοσίευσηαπό ιωάννα1992 » 11 Φεβ 2014, 12:57

γεία σας!έχω μια απορία Σχετικά με μια άσκηση της οποίας η εκφώνηση δίνει συνάρτηση F(x)=(x-2)^3(x-5), και ζητά να εφαρμόσουμε την επαναληπτική μέθοδο newton-raphson για τον υπολογισμό προσεγγιστικής ρίζας χn της f(x)=0, με ακρίβεια e=1/2*10^(-6). και μέγιστο αριθμό επαναλήψεων maxiter= 200. Το πρόγραμμα που έχω φτιάξει είναι σωστό?
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main() {
double x0,epsilon,x,fx0,dfx0;
int itcount,maxiter;
epsilon= 0.0000005;
printf("dose tin timi tou x0 ston programmatisti\n");
scanf("%lf",&x0);
maxiter=200;
itcount=1;
while(itcount<maxiter) {
fx0=(x0-2)*(x0-2)*(x0-2)*(x0-5);
dfx0=(x0-2)*(x0-2)*(3*x0-15)+(x0-2)*(x0-2)*(x0-2);
x=x0-(fx0/dfx0);
if(fabs(x-x0)<=epsilon) {
break;
}
else {
itcount==itcount++;
x0=x;
printf("%lf",x0);
}
}
if(itcount==maxiter) {
printf("i parapanw methodos den sigklinei\n");
}
else {
printf("\n o arithmos ton epanal. einai isos me %d\n",itcount);
printf("i riza einai isi me %lf\n",x);
}
system("pause");
return 0;
}
ιωάννα1992
babeTUX
babeTUX
 
Δημοσιεύσεις: 2
Εγγραφή: 11 Φεβ 2014, 12:40
Εκτύπωση

Re: είναι σωστό το πρόγραμμα στη C που έχω φτιάξει?

Δημοσίευσηαπό lucinos » 11 Φεβ 2014, 13:35

α) για να τον δείξουμε στο φόρουμ, τον κώδικα βάζε τον μέσα σε
Κώδικας: Επιλογή όλων
[code][/code]

β) τον κώδικα δεν ρωτάμε αν δουλεύει. τον δοκιμάζουμε.
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: είναι σωστό το πρόγραμμα στη C που έχω φτιάξει?

Δημοσίευσηαπό ιωάννα1992 » 11 Φεβ 2014, 13:51

α οκ..βασικά είμαι άσχετη από προγραμματισμό ..εκτελείται απλώς δε ξέρω αν εκτελείται σωστά
ιωάννα1992
babeTUX
babeTUX
 
Δημοσιεύσεις: 2
Εγγραφή: 11 Φεβ 2014, 12:40
Εκτύπωση

Re: είναι σωστό το πρόγραμμα στη C που έχω φτιάξει?

Δημοσίευσηαπό lucinos » 11 Φεβ 2014, 14:36

την μία γράφεις f την άλλη γράφεις F. Υποθέτω εννοείς το ίδιο.

Βαριέμαι να ελέγξω αν έχεις παραγωγήσει σωστά. Βαριέμαι να ελέγξω αν εφαρμόζεις σωστά την μέθοδο τού Νεύτωνα. Βαριέμαι να τρέξω το πρόγραμμα. Αφού το τρέχεις το νόημα είναι να δεις αν δίνει τις ρίζες τις εξίσωσης. Η εξίσωση f(x) = 0 έχει μια τριπλή ρίζα το 2 και μια μονή ρίζα το 5. Τις βρίσκεις; Αν τις βρίσκεις είσαι οκ, αν όχι τότε έχεις πρόβλημα. Αυτό θα πει δοκιμή.
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Re: είναι σωστό το πρόγραμμα στη C που έχω φτιάξει?

Δημοσίευσηαπό eliasps » 11 Φεβ 2014, 16:17

Το πρόβλημά σου δηλαδή δεν είναι πρόβλημα προγραμματισμού, αλλά αμφιβολίες στο λογικό και στο μαθηματικό κομμάτι του θέματος.
Από τη στιγμή που το πρόγραμμα εκτελείται κανονικά, τότε από άποψη κώδικα είναι σωστό όσον αφορά το προγραμματιστικό κομμάτι.

Το αν επιστρέφει τα σωστά αποτελέσματα εξαρτάται από το αν το μαθηματικό κομμάτι είναι σωστό.
Από ότι φαίνεται η συνάρτηση είναι η:


Οπότε έχεις υπολογίσει σωστά την παράγωγο, αν και την γράφεις λίγο ανορθόδοξα.
Eπίσης, η μέθοδος Newton - Raphson φαίνεται σωστή.

Όπως είπε ο lucinos παραπάνω, ελέγχεις αν όλα έχουν γίνει σωστά βάσει αποτελεσμάτων.
Η f(x)=0 ισχύει για x=2 (τριπλή ρίζα) και x=5 (απλή ρίζα).

Τι σου επιστρέφει το πρόγραμμα;
Θα το εκτελούσα εγώ αλλά αυτή τη στιγμή δεν έχω την δυνατότητα να το κάνω.
Άβαταρ μέλους
eliasps
antiwinTUX
antiwinTUX
 
Δημοσιεύσεις: 4017
Εγγραφή: 16 Δεκ 2011, 22:25
Τοποθεσία: Αθήνα, Αττική
Launchpad: eliasps
IRC: eliasps
Εκτύπωση


  • ΣΧΕΤΙΚΑ ΘΕΜΑΤΑ
    ΑΠΑΝΤΗΣΕΙΣ
    ΠΡΟΒΟΛΕΣ
    ΣΥΓΓΡΑΦΕΑΣ

Επιστροφή στο Μαθήματα C