必修1:项目7:用计算机计算圆周率第二课时 课件(共24张PPT)

文档属性

名称 必修1:项目7:用计算机计算圆周率第二课时 课件(共24张PPT)
格式 zip
文件大小 8.8MB
资源类型 教案
版本资源 沪科版(2019)
科目 信息技术(信息科技)
更新时间 2023-03-30 15:06:16

图片预览

文档简介

(共24张PPT)
如何用Python语言编写计算点在圆内的概率?
用计算机计算圆周率
--设计简单数值数据算法(第二课时)
设计算法实现用随机投点法计算
项目七
项目学习目标02.探究和理解程序的选择结构和循环结构01.掌握数值数据的常用运算设计算法实现用随机投点法计算圆周率
随机投点法是通过在正方形内随机投点,用随机模拟的方法来估算圆周率。请尝试用Python语言,来计算圆周率。
程序设计的一般过程
1.分析问题
2.设计算法
3.编写程序
4.运行调试
设计算法实现用随机投点法计算圆周率
1.分析问题(数学思路)
设落在圆形内的豆子数为hits,总豆子数为darts,则:
单位圆面积为π,并且内切边长2的正方形,,落到圆里的概率乘以4就是π的值
设计算法实现用随机投点法计算圆周率
1.分析问题(分析)
随便投一个点,这个记为(x,y)落在圆内,则到圆心的距离x^2+y^2<1
例如投点10000次,落入圆内次数hits,π的值为hits/10000*4
以圆心为原点,建立二维坐标系:
任务一:小组活动数学思维分析随机投点法判断思路
设计算法实现用随机投点法计算圆周率
1.分析问题(计算机角度)
①确定总的投点数darts。
②在边长为1的正方形中投点,并判断这个点是否在扇形区域内,如果是,则扇形区域的投点数hits增加1。(每个投点的x坐标和y坐标都是[0,1)中的随机数;若x*x+y*y<1,则判断该点投在扇形区域内。)
③在所有点投完后,计算圆周率的近似值π。pi≈4*
使用计算机模拟随机投豆(也就是投点)的整个过程
这里涉及的数据变量有:总的投点数 darts,每个点的坐标值x、y,扇形区域的投点数hits,圆周率的近似值pi。
设计算法实现用随机投点法计算
2.设计算法(描述方法:自然语言,流程图,伪代码)
算法中哪几步在重复执行?
思考
设计算法实现用随机投点法计算
2.设计算法(描述方法:自然语言,流程图,伪代码)
流程图描述
开始
令hits=0,i=0
输入总的投点数darts
获取x,y的随机值
ii=i+1
计算圆周率的近似值
输出圆周率的近似值
结束




hits=hits+1
x^2+y^2<1
自然语言描述
任务二:根据自然语言描述,补全流程图
设计算法实现用随机投点法计算
3.编写计算圆周率程序
开始
令hits=0,i=0
输入总的投点数darts
获取x,y的随机值
ii=i+1
计算圆周率的近似值
输出圆周率的近似值
结束




hits=hits+1
x^2+y^2<1
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)
x*x+y*y<=1
hits=hits+1
任务四:个人活动,根据流程图,补全程序
#调用随机函数
设计算法实现用随机投点法计算
hits=hits+1
x^2+y^2<1
1.关系运算符
条件表达式
程序中表示判断条件的式子称为条件表达式,它由关系运算或逻辑运算构成,执行的结果为布尔值True或 False.
Python运算符 数学符号 名称 示例(dist=0.87) 结果
< < 小于 dist<1 True
<= ≤ 小于等于 dist<=1 True
> > 大于 dist>1 False
>= ≥ 大于等于 dist>=1 False
== = 等于 dist==1 False
!= ≠ 不等于 dist!=1 True
x^2+y^2<1
例如:判断一个数X是否为100到200之间的一个数。条件表达式为:100<=x<=200
也可以写成x<=200and100<=x
设计算法实现用随机投点法计算
常用的逻辑运算符包括与(and)或(or)、非(not)。这三种运算符的运算顺序是先not,再and,最后or,但可以使用括号来调整运算的先后顺序。
例如:判断一个学生是否为体重(weight)大于50千克或者身高(height)小于155厘米的女生(gender:female),条件表达式可写为:
(gender==“female”)and(weight>50 or height<155)
例如:判断一个学生是否为体重(weight)大于50千克并且身高(height)大于160厘米的女生(gender:female),条件表达式可写为:
(gender==“female”)and weight>50 and height<155
逻辑运算符
Python的基本控制结构
■ 选择结构
在解决问题的过程中,常常需要对事物进行判断和选择,在程序设计中主要是用if语句来实现判断和选择,if语句包括单分支if语句和双分支if语句、多分支if语句
■ 循环结构
计数循环(for循环)和条件循环(while循环)
复习上一节的命令:循环
for的一般格式:
for <循环变量> in <序列>:
<循环体>
while的一般格式:
while (条件表达式):
<循环体>
Python的基本控制结构
■ 选择结构
在解决问题的过程中,常常需要对事物进行判断和选择,在程序设计中主要是用if语句来实现判断和选择,if语句包括单分支if语句和双分支if语句、多分支if语句
条件
语句块1


