补充实验

32
1 补补补补 补补补补补补补补

description

补充实验. 圆周率的近似计算. vpa(pi,101). ans = 3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170680. 1 . 圆周率 π 的计算历程. 所谓 “ 圆周率 ” 是指一个圆的周长与其直径的比值。古今中外,许多人致力于圆周率的研究与计算。为了计算出圆周率的越来越好的近似值,一代代的数学家为这个神秘的数贡献了无数的时间与心血。 - PowerPoint PPT Presentation

Transcript of 补充实验

Page 1: 补充实验

1

补充实验

圆周率的近似计算

Page 2: 补充实验

算的近似计圆周率π

vpa(pi,101)

ans =

3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170680

Page 3: 补充实验

1 . 圆周率 π 的计算历程所谓“圆周率”是指一个圆的周长与其直径的比值。古今中外,许多人致力于圆周率的研究与计算。为了计算出圆周率的越来越好的近似值,一代代的数学家为这个神秘的数贡献了无数的时间与心血。回顾历史,人类对 π 的认识过程,反映了数学和计算技术发展情形的一个侧面。 π 的研究,在一定程度上反映这个地区或时代的数学水平。德国数学家康托说:“历史上一个国家所算得的圆周率的准确程度,可以作为衡量这个国家当时数学发展水平的指标。”直到 19 世纪初,求圆周率的值应该说是数学中的头号难题。为求得圆周率的值,人类走过了漫长而曲折的道路。

Page 4: 补充实验

实验时期基于对一个圆的周长和直径的实际测量而得出的。在古代世界,实际上长期使用 π = 3 这个数值。 最早见于文字记载的有基督教《圣经》中的章节,其上取圆周率为 3 。这一段描述的事大约发生在公元前 950 年前后。

Page 5: 补充实验

几何法时期

真正使圆周率计算建立在科学的基础上,首先应归功于阿基米德。他是科学地研究这一常数的第一个人,是他首先提出了一种能够借助数学过程而不是通过测量的、能够把 π 的值精确到任意精度的方法。由此,开创了圆周率计算的第二阶段。

 圆周长大于内接正多边形周长而小于外切正多边形周长. 据说阿基米德用到了正96 边形才算出他的值域。

Page 6: 补充实验

在中国刘徽:公元 263 年前后,刘徽提出著名的 “割圆术”求出了比较精确的圆周率。他发现:当圆内接正多边形的边数不断增加后,多边形的周长会越来越逼近圆周长,而多边形的面积也会越来越逼近圆面积。于是,刘徽利用正多边形面积和圆面积之间的关系,从正六边形开始,逐步把边数加倍:正十二边形、正二十四边形,正四十八边形……,一直到正三○七二边形,算出圆周率等于三点一四一六,将圆周率的精度提高到小数点后第四位。

Page 7: 补充实验

在中国祖冲之 :  在刘徽研究的基础上,进一步地发展,经过既漫长又烦琐的计算,一直算到圆内接正24576 边形,而得到一个结论: 3.1415926 < π < 3.1415927 同时得到 π 的两个近似分数:约率为 22/ 7 ;   密率为 355/ 113 。他算出的 π 的 8 位可靠数字,不但在当时是最精密的圆周率,而且保持世界记录九百多年。以致于有数学史家提议将这一结果命名为“祖率”。

Page 8: 补充实验

分析法时期

这一时期人们开始摆脱求多边形周长的繁难计算,利用无穷级数或无穷连乘积来算 π 。1593 年,韦达( VieTa)给出

                                                                                                                                                                           

这一不寻常的公式是 π 的最早分析表达式。甚至在今天,这个公式的优美也会令我们赞叹不已。它表明仅仅借助数字 2 ,通过一系列的加、乘、除和开平方就可算出 π 值。

Page 9: 补充实验

接着有多种表达式出现。如沃利斯1650 年给出:

Page 10: 补充实验

发现了下面的公式

1706 年,英国天文学教授 John Machin 利用

12

1753

arctan12

1753

nxxxx

xxn

n

,2391

arctan451

arctan16

并利用这个公式计算到了圆周率的 100位 .

Page 11: 补充实验

1914 年,印度数学家 Srinivasa Ramanujan 发表了下面的公式:

