Ο Γάλλος μαθηματικός Βιετά (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)