Аппроксимация значения pi в C с использованием формулы Viete - PullRequest
0 голосов
/ 03 октября 2018

Мое задание на этой неделе в классе CS - создать программу для аппроксимации числа Пи, используя формулу Виеты.Я пытался начать в течение последнего часа или около того, но я, честно говоря, даже не уверен, как начать.Вся работа, которую я выполнил, не работает.

Я предполагаю, что мой профессор хочет, чтобы мы использовали цикл "while", так как в последнее время мы часто его использовали в классе.Мы также часто используем операторы «если», хотя я не уверен, что нам нужно использовать их здесь.

Может ли кто-нибудь помочь мне найти отправную точку или объяснить, как я могу это сделать?

//here is some of the work i have attempted that doesn't work because i don't know what to do
#include <stdio.h> 
#include <math.h> 
#include <stdlib.h> 

int main() 

{ 
double n,pi,f,i; 

printf("enter the number of iterations to approximate for pi\n"); 
scanf("%lf\n", &n); 

pi = 2 / f; 
i = 1; 
f = sqrt(2);

while (i<=n)
{ 



}

1 Ответ

0 голосов
/ 03 октября 2018

Для начала отправьте код, который вы отправили:

1) Вы не хотите, чтобы i и n имели тип double Измените их на int

2) Вы должны всегда проверять значение, возвращаемое scanf Как: if (scanf(%d) != 1) {// add error handling here ...}

3) pi = 2 / f; - неопределенное поведение, поскольку f неинициализировано

Тогда ваше назначение:

Я не дам вам полного решения, но вместо этого дам подсказку, чтобы вы могли продолжить работу.

Необходимую формулу можно найти здесь: https://en.wikipedia.org/wiki/Viète%27s_formula#Interpretation_and_convergence

ВашПервая задача - вычислить a[n], учитывая, что

a[1] = sqrt(2)
a[n] = sqrt(2 + a[n-1])

Вы можете сделать это, используя цикл while (хотя я бы предпочел цикл for).Это может быть как:

#include <stdio.h> 
#include <math.h> 

int main() 
{ 
    int n, i;
    n = 5;
    i = 1;
    double an = sqrt(2);

    while(i <= n)
    {
        printf("a%d = %.10f\n", i, an); 
        an = sqrt(2 + an);
        ++i;
    }
    return 0;    
}

Это дает вам:

a1 = 1.4142135624
a2 = 1.9615705608
a3 = 1.9975909124
a4 = 1.9998494037
a5 = 1.9999905876

Так что теперь, когда вы знаете, как рассчитать a1, a2, a3, ... вам просто нужно положить еговместе, используя:

enter image description here

(изображение из: https://en.wikipedia.org/wiki/Viète%27s_formula#Interpretation_and_convergence)

и найдите пи.

...