0444 99

)263901103()!(4

)!4(22

9801

nnn

nnn

在 1985 年, Gosper 用这个公式计算到了圆周率的 17500000 位.

Page 12: 补充实验

1989 年 , David 和 Gregory Chudnovsky 发表了下面的公式

,640320

54514013413591409

)!()!3(

)!6()1(12

1

233

03

n

n

n n

nn

n

.

)640320()!3()!()13591409545140134()!6(

10005426880

033

nnnn

nn

并在 1994 年计算到了 4044000000 位.它的另一种形式是

Page 13: 补充实验

1995 年 , 由 David Bailey,Peter Borwein 和 Simon Plouffe 共同发表了下面的圆周率计算公式(简称 BBP 公式)

.68

158

148

218

4161

0

n

n nnnn

  该公式的最大优点在于:经后来人将该公式变形后打破了传统的计算方法,可以直接计算圆周率的任意第 n 位数,而不是先计算前面的 n-1 位数.

Page 14: 补充实验

1997 年, Fabrice Bellard 发表了一个比BBP 算法更快的公式

0 110

25634

114

321024

1641

n

n

nnn

从而,大大降低了圆周率近似值的计算量 .

.910

1710

4510

4310

64

nnnn

Page 15: 补充实验

( 1 )

1. 圆周率 的幂级数计算方法

.

Maclaurinarctan

的近似值计算,展开式的利用

x

3 5 1 2 1( 1)arctan .

3 5 2 1

n nx x xx x

n

11 1 ( 1)4arctan 1 4(1 ).

3 5 2 1

n

n

Page 16: 补充实验

).12

)1(51

31

1(41arctan41

n

n

编写下面的程序 :n=10; %选择展开式的次数s=0;digits(22); % 定义计算过程中的精度for k=1:n s=s+4*(-1)^(k+1)/(2*k-1);endvpa(s,20) % 定义显示精度为 20 位

Page 17: 补充实验

1 14[arctan arctan ]

2 3

,2391

arctan451

arctan16

3 5 2 11

3 5 2 11

1 1 1 1 1 ( 1) 14[

2 3 2 5 2 2 1 2

1 1 1 1 1 ( 1) 1]

3 3 3 5 3 2 1 3

nn

nn

n

n

( 2)

( 3 ) Machin 公式

Page 18: 补充实验

      1 .利用下面的等式计算 的值,并与例()比较

2

21

2 1

21

3 1

31

1( ) ,

8 (2 1)

( 1)( ) ,

12

( 1)( ) ,

32 (2 1)

n

n

n

n

n

an

bn

cn

练习

Page 19: 补充实验

的数值积分计算方法圆周率.2

.,

]10[

的近似值编写下面的程序计算选取中点为上,等份,在每一个小区间分成,将积分区间

i

n

n=50; % 定义等分积分区间数,可以更改i=0:1/n:1;s=0;for k=1:length(i)-1 s=s+(1/(1+((i(k)+i(k+1))/2)^2))*1/n;end4*s

1

0 2 411

dxx

1

0 211

4 dxx

Page 20: 补充实验

等分区间数 n

10 3.14242598500110

20 3.14180098689309

50 3.14162598692300

100 3.14160098692312

500 3.14159298692312

1000 3.14159273692313

5000 3.14159265692313

的近似值圆周率

.

1

的近似值圆周率数计算出的给出的是不同等分区间表

表1

Page 21: 补充实验

数值积分简介

在高等数学中有一类积不出的积分,如

1

1

2

0 4

1

0

2

dxx

dxe x

(概率积分)    (椭圆积分)

利用数值积分法

梯形法抛物线法

Page 22: 补充实验

输入: x=0:0.1:1; y= exp(-x.^2); trapz(x,y)输出: ans = 0.746211

MATLAB命令•梯形方法 —— trapz(x,y) •抛物线方法—— quad(f,a,b)

1

0

2

dxe x如求积分的近似值

y=inline('exp(-x.^2)'); quad(y,0,1)

ans = 0.746826

梯形方法 抛物线方法

Page 23: 补充实验

梯形方法

x

y

oa

b1x

2x 3x

公式推导:条件: .],[)( 类间断点上连续或有有限个第一在 baxf

当区间划分为 n 等分时

)(b

adxxf

nsss 21

1s2s

3s4s

n

iii

ii xxxfxf

11

1 ))(2

)()((

, ))()(2)((2

)(1

1

bfxfaf

hTdxxf

n

iin

b

a

——trapz(x,y)

1,,2,1 ,

nkkhaxnab

h k 其中

Page 24: 补充实验

复化梯形方法

当区间等距划分为 n 个子区间时

nkkhaxn

abh

bfxfafh

Tdxxf

k

n

iin

b

a

,,2,1,0 ,

, ))()(2)((2

)(1

1

x

y

oa

b1x

2x 3x 4x 5x

现对每个子区间再二等分,得到 2n 个子区间

nkkhaxn

abh

bfxx

fxfafh

Tdxxf

k

n

i

iin

iin

b

a

,,2,1,0 ,

, ))()2

