Ο Άγγλος μαθηματικός John Wallis θεωρείται πως είναι ένας από τους πρώτους που εισήγαγε την έννοια του απείρου (\(\infty\)) στα μαθηματικά. Το 1656 δημοσίευσε ένα αποτέλεσμα σύμφωνα με το οποίο μπορούμε να προσεγγίσουμε το \(\pi\) χρησιμοποιώντας το ακόλουθο απειρογινόμενο όρων \(t_i\), γνωστό και ως γινόμενο Wallis προς τιμήν του:
\[\frac{\pi}{2} = \underbrace{\frac{2}{1} \cdot \frac{2}{3}}_{t_1} \cdot \underbrace{\frac{4}{3} \cdot \frac{4}{5}}_{t_2} \cdot \underbrace{\frac{6}{5} \cdot \frac{6}{7}}_{t_3} \cdot \underbrace{\frac{8}{7} \cdot \frac{8}{9}}_{t_4} \cdots\]Χρησιμοποιώντας την παραπάνω σχέση μπορούμε να προσεγγίσουμε και εμείς το \(\pi\) όπως ο Wallis. Μάλιστα, όσους περισσότερους όρους \(t_i\) χρησιμοποιούμε, τόσο καλύτερη η προσέγγισή μας. Γράψτε ένα πρόγραμμα C το οποίο παίρνει έναν θετικό ακέραιο ως όρισμα από την γραμμή εντολών που αντιπροσωπεύει πόσους πρώτους όρους \(t_i\) να χρησιμοποιήσει στον υπολογισμό του \(\pi\) και στην συνέχεια εκτυπώνει την προσέγγιση του \(\pi\) με 8 δεκαδικά ψηφία. Παραδείγματα εκτέλεσης ακολουθούν:
$ ./wallis
Usage: ./wallis <number of terms to use>
$ echo $?
1
$ ./wallis 1
Using the first 1 terms, pi = 2.66666667
$ ./wallis 2
Using the first 2 terms, pi = 2.84444444
$ ./wallis 4
Using the first 4 terms, pi = 2.97215420
$ ./wallis 100
Using the first 100 terms, pi = 3.13378749
$ ./wallis 100000000
Using the first 100000000 terms, pi = 3.14159264
Γράψτε τον γενικό όρο \(t_i\) ως συνάρτηση του \(i\) και πολλαπλασιάστε τους σε έναν βρόχο,
με μεταβλητή double: προσέξτε ότι οι διαιρέσεις πρέπει να γίνονται σε κινητή
υποδιαστολή και ότι για \(i\) ως \(10^8\) το γινόμενο \(2i \cdot 2i\) χρειάζεται τύπο αρκετά
μεγάλο. Μην ξεχάσετε ότι το γινόμενο δίνει \(\pi/2\), και ελέγξτε το argc ώστε να
τυπώνετε το μήνυμα χρήσης και να επιστρέφετε κωδικό εξόδου 1.
Αριθμός στον οδηγό: Α6.17
(στο κεφάλαιο) ·
Μόνιμο αναγνωριστικό: exam-2024-dec-q1 ·
Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2024-dec-q1.html ·
Markdown (GitHub)