4.2 数值计算【新教材】2021-2022学年教科版(2019)高中信息技术必修一 课件(25张PPT)

文档属性

名称 4.2 数值计算【新教材】2021-2022学年教科版(2019)高中信息技术必修一 课件(25张PPT)
格式 pptx
文件大小 3.0MB
资源类型 教案
版本资源 教科版(2019)
科目 信息技术(信息科技)
更新时间 2021-12-21 11:03:28

图片预览

文档简介

(共25张PPT)
第2单元 编程计算
第1单元 初识数据与计算
第3单元 认识数据
第4单元 计算与问题解决
第5单元 数据分析与人工智能
信息技术
(必修1)
4.2 数值计算
学习目标
★ 感受数据的图形化表示。
★ 设计解析式或迭代方程,进行数值计算,解决问题。
★ 了解数值类算法在实际问题解决时的应用及常用方法。
导入新课
什么是数值计算?
数值计算,其实是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象,借助计算机运算速度快、精确度高的特点来解决各种数据问题。
函数计算
方程求解
数列求和
数值计算
项目提出
项目:与数学公式面对面
任务一:绘制数学函数曲线
任务二:求解斐波那契数列
数学课上的描点法绘制函数图像
1.建立平面直角坐标系
2.根据解析式计算出若干点的坐标并画在坐标系内
3.将这些点依次连接起来
通过描点法会发现,若想画出精度相对较高的函数,则需取多个绘制点进行绘制。想画出趋于完美的函数曲线则需要花费较长时间。
如何借助计算机绘制数学函数曲线?
建立WPS表格
完善相关数据
建立折线图图表
x sin(x) sin(-x) sin(2x)/2
1 0 0 0 0
2 30 0.5 -0.5 0.5
3 60 0.866025404 -0.866025404 0.866025404
… … … … …
14 360 0 0 0
活动1 用WPS表格绘制正弦曲线
B2单元格中的公式
=SIN(PI()*A2/180)
C2单元格中的公式
=SIN(-PI()*A2/180)
D2单元格中的公式
=SIN(2*PI()*A2/180)/2
PI( )即数学常量π,使用此函数可以将π值精确到小数点后14位。
PI( )/180则相当于1度。
填表之后,选择相应的数据,建立折线图图表,设置x轴数据系列格式,可绘制出函数的图像。
用WPS表格绘制函数图像还是不太方便,我们还可以用什么样的方法实现函数的绘制呢?
操作步骤:选择数据——插入——x、y散点图——带平滑线的散点图
仔细观察图像,会发现图像的关键点太少,精度不够,图像不光滑。要想提高图像的光滑程度,就要减小角度间隔,但间隔增加,工作量也会随之增加:每隔1°画一个点,数据表上就会增加300多行新数据;如果以0.1°为间隔,将有3000多行数据。
可以借助计算机程序描点绘制函数来达到速度快且精度高的效果。
numpy 模块简介
numpy是一个科学计算包,其中包含很多数学函数,如三角函数、矩阵计算方法等。通过该模块中的arange函数可以创建一个等差数列。如在0~2Π之间每隔0.01取个值,则可以用arange(0, 2*numpy.pi ,0.01)来表示, 其中numpy.pi表示Π 。下列代码可以产生sin(x)的若干个关键点。
活动二:利用Python绘制正弦曲线
在Python中,绘制函数图像一般要用到numpy和matplotlib两个模块,这两个模块需要另外安装。
#加载numpy模块并取一个简洁的别名为np,便于后续引用
import numpy as np
#x在0到2Π:之间,每隔0.01取一个点
x=np.arange(0,2*np.pi,0.01) #调用numpy模块的arange函数,其参数为开始参数0,结束参数2*np.pi,间隔参数0.01
y=np.sin(x) #通过解析式计算列表x对应的列表y的值
Numpy应用—创建三角函数图像
matplotlib 模块简介
matplotlib模块是Python中最出色的绘图库,功能很完善。调用matplotlib.pyplot时,坐标系可以根据数值范围自动生成。
matplotlib的绘图原理很简单,利用plot画线函数就可以在直角平面内轻松地将(x, y)坐标点对连接成平滑曲线。例如:在上述代码的适当位置增加下列语句,就可以将刚才生产的关键点连接起来。
#加载matplotlib.pyplot并取别名为plt
import matplotlib.pyplot as plt
plt.plot(x,y) #plot()函数将点对连线
plt.show() #show()函数将绘制的图像窗口显示出来
import numpy as np
plt.plot(x,y)
x=np.arrange(0,2*np.pi,0.01)
import matplotlib.pylot as plt
y=np.sin(x)
plt.show()
利用arrange函数取点
开始
加载numpy模块
加载matplotlib.pylot模块
求sin(x)对应的y的值
绘制sin(x)的图像
显示绘制的图像
结束
参考前页代码,让我们一起来完善以下Python程序,尝试绘出"sin(x)" "sin(-x)"和“sin(2x)/2" 的图像。
______________________ #加载numpy模块并取名为np
Import matplotlib.pyplot as plt #加载matplotlib.pyplot并取别名为plt
______________________ #列表x在0到加之间,每隔0.01取一个点
______________________ #求sin(x)对应的列表y1的值
y2=np.sin(-x) #求sin(-X)对应的列表y2的值
______________________ #求sin(2x)/2对应的列表y3的值
plt.plot(x,y1) #绘制sin(x)的图像
① import numpy as np
② x=np.arrange(0,2*np.pi,0.01)
③ y1=np.sin(x)
④ y3=(np.sin(2*x))/2