(2)(2)((4

)(1

11

12

))2

((2

1

1

1

n

i

iin

xxfhT ))

2((

2

1

1

n

in

hihafhT

))()((2

)( 1

bfaf

abTdxxf

b

a

Page 25: 补充实验

举例 利用复化梯形算法求 Pi 的近似值 .

x0 1

4

y

))2

((2

1

1

4

12

1

0 2

n

inn

hihafhTTdx

x

))()((21 bfafab

T

运用复化梯形算法

Page 26: 补充实验

输入初值:

输出结果: STOP

No

Yes

clear;a=0;b=1;f=inline('4/(1+x*x)');t1=(b-a)/2*(f(a)+f(b));er=1;n=1;while er>1.0e-6

h=(b-a)/n; s=0; for i=1:n s=s+f(a+i*h-h/2); end t2=(t1+h*s)/2; er=abs(t2-t1); fprintf('t=%.6f,r=%.6f\n',t2,er);

n=2*n; t1=t2;end

))2

((2

1

12

n

inn

hihafhTT

Page 27: 补充实验

抛物线方法

x

y

oa

b1x

2x 3x

分析:

条件:.],[)( 类间断点上连续或有有限个第一在 baxf

1s2s

3s4s 梯形法是对每个子区间用梯形

面积近似曲线下面积累加而成;而抛物线法是对每个子区间考虑其中点,用三点决定的抛物线下面积来近似 .

0y

2/h2/h

1y

2y

)4(6 210 yyyh

S

))()2

(4)((6 3

322

233 xf

xxfxf

xxS

Page 28: 补充实验

当区间划分为 n(n>1) 等分时

nkkhaxn

abh

xxfxfxfxf

hSdxxf

k

n

k

kkn

n

kkn

b

a

,,2,1,0 ,

, ))2

(4)()(2)((6

)(1

11

10

x

y

oa

b1x

2x 3x 4x 5x

)(3

1 22 nnn TTT

——辛浦生 (Simpson) 方法

))()2

(4)((6 3

3223 xf

xxfxf

hS

Page 29: 补充实验

clear;a=0;b=1;f=inline('4/(1+x*x)');t1=(b-a)/2*(f(a)+f(b));er=1;s1=0;n=1;

while er>1.0e-6 h=(b-a)/n; s=0; for i=1:n s=s+f(a+i*h-h/2); end t2=(t1+h*s)/2; s=t2+(t2-t1)/3; er=abs(s-s1); fprintf('s=%.6f,r=%.6f\n',s,er); s=s1; n=2*n; t1=t2;

end

Page 30: 补充实验

s=3.133333,r=3.133333s=3.141569,r=3.141569s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593s=3.141593,r=3.141593

Page 31: 补充实验

)(.5 蒙特卡罗法的随机模拟计算方法圆周率

cs=0n=500 %随机取点数for i=1:n a=rand(1,2); if a(1)^2+a(2)^2<=1 cs=cs+1 endend4*cs/n

Page 32: 补充实验

的近似值分别为圆周率

取算得依次取

50000,5000,3000,1000500,n

3.184000000000003.104000000000003.138666666666673.12080000000000 3.14376000000000

  从计算结果看:这种数据模拟算法收敛的速度很慢.虽然在实验次数较少时,算得的近似值距离真实值误差较大,但这种数据模拟方法简单易行.在精度要求不是很高的情况下,这种取随机数进行数据模拟的方法还是有一定的实用价值,通过简单编程我们可以模拟出许多数学现象.