paokfever Δημοσ. 15 Μαΐου 2013 Δημοσ. 15 Μαΐου 2013 Καλησπέρα Έχω την εξής απορία, στην εξής εκφώνηση...Εκφώνηση: Να γραφεί πρόργαμμα που θα υπολογίζει τη σειρά (βλέπε αρχείο 1) με ακρίβεια Ε=10-6 και υπάρχει και μια σημείωση... Ο κάθε όρος της παραπάνω σειράς συνδέεται με τον προηγούμενο βάσει της σχέσης (αρχείο 2). Και το πρόβλημά μου είναι το εξής. Εγώ έφτιαξα το ακόλουθο πρόγραμμα program test implicit none real :: x,e,term,s integer :: i print*, "x=" read*, x e=1E-06 s=0 i=1 term=x**2 do while (abs(term)>=e) s=s+term i=i+1 term=term*(-((2*x)**2)/((2*i)*((2*i)-1))) end do print*, "sin^2(x)=", s end program και ενώ σαν σωστή απάντηση υπάρχει αυτό το πρόγραμμα program sinx2 implicit none real :: s,term,x real, parameter :: e=1E-06 integer :: i print*, "x=" read*, x i=2 s=x**2 term=-2**3*x**4/24 do while (abs(term)>=e) s=s+term i=i+1 term=term*(-(2*x)**2/(2*i*(2*i-1))) end do print*, "sin^2(x)=" ,s end program και με τα 2 παίρνω τα ίδια ακριβώς αποτελέσματα... Αν μπορεί κάποιος να μου εξηγήσει πως έχω τα ίδια αποτελέσματα με διαφορετικά προγράμματα θα το εκτιμούσα
pmav99 Δημοσ. 15 Μαΐου 2013 Δημοσ. 15 Μαΐου 2013 χωρίς να το κοιτάξω και πολύ, η μόνη ουσιαστική διαφορά που βλέπω είναι στην εκλογή της αρχικής τιμής του term. Επειδή όμως χρησιμοποιείς επαναληπτική μέθοδο, η εκλογή της αρχικής τιμής δεν παίζει τρομερό ρόλο. Το πολύ πολύ να αργήσει λίγο περισσότερο η σύγκλιση. Εκτύπωσε την τιμή της i και στα 2 προγράμματα και θα δεις ότι έχουν κάνει διαφορετικό αριθμό επαναλήψεων. Ερώτηση. Γιατί ξεκινάς το i από το 2?
paokfever Δημοσ. 15 Μαΐου 2013 Μέλος Δημοσ. 15 Μαΐου 2013 Το 2ο πρόγραμμα είναι η ενδεικτική λύση της άσκησης, και γω δεν κατάλαβα γιατί ξεκινάει με ι=2 ...
Star_Light Δημοσ. 15 Μαΐου 2013 Δημοσ. 15 Μαΐου 2013 Πρεπει να το ρωτησεις σε αυτον που σου εδωσε την λυση αυτο. Η σειρά πως λέγεται? Αν ειναι κάποια γνωστη μπορεις να googlareis να δεις αμα υπάρχουν παρομοιες υλοποιησεις αν και οπως βλεπω η σειρά ξεκινάει απο το 1. Ρωτα αυτον που σου εδωσε την 2η λύση. Ενταξει δεν φαινεται κατι το τρομερο ρε συ ενα loop έχει που καθε φορά αθροίζει και μετα βγαινεις και μεσω της print εκτυπώνεις το s.
bird Δημοσ. 15 Μαΐου 2013 Δημοσ. 15 Μαΐου 2013 Έχεις το ίδιο αποτέλεσμα γιατί εσύ υπολογίζεις τον πρώτο όρο της ακολουθίας έξω από το loop term=x**2 και μετά ξεκινάς τις επαναλήψεις και υπολογίζεις του επόμενους όρους, ενώ το άλλο πρόγραμμα υπολογίζει τους δύο πρώτους όρους αρχικά s=x**2 term=-2**3*x**4/24 και μετά συνεχίζει τις επαναλήψεις από τον 3ο όρο και μετά (για αυτό ξεκινάει το i από 2)
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα