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

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

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

Πρόγραμμα: vieta.c

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

\[\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\) όπως ο Βιετά. Μάλιστα, όσους περισσότερους όρους \(t_i\) χρησιμοποιούμε, τόσο καλύτερη η προσέγγισή μας. Γράψτε ένα πρόγραμμα C το οποίο παίρνει έναν θετικό ακέραιο ως όρισμα από την γραμμή εντολών που αντιπροσωπεύει πόσους πρώτους όρους \(t_i\) να χρησιμοποιήσει στον υπολογισμό του \(\pi\) και στην συνέχεια εκτυπώνει την προσέγγιση του \(\pi\) με 9 δεκαδικά ψηφία. Παραδείγματα εκτέλεσης είναι τα εξής:

$ gcc -o vieta vieta.c -lm
$ ./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

Υπόδειξη

Κάθε αριθμητής προκύπτει από τον προηγούμενο: αν ο αριθμητής του t_i είναι a, ο επόμενος είναι √(2 + a). Πολλαπλασιάστε τους πρώτους N όρους σε έναν double και λύστε τη σχέση ως προς π. Χρειάζεστε math.h και -lm, και έλεγχο ότι το όρισμα είναι θετικός ακέραιος.

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