3 1415926535 Matlab digits100 vpapi ans 3 141592653589793238462643383279502884197
实际问题 ―圆周率, 我们十分熟悉的常数. 你也许能写出 = 3. 1415926535 用Matlab 可以求出 到几百位 >> digits(100) >> vpa(pi) ans = 3. 141592653589793238462643383279502884197 16939937510582097494459230781640628620899 8628034825342117068 但你会计算 的值吗?你又能用几种方法计算?
于是 的值 (刘徽计算到 192边形面积,得到 3. 141) 用Matlab计算 m文件 function calpi(n) a(1)=1; for i=1: n-1 a(i+1)=sqrt(2 -sqrt(4 -a(i)^2)); end S=3*2^(n-1)*a(n) 命令窗口输入 format long calpi(5) g
用Matlab计算 创建m文件 calpi 2. m,内容如下: function calpi 2(n) S=0; for i=1: n if mod(i, 2)==0 S=S-1/(2*i-1); else S=S+1/(2*i-1); end S=4*S
结果如何 ? >> calpi 2(1000) ans = 3. 14059265383979 >> calpi 2(10000) ans = 3. 14149265359003 >> calpi 2(20000) ans = 3. 14154265358982 精度提高很慢!
用Matlab 创建m文件 function calpi 2_1(n) S=0; for i=1: n if mod(i, 2)==0 S=S-1/(2*i-1)*(1/(2^(2*i 1))+1/(3^(2*i-1))); else S=S+1/(2*i-1)*(1/(2^(2*i 1))+1/(3^(2*i-1))); end S=vpa(4*S, 30) %观察 30位有效数字
计算结果 >> calpi 2_1(10) ans = 3. 14159257960635063255949717131 >> calpi 2_1(20) ans = 3. 14159265358975625659354591335 >> calpi 2_1(50) ans = 3. 14159265358979323846264338328
Matlab 计算 梯形法 创建 m 文件 function calpi 3(n) x=0: 1/n: 1; y=1. /(1+x. ^2); S=2*sum(y)-1 -0. 5; 2*S/n
>> calpi 3(100) ans = 3. 14157598692313 >> calpi 3(500) ans = 3. 14159198692313 >> calpi 3(10000) ans = 3. 14159265192314
Matlab计算 创建m文件 function y=calpi 4(k) m=0; for n=1: k if rand(1)^2+rand(1)^2<=1 m=m+1; end; y=4*m/k; 观察结果,思考为什么?
- Slides: 34