Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ.

Καλησπέρα :)

Έχω την εξής απορία, στην εξής εκφώνηση...
Εκφώνηση: Να γραφεί πρόργαμμα που θα υπολογίζει τη σειρά (βλέπε αρχείο 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 παίρνω τα ίδια ακριβώς αποτελέσματα... 

Αν μπορεί κάποιος να μου εξηγήσει πως έχω τα ίδια αποτελέσματα με διαφορετικά προγράμματα θα το εκτιμούσα :)

 

post-149119-0-47762300-1368628019_thumb.gif

post-149119-0-65982800-1368628034_thumb.gif

Δημοσ.

χωρίς να το κοιτάξω και πολύ, η μόνη ουσιαστική διαφορά που βλέπω είναι στην εκλογή της αρχικής τιμής του term. Επειδή όμως χρησιμοποιείς επαναληπτική μέθοδο, η εκλογή της αρχικής τιμής δεν παίζει τρομερό ρόλο. Το πολύ πολύ να αργήσει λίγο περισσότερο η σύγκλιση.

 

Εκτύπωσε την τιμή της i και στα 2 προγράμματα και θα δεις ότι έχουν κάνει διαφορετικό αριθμό επαναλήψεων.

 

Ερώτηση. Γιατί ξεκινάς το i από το 2?

Δημοσ.

Το 2ο πρόγραμμα είναι η ενδεικτική λύση της άσκησης, και γω δεν κατάλαβα γιατί ξεκινάει με ι=2 ...

Δημοσ.

Πρεπει να το ρωτησεις σε αυτον που σου εδωσε την λυση αυτο. Η σειρά πως λέγεται? Αν ειναι κάποια γνωστη μπορεις να googlareis να δεις αμα υπάρχουν παρομοιες υλοποιησεις αν και οπως βλεπω η σειρά ξεκινάει απο το 1. Ρωτα αυτον που σου εδωσε την 2η λύση.

 

Ενταξει δεν φαινεται κατι το τρομερο ρε συ ενα loop έχει που καθε φορά αθροίζει και μετα βγαινεις και μεσω της print εκτυπώνεις το s.

Δημοσ.

Έχεις το ίδιο αποτέλεσμα γιατί εσύ υπολογίζεις τον πρώτο όρο της ακολουθίας έξω από το loop

term=x**2

και μετά ξεκινάς τις επαναλήψεις και υπολογίζεις του επόμενους όρους,  ενώ το άλλο πρόγραμμα υπολογίζει τους δύο πρώτους όρους αρχικά

s=x**2
term=-2**3*x**4/24

και μετά συνεχίζει τις επαναλήψεις από τον 3ο όρο και μετά (για αυτό ξεκινάει το i από 2)

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...