Lecture 2¶
Q 2.1¶
Question¶
Task 1¶
Calculate the value of $\pi$ using the iterative formula of circle secant, create table in this format:
| Iteration | Number of sides | Upper Bound | Lower Bound |
|---|
Task 2¶
Calculate the value of $\pi$, use extrapolation to accelerate calculations, create table in this format:
| Iteration | Number of sides | Approximation |
|---|
Task 3¶
Calculate the value of $\pi$, use Borwein's algorithm to accelerate calculations, create table in this format:
| Iteration | Number of sides | Approximation |
|---|
Solution¶
Task 1¶
In [1]:
Copied!
S = @(n) 3*2^(n-1)*sin(pi/(3*2^(n-1)));
for n=1:30
sides=6*2^(n-1);
upper_bound=S(n);
lower_bound=2*S(n)-S(n-1);
fprintf('[n=%d]:\n Sides=%d\n Upper Bound=%.20f\n Lower Bound=%.20f\n', n, sides, upper_bound, lower_bound);
end
S = @(n) 3*2^(n-1)*sin(pi/(3*2^(n-1)));
for n=1:30
sides=6*2^(n-1);
upper_bound=S(n);
lower_bound=2*S(n)-S(n-1);
fprintf('[n=%d]:\n Sides=%d\n Upper Bound=%.20f\n Lower Bound=%.20f\n', n, sides, upper_bound, lower_bound);
end
[n=1]: Sides=6 Upper Bound=2.59807621135331601181 Lower Bound=3.89711431702997401771 [n=2]: Sides=12 Upper Bound=2.99999999999999955591 Lower Bound=3.40192378864668310001 [n=3]: Sides=24 Upper Bound=3.10582854123024887372 Lower Bound=3.21165708246049819152 [n=4]: Sides=48 Upper Bound=3.13262861328123776161 Lower Bound=3.15942868533222664951 [n=5]: Sides=96 Upper Bound=3.13935020304686673853 Lower Bound=3.14607179281249571545 [n=6]: Sides=192 Upper Bound=3.14103195089050934996 Lower Bound=3.14271369873415196139 [n=7]: Sides=384 Upper Bound=3.14145247228546153906 Lower Bound=3.14187299368041372816 [n=8]: Sides=768 Upper Bound=3.14155760791185745262 Lower Bound=3.14166274353825336618 [n=9]: Sides=1536 Upper Bound=3.14158389214831768044 Lower Bound=3.14161017638477790825 [n=10]: Sides=3072 Upper Bound=3.14159046322804957896 Lower Bound=3.14159703430778147748 [n=11]: Sides=6144 Upper Bound=3.14159210599927130048 Lower Bound=3.14159374877049302199 [n=12]: Sides=12288 Upper Bound=3.14159251669215677794 Lower Bound=3.14159292738504225539 [n=13]: Sides=24576 Upper Bound=3.14159261936538358739 Lower Bound=3.14159272203861039685 [n=14]: Sides=49152 Upper Bound=3.14159264503369062282 Lower Bound=3.14159267070199765826 [n=15]: Sides=98304 Upper Bound=3.14159265145076727066 Lower Bound=3.14159265786784391850 [n=16]: Sides=196608 Upper Bound=3.14159265305503687671 Lower Bound=3.14159265465930648276 [n=17]: Sides=393216 Upper Bound=3.14159265345610361209 Lower Bound=3.14159265385717034746 [n=18]: Sides=786432 Upper Bound=3.14159265355637007389 Lower Bound=3.14159265365663653569 [n=19]: Sides=1572864 Upper Bound=3.14159265358143757751 Lower Bound=3.14159265360650508114 [n=20]: Sides=3145728 Upper Bound=3.14159265358770412035 Lower Bound=3.14159265359397066320 [n=21]: Sides=6291456 Upper Bound=3.14159265358927086709 Lower Bound=3.14159265359083761382 [n=22]: Sides=12582912 Upper Bound=3.14159265358966255377 Lower Bound=3.14159265359005424045 [n=23]: Sides=25165824 Upper Bound=3.14159265358976025340 Lower Bound=3.14159265358985795302 [n=24]: Sides=50331648 Upper Bound=3.14159265358978512239 Lower Bound=3.14159265358980999139 [n=25]: Sides=100663296 Upper Bound=3.14159265358979089555 Lower Bound=3.14159265358979666871 [n=26]: Sides=201326592 Upper Bound=3.14159265358979222782 Lower Bound=3.14159265358979356009 [n=27]: Sides=402653184 Upper Bound=3.14159265358979311600 Lower Bound=3.14159265358979400418 [n=28]: Sides=805306368 Upper Bound=3.14159265358979311600 Lower Bound=3.14159265358979311600 [n=29]: Sides=1610612736 Upper Bound=3.14159265358979311600 Lower Bound=3.14159265358979311600 [n=30]: Sides=3221225472 Upper Bound=3.14159265358979311600 Lower Bound=3.14159265358979311600
Task 2¶
In [2]:
Copied!
S = @(n) 3*2^(n-1)*sin(pi/(3*2^(n-1)));
for n=1:30
sides=6*2^(n-1);
guess=4/3*S(n)-1/3*S(n-1);
fprintf('[n=%d]\n Sides=%d\n Approx=%.20f\n', n, sides, guess);
end
S = @(n) 3*2^(n-1)*sin(pi/(3*2^(n-1)));
for n=1:30
sides=6*2^(n-1);
guess=4/3*S(n)-1/3*S(n-1);
fprintf('[n=%d]\n Sides=%d\n Approx=%.20f\n', n, sides, guess);
end
[n=1] Sides=6 Approx=3.03108891324553519908 [n=2] Sides=12 Approx=3.13397459621556073728 [n=3] Sides=24 Approx=3.14110472164033183162 [n=4] Sides=48 Approx=3.14156197063156739091 [n=5] Sides=96 Approx=3.14159073296874247205 [n=6] Sides=192 Approx=3.14159253350505673907 [n=7] Sides=384 Approx=3.14159264608377863937 [n=8] Sides=768 Approx=3.14159265312065594244 [n=9] Sides=1536 Approx=3.14159265356047079365 [n=10] Sides=3072 Approx=3.14159265358796035983 [n=11] Sides=6144 Approx=3.14159265358967854098 [n=12] Sides=12288 Approx=3.14159265358978467830 [n=13] Sides=24576 Approx=3.14159265358979267191 [n=14] Sides=49152 Approx=3.14159265358979267191 [n=15] Sides=98304 Approx=3.14159265358979311600 [n=16] Sides=196608 Approx=3.14159265358979311600 [n=17] Sides=393216 Approx=3.14159265358979222782 [n=18] Sides=786432 Approx=3.14159265358979178373 [n=19] Sides=1572864 Approx=3.14159265358979356009 [n=20] Sides=3145728 Approx=3.14159265358979267191 [n=21] Sides=6291456 Approx=3.14159265358979311600 [n=22] Sides=12582912 Approx=3.14159265358979311600 [n=23] Sides=25165824 Approx=3.14159265358979311600 [n=24] Sides=50331648 Approx=3.14159265358979311600 [n=25] Sides=100663296 Approx=3.14159265358979311600 [n=26] Sides=201326592 Approx=3.14159265358979267191 [n=27] Sides=402653184 Approx=3.14159265358979311600 [n=28] Sides=805306368 Approx=3.14159265358979311600 [n=29] Sides=1610612736 Approx=3.14159265358979311600 [n=30] Sides=3221225472 Approx=3.14159265358979311600
Task 3¶
In [3]:
Copied!
y_0 = 1/sqrt(2);
alpha_0 = 1/2;
y=[y_0];
alpha=[alpha_0];
for i=1:30
y(i+1) = (1-sqrt(1-y(i)^2))/(1+sqrt(1-y(i)^2));
alpha(i+1) = (1+y(i+1))^2*alpha(i)-2^(i)*y(i+1);
fprintf('[n=%.2d] %.30f\n', i, 1/alpha(i+1));
end
y_0 = 1/sqrt(2);
alpha_0 = 1/2;
y=[y_0];
alpha=[alpha_0];
for i=1:30
y(i+1) = (1-sqrt(1-y(i)^2))/(1+sqrt(1-y(i)^2));
alpha(i+1) = (1+y(i+1))^2*alpha(i)-2^(i)*y(i+1);
fprintf('[n=%.2d] %.30f\n', i, 1/alpha(i+1));
end
[n=01] 2.914213562373094479340807083645 [n=02] 3.140579250522167242820614774246 [n=03] 3.141592646213542394661999423988 [n=04] 3.141592653589798000979271819233 [n=05] 3.141592653589798000979271819233 [n=06] 3.141592653589798000979271819233 [n=07] 3.141592653589798000979271819233 [n=08] 3.141592653589798000979271819233 [n=09] 3.141592653589798000979271819233 [n=10] 3.141592653589798000979271819233 [n=11] 3.141592653589798000979271819233 [n=12] 3.141592653589798000979271819233 [n=13] 3.141592653589798000979271819233 [n=14] 3.141592653589798000979271819233 [n=15] 3.141592653589798000979271819233 [n=16] 3.141592653589798000979271819233 [n=17] 3.141592653589798000979271819233 [n=18] 3.141592653589798000979271819233 [n=19] 3.141592653589798000979271819233 [n=20] 3.141592653589798000979271819233 [n=21] 3.141592653589798000979271819233 [n=22] 3.141592653589798000979271819233 [n=23] 3.141592653589798000979271819233 [n=24] 3.141592653589798000979271819233 [n=25] 3.141592653589798000979271819233 [n=26] 3.141592653589798000979271819233 [n=27] 3.141592653589798000979271819233 [n=28] 3.141592653589798000979271819233 [n=29] 3.141592653589798000979271819233 [n=30] 3.141592653589798000979271819233
Solution¶
In [4]:
Copied!
count=0;
total=100000000;
for i=1:total
x=rand();
y=rand();
z=rand();
if x^2+y^2<=1 & x^2+z^2<=1 & y^2+z^2<=1
count=count+1;
end
end
fprintf('Volume of body: %.20f\n', count/total);
count=0;
total=100000000;
for i=1:total
x=rand();
y=rand();
z=rand();
if x^2+y^2<=1 & x^2+z^2<=1 & y^2+z^2<=1
count=count+1;
end
end
fprintf('Volume of body: %.20f\n', count/total);
Volume of body: 0.58583472000000003099
In [ ]:
Copied!