项目七第二课时用随机投点法计算圆周率 课件(共16张PPT) 2022—2023学年沪教版(2019)高中信息技术必修一

文档属性

名称 项目七第二课时用随机投点法计算圆周率 课件(共16张PPT) 2022—2023学年沪教版(2019)高中信息技术必修一
格式 pptx
文件大小 2.7MB
资源类型 教案
版本资源 沪科版(2019)
科目 信息技术(信息科技)
更新时间 2023-06-12 12:30:22

图片预览

文档简介

(共16张PPT)
试讲人:xxx
时间:xxxx.xx.xx
随机投点法计算圆周率
复习回顾
有哪些方法来计算圆周率?
沃利斯公式
欧拉公式
精确到小数点后18位
精确到小数点后16位
课程导入
今天日期在圆周率中排第几位?
20061012
你的生日"20061012"出现在π的第82,688,636位
20060412
你的生日"20060412"出现在π的第123,120,089位
20230608
今天日期"20230608"出现在π的第54,541,190位
设计算法实现用随机投点法计算
什么是随机投点法?
随机投点计算圆周率模拟器
随机投点法是通过在正方形内随机投点,用随机模拟的方法来估算圆周率。
请尝试用Python语言,来计算圆周率。
设计算法实现用随机投点法计算
分析问题(数学思维)
设落在圆形内的豆子数为hits,总豆子数为darts,则:
分析问题
设计算法
编写程序
调试运行
蒙特卡罗法
二十世纪四十年代中期
如何求π:
随便投一个豆子,这个记为(X,Y)落在圆内,则到圆心的距离为x2+y2<1
分析问题
设计算法
编写程序
调试运行
蒙特卡罗法
二十世纪四十年代中期
(x,y)
如何求点数:
如何判断点所在区域:
hits+
1
2
使用计算器模拟随机投豆的整个过程
分析问题
设计算法
编写程序
调试运行
总数darts
投中hits+1
首先,确定总的投点数darts。
1
其次,在边长为1的正方形中投点,并判断这个点是否在扇形区域内,如果是,则扇形区域的投点数hits增加1。(每个投点的x坐标和y坐标都是[0,1)中的随机数;若x2+y2<1,则判断该点投在扇形区域内。)
2
最后,在所有点投完后,计算圆周率的近似值pi。
3
1.输入总的投点数darts
2.令hits=0
3.循环i从0到darts,step1
3.1 获取x,y的随机值
3.2 如果x2+y2<1,则hits增加1
4.计算圆周率的近似值
5.输出圆周率的近似值
自然语言描述
算法哪几步在重复执行?
for循环语句的一般格式:
for<循环变量> in <序列>:
<循环体>
while循环语句的一般格式:
while <条件表达式>
<循环体>
循环结构
分析问题
设计算法
编写程序
调试运行
单分支一般格式:
if……
双分支一般格式:
if……else
选择结构
多分支一般格式:if……elif……else
1.输入总的投点数darts
2.令hits=0
3.循环i从0到dars-1,step1
3.1 获取x,y的随机值
3.2 如果x2+y2<1,则hits增加1
4.计算圆周率的近似值
5.输出圆周率的近似值
功能:生成随机浮点数、整数、字符串
1.random.random()用于生成一个0到1的随机浮点小数:0<=n<1.0
2.random.randint(a,b)用于产生一个指定范围内的整数,生成随机数:a<=n<=b
random模块
算法
分析问题
设计算法
编写程序
调试运行
分析问题
设计算法
编写程序
调试运行
填一填:
流程图
i<=darts
获取x,y的随机值
hits=hits+1
i=i+1
1.输入总的投点数darts
2.令hits=0
3.循环i从0到dars-1,step1
3.1 获取x,y的随机值
3.2 如果x2+y2<1,则hits增加1
4.计算圆周率的近似值
5.输出圆周率的近似值
自然语言描述
根据自然语言描述,补全流程图
分析问题
设计算法
编写程序
调试运行
from random import random
darts=int(input(“请输入总的投点数:”))
hits=0
for i in range(darts):
x,y=random(),random()
if_ _______
____ ___
pi=4*(hits/darts)
print(“pi的值是”,pi)
hits=hits+1
x*x+y*y<1
填一填:
流程图
代码
i<=darts
获取x,y的随机值
hits=hits+1
i=i+1
在 Python 中创建并运行程序,检查运行结果。可以发现,当总投点数为1000时,pi值的精确度还是很低的。通过增加总投点数,可以提高pi值的精确度。
分析问题
设计算法
编写程序
调试运行
1000 5000 10000
A组
B组
C组
分成6个小组分别输入1000、5000、10000,完成下面表格,得到圆周率的近似值分别可以精确到第几位?
任务二
多次输入同样的总投点数1000,会得到不同的结果,这是为什么?
1000 5000 10000
A组 3.116 3.1212 3.1428
B组 3.118 3.1132 3.1416
C组 3.112 3.1268 3.1596
小结
分析问题:随机投点法设计圆周率原理
1
设计算法:循环结构、选择结构、Random函数
2
编写程序、调试运行:完成计算圆周率计算
3
循环结构:for……in
选择结构:if……
Random函数:random.random()
课后作业
利用turtle画图工具模拟投机投点的过程
试讲人:xxx
时间:xxxx.xx.xx
感谢观看