条件
语句块1
语句块2


单分支
双分支
多分支
新命令:选择指令
if 的一般格式:
单分支if语句的格式:
if 条件表达式:
语句块1
注意:冒号:不能丢,
关键字所形成的的包含关系
Python的基本控制结构
例如,求x的绝对值的语句如下:
if x<0:
X=-X
if x>0:
x=x
Python的基本控制结构
双分支if语句的格式:
if 条件表达式:
语句块1
else:
语句块2
例如:
给定整数x判断奇偶。
x = int(input("请输入整数x:"))
if x % 2 == 0:
print("x为偶数")
else:
print("x为奇数")
Python的基本控制结构
多分支if语句的格式:
if 条件表达式1:
语句块1
elif条件表达式2:
语句块2
……
else:
语句块n
例如:
编写程序,输入身高和体重,计算身体的质量指数BMI值,并给出健康信息。这个问题可以用两种分支结构来实现,语句分别如下。
Python的基本控制结构
多分支if语句的格式:
if 条件表达式1:
语句块1
elif条件表达式2:
语句块2
……
else:
语句块n
例如:
编写程序,输入身高和体重,计算身体的质量指数BMI值,并给出健康信息。这个问题可以用两种分支结构来实现,语句分别如下。

height=eval(input(“请输入身高(米):”))
weight=eval(input(“请输入体重(千克):”))
bmi=weight/pow(height,2)
print(“BMI 数值为:%.2f”%bmi)
If bmi<18.5:#<18.5
print(“BMI指标为:偏瘦”)
elif bmi<25:# 18.5<= bmi <25
print(“BMI指标为:正常”)
elif bmi<30:# 25<= bmi <30
print(“BMI指标为:偏胖”)
else:
print(“BMI指标为:肥胖”)
任务三:小组活动,组内分工合作写出两种
Python的基本控制结构
例如:
编写程序,输入身高和体重,计算身体的质量指数BMI值,并给出健康信息。这个问题可以用两种分支结构来实现,语句分别如下。

height=eval(input(“请输入身高(米):”))
weight=eval(input(“请输入体重(千克):”))
bmi=weight/pow(height,2)
print(“BMI 数值为:%.2f”%bmi)
if bmi<18.5:#<18.5
print(“BMI指标为:偏瘦”)
if 18.5<=bmi<25:# 18.5<= bmi <25
print(“BMI指标为:正常”)
if 25<=bmi<30:# 25<= bmi <30
print(“BMI指标为:偏胖”)
if bmi>=30 :
print(“BMI指标为:肥胖”)
执行字符串表达式,并返回表达式的值
设计算法实现用随机投点法计算
4.运行调试计算圆周率程序
在 Python 中创建并运行程序,检查运行结果。可以发现,当总投点数为1000时,pi值的精确度还是很低的。通过增加总投点数,可以提高pi值的精确度。
1.分别输入1000、5000、10000,得到圆周率的近似值分别可以精确到第几位?
2.多次输入同样的总投点数1000,会得到不同的结果,这是为什么?如何减少这种不确定性?
总结
设计算法实现用随机投点法计算
1.条件表达式
关系运算符 逻辑运算符
2.选择结构语句(3种基本形式)
总结
请给自己评价 是/否,几颗星
能写出程序中的表达式吗
理解选择结构命令吗
只给题意要求能自己独立写程序吗
自我评价单
作业
练一练:活动7.2
对比两种计算圆周率的算法。填写表格3-5
from random import random
from time import clock
darts=int(input('请输入总的投点数:'))
clock()
hits=0
for i in range(darts):
x,y=random(),random()
if(x*x+y*y<=1):
hits=hits+1
pi=4*(hits/darts)
print('pi的值是', pi)
print("运行时间是:", clock(), '秒')
from math import sqrt
from time import clock
limit=float(input('输入精确度:'))
clock()
i=1
s=0
item=1
while item>=limit:
s=s+item
i=i+1
item=1/(i*i)
pi=sqrt(6*s)
print("pi的值是:",pi)
print("运行时间是:",clock(),'秒')
下课