4.2 数值计算 教案(2课时)

文档属性

名称 4.2 数值计算 教案(2课时)
格式 docx
文件大小 23.7KB
资源类型 教案
版本资源 教科版(2019)
科目 信息技术(信息科技)
更新时间 2020-11-23 15:46:36

图片预览

文档简介

教科版2019信息技术必修1数据与计算
第4单元计算与问题解决4.2 数值计算教学设计
【教材分析】
采用“提出问题—分析问题—引入新知识—解决问题—总结提高”的编写模式,通过每一个典型的、针对性强的、贴近现实的案例,把相关的基本概念、解题的基本方法和思路传授给学生,从而使学生形成深刻、形象、牢固的记忆,对启发思维、激励热情、提高学习效率起到重要作用。
程序设计不仅仅是让学生掌握一两门计算机语言,而是要让学生学习程序设计的基本概念和方法、掌握编程的技术,更重要的是培养学生逻辑思维和逻辑推理能力、自学能力、动手能力、分析问题和解决问题的能力、创新意识和创新能力。
数值计算作为计算数学的主要部分和关键环节,研究求解数学模型的理论及其算法和软件实现。算法针对实际问题求得符合精度的近似解,并对算法的收敛性、稳定性和误差进行分析、计算。数值计算方法的内容十分丰富,它在科学技术中正发挥着越来越多的作用,许多计算领域的问题,如计算物理、计算化学、计算经济学等都可归结为数值计算问题。
本节我们将围绕项目“与数学公式面对面”展开,探讨在中学数学领域中常见的数学公式与程序设计的有趣结合。本项目主要包含“绘制数学函数曲线”和“求解‘裴波那契’数列”两个任务。
用学生熟悉的数学问题作为活动的主线,任务一重在实现学科知识的融通,将数学函数与计算机模拟相融合,突出计算机在问题解决过程中的地位和作用。任务二重在介绍数值计算中最常用的计算方法——迭代。
【教学建议】
在本项目的教学过程中,对于基本概念、基本理论不应过度强调,可通过案例演示,激发学生学习的积极性和求知欲;同时要向学生介绍该项目的学习方法,强调学习程序设计是培养耐心、毅力、务实、严谨的学习方法的有效途径。建议教师选取一些可激发学生思考的问题,在共同讨论、探究的过程中体验基本概念和基本理论。
在教学过程中,引导学生学习数值计算方法内容的同时,训练和提升自己的计算思维能力,重视并积极探索如何通过程序来解决实际问题,并将其引入到教学内容中,推荐采用理论求解与计算机模拟相融合的教学模式。
任务一绘制数学函数曲线,通过不同的方式绘制三角函数。培养学生的信息意识,能针对实际问题选择合适的软件和方法;同时借助Python的科学计算模块和绘图库,突出算法思想、简化程序,同时让同学理解Python在程序设计中的优势,消除学生的畏难情绪,激发学习的热情。
任务二是求解斐波那契数列。对于数列本身学生可以很轻松地求解,教师应该把重点落在递推式的分析及迭代实现上,便于学生举一反三,从一个问题入手学会一类问题的解决方法。在编程技能方面,要关注函数的定义及调用方式。
【教学目标】
1.感受数据的图形化表示。
2.设计解析式或迭代方程,进行数值计算,解决问题。
3.了解数值类算法在实际问题解决时的应用及常用方法。
【教学重点、难点】
数据的图形化表示。设计解析式或迭代方程,进行数值计算,解决问题。数值类算法在实际问题解决时的应用及常用方法。
【教学过程】
第一课时
人们对计算机的最初应用大多是数值计算,主要借助计算机运算速度快、精确度高的特点来解决各种数学问题,如函数的计算、方程的求解、数列求和等都属于数值计算。
数学是计算机科学的理论基础之一。在实际问题的求解过程中,有许多数学分支,如解析几何、离散数学等,都是计算机科学所依赖的重要理论工具。借助计算机程序,可以解决很多数学方法所描绘的数值计算问题。本节我们将围绕“与数学公式面对面”项目探讨在中学数学领城中常见的数学公式与程序设计的有趣结合。
本项目主要包含“绘制数学函数曲线”和“求解斐波那契数列”两个任务。
任务一绘 制数学函数曲线
在数学课上经常需要手工绘制函数图像,今天我们借助计算机来绘制函数图像。
活动1用WPS表格绘制正弦曲线
利用平时使用的电子表格软件就能绘制函数图像。方法如下:若以30°为间隔,绘制0~360°之间的正弦函数图像,则首先需要在WPS中完成下列表格数据的计算。请填写表4.2.1。
填表之后,选择相应的数据,建立折线图图表,设置x轴数据系列格式,可绘制出如图4.2.1所示的函數图像。
仔细观察图像,会发现图像的关键点太少,精度不够,图像不光滑。要想提高图像的光滑程度,就要减小角度间隔,但间隔增加,工作量也会随之增加:每隔10画一个点,数据表上就会增加300多行新数据;如果以0.1°为间隔,将有3000多行数据。
活动2利用Python绘制正弦曲线
借助计算机程序描点,可以达到速度快且精确度高的效果。下面我们尝试利用Python编写程序绘制正弦曲线。
在Python中,绘制丽数图像一般要用到numpy和matplotlib两个模块,这两个模块需要另外安装。
numpy模块简介
numpy是-一个科学计算包,其中包含很多数学丽数,如三角丽处理大型矩阵、?矢数、矩阵计算方法等。通过该模块中的arange函数可以创建一个等差
数列。如在0~2?π之间每隔0.01取个值,则可以用arange(0,2*numpy.pi,0.01)来表示,其中numpy.pi表示π。下列代码可以产生sin(x)的若干个关键点。
#加载numpy模块并取一个简洁的别名为np,便于后续引用
import?numpy?as?np #x在0到2m之间,每隔0.01取一一个点
x=np.?arange(0,2*np.pi,0.01)
y=np.sin(x) #通过解析式计算列表x对应的列表y的值
matplotlib模块简介
matplotlib模块是Python中最出色的绘图库,功能很完善。调用matplotlib.pyplot时,坐标系可以根据数值范围自动生成。
matplotlib的绘图原理很简单,利用plot画线函数就可以在直角平面内轻松地将(x,?y)坐标点对连接成平滑曲线。例如:在上述代码的适当位置增加下列语句,就可以将刚才生成的关键点连接起来。
#加载matplotlib.?pyplot并取别名为plt
import?matplotlib.?pyplot?as?plt
plt.plot(x,y) #将点对连线
plt.?show() #将绘制的图像窗口显示出来
参考上述代码,让我们一起来完善以下Python程序,尝试绘出“sin(x)”“sin(-?x)”和“sin(2x)2”?的图像。
#加载numpy模块并取别名为np
#加载matplotlib.?pyplot并取别名为plt
import?matplotlib.pyplot?as?plt
#列表x在0到2r之间,每隔0.01取一个点
#求sin(x)对应的列表y1的值
y2=np.sin(-x) #求sin(-x)对应的列表y2的值
#求sin(2x)/2对应的列表y3的值
plt.plot(x,y1) #绘制sin(x)的图像
#绘制sin(-x)的图像
#绘制sin(2x)/2的图像
plt.?title('sin(x)') #设置图像标题
plt.?xlabel('X') #设置x轴标题
plt.ylabel('Y') #设置Y轴标题
plt.?show() #将绘制的函数图像窗口显示出来
运行上述代码,对比在活动1中生成的图像,程序绘制的函数图像果然平滑了很多,如图4.2.2所示。
第二课时
任务二求解斐波那契数列
活动1用WPS求解数列
斐波那契在《计算之书》中提出了一个有趣的兔子问题:假设一对兔子每个月可以生一对小兔子,一对兔子出生后第2个月就开始生小兔子。则一对兔子一年内能繁殖成多少对??10年呢?
根据描述,兔子的对数如图4.2.3所示。
从第3个月起,每个月大兔子的对数等于上个月大兔子与小兔子的对数之和(即上个月兔子总对数),每个月小兔子的对数等于上个月大兔子的对数(即上上个月兔子总对数)。
使用电子表格可以很方便地求解,如图4.2.4所示。
我们发现,当计算到第74个月的时候,由于数据范围及表示精度的问题,导致结果出错,如图4.2.5所示。
活动2用Python求解数列
第1个月和第2个月的兔子对数之和为第3个月的兔子对数,第2个月和第3个月的兔子对数之和为第4个月的兔子对数...每个月的兔子对数是前两个月的兔子对数之和,又同时作为下一个月兔子对数的加数。这种重复反馈的过程称为迭代。
迭代法也称辗转法,是用计算机解决问题的一-种基本方法。?迭代通常是为了接近并到达所需的目标或结果。每--次对过程的重复被称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。
由于在迭代系列中的每个月份兔子对数只跟前两个月有关,因此在编写程序时,只需两个变量f1和f2分别记录上上月和上月的数据。
请根据示意图完善下列程序代码。
def?fib(n):
#利用迭代求斐波那契数列的第n个数
f2=f1=1 #第1个月、第2个月初值设定
for?i?in?range(3,n+1): #_
f1,f2=f2,f1+f2
return?f2
n=int(input(?'输入需要计算的月份数:?'))
print(‘兔子总对数为:'?,fib(n)) #输出最终解
程序运行结果如下:
输入需要计算的月份数:?74
兔子总对数为:?1304969544928657
利用迭代算法解决问题,有三个关键步骤:?
(1?)确定迭代变量,如活动2中的fl、f2;?
(2)?建立迭代关系式;?
(3)?对迭代过程进行控制,
这是编写迭代程序必须考虑的问题,不能让迭代过程无休止地重复执行下去。
现代自然科学和工程电子技术的研究过程中,都离不开大规模的数学计算问题。例如:数学类课程中的线性方程求解、微分方程求解、概率统计等;实用性和实验性技术应用中的模拟核试验、油田开发、飞机设计等。
练习
1.尝试用Python绘制y=x2-2r+1的图像。
2.尝试用辗转相除法求解两个正整数的最大公约数。
【拓展训练】
尝试用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()
尝试用辗转相除法求解两个正整数的最大公约数。
参考答案:
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("运行完毕,请按回车键退出...")
【教学反思】