Οδηγός Μελέτης - Εισαγωγή στον Προγραμματισμό

Α6.20 · Κάντο όπως ο Βιετά

Κατατακτήριες Δεκεμβρίου 2023, Θέμα 1 · Δυσκολία ★★☆ · programming · Κεφάλαια: 6, 3, 4

Ο Γάλλος μαθηματικός Βιετά (François Viète) υπήρξε ο πρώτος μαθηματικός που χρησιμοποίησε ευρέως σύμβολα για να εκφράσει αριθμητικές ποσότητες. Το 1593 κατάφερε να εκφράσει και να υπολογίσει τον αριθμό \(\pi\) με ακρίβεια 9 δεκαδικών, βελτιώνοντας έτσι το σχετικό αποτέλεσμα του Αρχιμήδη. Για να υπολογίσει το \(\pi\), ο Βιετά χρησιμοποίησε μια σχέση που χρησιμοποιεί ένα απειρογινόμενο όρων $, γνωστό ως φόρμουλα Βιετά προς τιμήν του:

\[\frac{2}{\pi} = \underbrace{\frac{\sqrt{2}}{2}}_{t_1} \cdot \underbrace{\frac{\sqrt{2+\sqrt{2}}}{2}}_{t_2} \cdot \underbrace{\frac{\sqrt{2+\sqrt{2+\sqrt{2}}}}{2}}_{t_3} \cdots\]

Λύνοντας την παραπάνω σχέση ως προς \(\pi\), μπορούμε και εμείς να προσεγγίσουμε το \(\pi\) όπως ο Βιετά. Μάλιστα, όσους περισσότερους όρους $ χρησιμοποιούμε, τόσο καλύτερη η προσέγγισή μας. Γράψτε ένα πρόγραμμα C το οποίο παίρνει έναν θετικό ακέραιο ως όρισμα από την γραμμή εντολών που αντιπροσωπεύει πόσους πρώτους όρους $ να χρησιμοποιήσει στον υπολογισμό του \(\pi\) και στην συνέχεια εκτυπώνει την προσέγγιση του \(\pi\) με 9 δεκαδικά ψηφία. Παραδείγματα εκτέλεσης είναι τα εξής:

$ ./vieta 2
Multiplied first 2 ti terms, pi = 3.061467459
$ ./vieta 5
Multiplied first 5 ti terms, pi = 3.140331157
$ ./vieta 50
Multiplied first 50 ti terms, pi = 3.141592654

Υπόδειξη

Παρατηρήστε ότι ο αριθμητής κάθε όρου προκύπτει από τον αριθμητή του προηγούμενου: αν = \sqrt{2}\(, τότε {i+1} = \sqrt{2 + a_i}\). Κρατήστε λοιπόν σε έναν βρόχο τον τρέχοντα αριθμητή και το γινόμενο σε μεταβλητές double (με τη sqrt του <math.h>, μεταγλώττιση με -lm) και στο τέλος λύστε ως προς \(\pi\). Μετατρέψτε το argv[1] σε ακέραιο και ελέγξτε ότι δόθηκε και είναι θετικός.

Αριθμός στον οδηγό: Α6.20 (στο κεφάλαιο) · Μόνιμο αναγνωριστικό: exam-2023-dec-q1 · Σύνδεσμος: https://progintro.github.io/study/questions/exams/exam-2023-dec-q1.html · Markdown (GitHub)