____________________________ #绘制sin(—X)的图像
____________________________ #绘制sin(2x)/2的图像
plt.title(‘sin(x)’) #设置图像标题
plt.xlabel(‘x’) #设置X轴标题
plt.ylabel(‘y’) #设置Y轴标题
plt.show( ) #将绘制的函数图像窗口显示出来
⑤ plt.plot(x,y2)
⑥ plt.plot(x,y3)


运行代码,对比在活动1中生成的图像,程序绘制的函数图像果然平滑了很多,如下图图所示。
Python语言绘制的函数图像
Wps电子表格绘制的函数图像
项目提出
项目:与数学公式面对面
任务一:绘制数学函数曲线
任务二:求解斐波那契数列
活动1 用WPS求解数列
斐波那契在《计算之书》中提出了一个有趣的兔子问题:假设一对兔子每个月可以生一对小兔子,一对兔子出生后第2个月就开始生小兔子。则一对兔子一年内能繁殖成多少对?10年呢?
从笫3个月起,每个月大兔子的对数等于上个月大兔子与小兔子的对数之和(即上个月兔子总对数), 每个月小兔子的对数等于上个月大兔子的对数(即上上个月兔子总对数)。
使用电子表格求解
.
.
.
我们发现,当计算到第74个月的时候,由于数据范围及表示精度的问题,导致结果出错。
借助电子表格软件计算时,只能算到第74个月,而我们需要计算10年即第120个月的兔子数量。
下面,我们借助python语言进行求解。
第1个月和第2个月的兔子对数之和为第3个月的兔子对数
第2个月和第3个月的兔子对数之和为笫4个月的兔子对数…
第118个月和第119个月的兔子对数之和为第120个月的兔子对数
每个月的兔子对数是前两个月的兔子对数之和, 又同时作为下一个月兔子对数的加数。这种重复反馈的过程称为迭代。
活动2 用Python 求解数列
第n-2个月
第n-1个月
第n个月
第n-1个月
第n个月
第n+1个月
迭代法
迭代法也称辗转法,是用计算机解决问题的一种基本方法。迭代通常是为了接近并到达所需的目标或结果。每一次对过程的重复被称为一次"迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
由于在迭代系列中的每个月份兔子对数只跟前两个月有关,因此在编写程序时,只需两个变量f1记录上上个月的数据,用f2记录上个月的数据。
f1
f2
F1+f2



迭代计算的示意图
根据示意图完善下列程序代码。
def fib(n):
#利用迭代求斐波那契数列的第n个数
f2=f1=1
for i in range(3,n+1):
f1,f2=f2,fl+f2
return f2
n=int(input('输入需要计算的月份数:'))
print('兔子总对数为: ', fib(n))
程序运行结果:
输入需要计算的月份数:74
兔子总对数为:1304969544928657
利用迭代算法解决问题的步骤
有三个关键步骤:
(1)确定迭代变量,如活动2中的fl、f2;
(2)建立迭代关系式;
(3)对迭代过程进行控制,这是编写迭代程序必须考虑的问题, 不能让迭代过程无休止地重复执行下去。
1. 尝试用Python绘制 y = x2 -2x + 1 的图像。
import numpy as np #加载numpy模块并取名为np
import matplotlib.pyplot as plt #加载matplotlib.pyplot并取名为plt
x=np.arange(-10,12,0.01)
y=x**2-2*x+1
plt.plot(x,y)
plt.title('一元二次方程')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
课堂练习
2. 尝试用辗转相除法求解两个正整数的最大公约数。
num1=int(input('请输入第一个正整数:'))
num2=int(input('请输入第二个正整数:'))
m=max(num1,num2)
n=min(num1,num2)
r=m % n
while r!=0:
m=n
n=r
r=m % n
print('这两个数的最大公约数为:',n)
input("运行完毕,请按回车键退出...")
绘制
数学
函数
曲线
wps绘制
Python绘制
numpy模块
matplotlib
模块
课堂小结
迭代
迭代的三个关键步骤