Effacer les filtres
Effacer les filtres

algorithm for computing ? is due to Archimedes: how steps can be repeated

3 vues (au cours des 30 derniers jours)
Anastasia Kyriakou
Anastasia Kyriakou le 22 Fév 2020
The following algorithm for computing ? is due to Archimedes:
1. Start with ? = 1 and ? = 6.
2. Replace ? by 2?.
3. Replace ? by sqrt(2 − sqrt(4 − ?))
4. Let ? = ??/2.
5. Let ? = na/2
6. Let ? = (? + ?)/2 (estimate of ?)
7. Let ? = (? − ?)/2 (estimate of error)
8. Repeat steps 2 – 7 until ? becomes smaller than a given tolerance ???.
9. Output ? and ?
Write a function that implements this algorithm. Use your function to determine ? and ? for ??? = 10^(=k)
, ? = 2, 3, … , 10.
I have written a code but i do not know how to write it so that if the value of e is larger than tol then steps 2-7 repeated. I have written this :
```
function [p,e] = algorithmPi(tol)
a = 1;
n = 6;
e = inf;
n = 2*n;
a = sqrt(2-sqrt(4-(a^2)));
l = (n*a)/2;
u = l/(sqrt((1-(a)^2)/2));
p = (u+l)/2; % estimate of pi
e = (u-l)/2; % estimate of error
if e < tol
done = true;
disp('Complete: Error below tolerance')
end
end
  9 commentaires
Anastasia Kyriakou
Anastasia Kyriakou le 23 Fév 2020
function [p,e] = algorithmPi(tol)
a = 1;
n = 6;
e = inf;
n = 2*n;
a = sqrt(2-sqrt(4-(a^2)));
l = (n*a)/2;
u = l/(sqrt((1-(a)^2)/2));
p = (u+l)/2; % estimate of pi
e = (u-l)/2; % estimate of error
if e < tol
done = true;
disp('Complete: Error below tolerance')
while cond
%code to be repeated
end
end
end
% end
Like that?
Rik
Rik le 23 Fév 2020
What code do you want to repeat? Make sure that is inside the while loop.
I would strongly urge you to read the documentation for the functions you're using if you don't understand what they do.

Connectez-vous pour commenter.

Réponses (1)

Pravin Jagtap
Pravin Jagtap le 25 Fév 2020
Hello Anastasia,
As mentioned in the above comments, I would recommend you to follow the documentation for understanding the loops. Refer to the following template which will help you to implement the algorithm:
function [p,e] = algorithmPi(tol)
% step 1 - Initialize a, n and e(to inf)
% step 2 - Iterative process from 2 -7
while (e > tol)
% step 3 - Replace n and a
% step 4 - Compute l, u, p and e
end
end

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by