【教学目标】 知识与能力:
1、通过解一元二次方程,对比人工计算、软件计算、编程计算在数值类问题中的异同,了解编程算法设计中解析法实现数值计算。
2、学习计算机描点绘图的原理,掌握用Python中numpy和matplotlib模块图像的方法。 过程与方法:
通过项目学习和任务引导学习程序设计在解决数学问题中的作用和优势。 情感态度价值观:
1、培养学生逻辑思维和逻辑推理能力,学会分析问题和解决问题的能力。 2、学会通过不同方法解决同一问题,培养发散思维和创新意识。 【教学重难点】
1、分析对比出人工计算、软件计算、编程计算在数值类问题中的异同; 2、能用Python中numpy和matplotlib模块绘制数学函数曲线 【教学环境】
网络教室,教学多媒体设备或电子教室 【学习方法】
任务引导、自主探究、合作学习法、演示法 【学习过程】
计算机应战争需求被发明出来,最初的目的就是借助计算机的高速度、高精度来完成数
值计算。今天我们就一起体验编程计算中的解析法实现数值计算,共同完成“与数学公式面对面”的项目学习。
本节是“4.2数值计算”的第一课时,学习目标有两个:一是通过求解一元二次方程的根,对比人工计算、软件计算、编程计算在数值类计算问题中的区别,学会解析法的用法。二是掌握用Python中numpy和matplotlib模块绘制图像的方法。
一、任务一
同学们打开本节学案看【导学一】
首先我们来看一个大家最熟悉的计算问题:求一元二次方程的根。大家马上动笔,一分
钟完成导学一用你自己的方式解出它的根是多少。
我观察了同学们的解题过程,大部分同学是用因式分解,将方程分解为(2x-3)(x+2),
进而求解;还有别的方法吗?
对,用求根公式计算。
这两个办法都可行。如果用计算机解题我们用什么办法呢?请同学们观看微课视频: 用电子表格绘制图像的原理是什么?对,就是用描点法绘制函数图线。 有了函数曲线,可以找出当y=0时,x的值即为根值。
导学1是手工进行数学方法计算,微课中是用工具软件绘图,大家讨论归纳这两种办法
各自有什么优点和缺点呢?下面小组讨论,有结论的小组派代表发言。
好,三组同学举手。 学生A:用电子表格计算求Y值,然后描点绘图的速度快可靠度高。手工算速度慢,有可能出错。
这位同学总结了软件计算的优缺点,非常好,请坐。
二组回答:学生B:手工计算比较灵活,除了用(求根)公式,还能用因式分解的办法。 非常好,还有没有补充?没有,回答的很到位,请坐。 对比内容 优点 缺点 数学方法——手工计算 解法灵活多样 手工计算,速度慢可靠度低 只能解特殊方程,一般方程的结精度 果只能是表达式,给不出最终值 取大约值。通用性低。 对于这两种方法,我们还应该思考一个角度:数值计算的精度问题。
数值巧合这两个办法才能解除准确值,手工计算得到一个表达式,绘图求根也只是个大约值。有没有办法既满足通用性的要求,还能又准又快呢?
那么今天的主角“编程计算”就可以实现这些要求。 编程计算基本的思路就是用求根公式来解方程。
首先为了满足方程的通用性要求,方程系数应该是从键盘获得的。我们定义abc三个变
WPS——软件计算 公式计算,速度快可靠度高 取点少,准确度低。取值范围要恰当。 绘图求根,数值巧合才是准确值,一般情况都是量保存方程系数,键盘输入时需要用什么函数?对input()函数,那么提到input(),就一定要确定获得值得数据类型。第二个要确定的数据转换函数用哪个?Int()函数float()函数,选哪个?
第二个要考虑的问题是数据类型。不能只面向整形,如果是带有小数的,我们需要定义为浮点型。
计算时,要先求得Δ值,这是数学建模的时候判断有几个根的依据。同样道理我们用第
四个变量 d保存Δ值。
请大家看导学三,将下面的流程图补充完整,思考我给你的问题。可以讨论,小组派代
表发言。
点拨:同学们在填写流程图时遇到了平方根的问题。其实咱们右上角的“提示窗”注明
否 开始 输入a,b,c 提示窗 sqrt( )函数返回数字x的平方根。 注意:sqrt( )是不能直接使用的,需要导入math模块。 d=b*b-4*a*c d______0 d______0 x1=_________________ x2=_________________ x=______________ 是 输出“两个不同解”,x1,x2 否 输出“无实数解” 输出“两个相同解”,x 是 结束 了一个信息:sqrt( )函数的作用是求平方根。但它是不能直接使用的,需要导入math模块
后使用。
具体代码是:math.sqrt(b)。继续导学三。
这个算法的设计使用了求根公式解方程,就是一个典型的解析法求解问题的例子。咱们可以笼统的把解析法概括为:综合分析多个已知条件,建立数学模型,用解析式(代数表达式)来求解问题。
那么咱们找同学来回答刚才的问题:
1、这个流程图展示的算法是个什么结构?这个结构用到的什么语句来处理? 多分支结构。If-elif-else语句。
2、导入math模块,用什么命令实现?这个问题我来解答。首先我们说说什么是模块? 这个大家都认识吧?那么你知道擎天柱的车厢里面是什么?对他的武器库。Python也有自己的“武器库”,就是这里所谓的模块。Python为了实现复杂功能,提供了许多具有固定而且可以重复利用的代码块,我们称之为模块。要使用其中的函数,必须要先用import导入。举例为:import math。注意这个导入命令一般放在代码段的开头,坚持先导入后使用的原则。一会我们讲到的计算模块numpy和绘图模块matplotlib都是这样的“武器库”。
二、任务二
刚才的微视频中我们学习了如何用描点法绘制函数图像,如果直接用Python来绘图,
我们也需要借助模块的帮助:
numpy是一个科学计算包。其中包含很多数学函数,如数列、三角函数、矩阵计算方法
等。同样要绘制y=2*x*x+x-6的图线,我们可以先用numpy中的arange函数创建一个等差数列,也就是描点法中的取x值,然后代入方程式计算得到y值。
图像绘制我们就需要在matplotlib模块中调用matplotlib.pyplot帮我们实现图线、
直角坐标轴、标题和刻度的绘制,pyplot是Python的一个2D绘图模块,是数值计算可视化的重要工具。
依照刚才的介绍,同学们尝试绘制y=2x*x+x-6的在[-3,2]之间的图线,完成导学四并
展示。
Import numpy as np
#加载numpy模块并取一个简洁的别名np,方便后续引用
Import matplotlib.pyplot as plt #加载matplotlib.pyplot并取名plt x=np.arange(-3,2,0.01) y=2*x**2+x-6
#在-3到+2之间,每间隔0.01取一个x的值 #求对应的y值
#绘制图像,系统自动配置蓝色
plt.plot(x,y)
plt.title(‘y=2*x^2+x-6’) plt.xlabel(‘x’) plt.ylabel(‘y’) plt.show( ) 点拨:
#设置图像标题 #设置x轴标题 #设置y轴标题
#将绘制的图像窗口显示出来
1、函数arange(取值起始点,取值终止点,步长),通过它我们可以得到一个等差数
列。
2、x**2就是x*x,π表示为pi。
3、matplotlib模块中用单引号,而不是双引号。 【课堂小结】
本节我们完成了一组对比,分别用手工计算、软件计算、编程计算三种办法解同一道方
程,体验数值计算中三种方式的各自的特点,学会了用解析法进行数值计划。
我们学习了numpy和matploylib绘制方程式的图像,了解了计算机描点法绘图的基本
原理。
相信同学们能喜欢上编程计算的高效和便捷,下一节我们继续尝试更多函数图像的绘制
操作,并学会用用牛顿迭代方法,解一元多次方程。今天的课就上到这里,下课。
range(start, end, step),返回一个list(列表)对象也就是range.object,起始值为start,终止值为end,但不含终止值,步长为step。只能创建int型list。
arange(start, end, step),与range()类似,也不含终止值。但是返回一个array(数组)对象。需要导入numpy模块(import numpy as np或者from numpy import*),并且arange可以使用float型数据。
4.2 数值计算(第一课时)
课后反思
本视频内容是4.2数值计算的第一课时。本节重难点是分析对比出人工计算、软件计算、编程计算在数值类问题中的异同;能用Python中numpy和matplotlib模块绘制数学函数曲线。本节课内容需要有较强的逻辑思维能力和分析能力,有一定难度。
在三种计算方式的对比过程中,软件计算求一元二次方程的根教材用的是WPS。但学生机房的软件只有Excel,所以在理解软件绘图时会有困难。好在主角是“编程计算”,学生通过小组讨论交流,去分析算法结构,掌握解析法对实际问题解决的方法。
第二个任务是编程回执数学函数曲线,要求学生以方程图线为模板将作图技能迁移到三角函数图线的制作,同样需要学生有较强的动手能力。
“求解一元二次方程的根”和“绘制函数图像”都是学生在学习数学中遇到的比较熟悉的问题,通过不同的方法决绝同一问题,可以培养学生的信息意识,学会针对实际问题选择合适的软件和方法,培养发散思维和创新意识。
4.2 数值计算(第一课时)
课标分析
本节探讨数学公式与编程计算结合的实例“与数学公式面对面”,让学生了解程序设计的基本概念和方法,掌握编程计算中用解析法解决实际问题,感受编程绘图的方法实现数据的图形化表示。更重要的是培养学生的逻辑思维和逻辑推理能力、分析能力、动手能力和解决问题的能力、创新意识。
数值计算作为计算数学的主要部分和关键环节,研究求解数学模型的理论、算法和软件实现。算法设计必须符合实际问题求解的精度需求,同时借助丰富的数值计算方法可以广泛地在多种领域中进行数学建模并编程计算予以解决。
“求解一元二次方程的根”和“绘制函数图像”都是学生在学习数学中遇到的比较熟悉的问题,通过不同的方法决绝同一问题,可以培养学生的信息意识,学会针对实际问题选择合适的软件和方法,培养发散思维和创新意识。
4.2 数值计算(第一课时)
教材分析
本节是必修1数据与计算中4.2数值计算。本节围绕“与数学公式面对面”项目展开,探讨在中学数学领域中常见的数学公式与程序设计的有趣结合,本项目包含“绘制数学函数曲线”“求解斐波那契数列”两个任务,设计为两节课,每节课完成一个任务。
第一课时即为本教学设计的内容。包括:
(1)通过求解一元二次方程的根,对比人工计算、软件计算、编程计算在数值类计算问题中的异同,了解编程算法设计中解析法实现数值计算。
(2)通过绘制一元二次函数、三角函数图像,学习计算机描点绘图的原理,掌握用Python中numpy和matplotlib模块绘制图像的方法。 第一课时的教学重难点:
1、分析对比出人工计算、软件计算、编程计算在数值类问题中的异同; 2、能用Python中numpy和matplotlib模块绘制数学函数曲线。 第二课时内容是介绍数值计算中最常用的计算方法——迭代法及使用。
4.2 数值计算(第一课时)
学情分析
通过前三章的学习,学生已经初步掌握了Python编程的方法,如基本的输入输出语句、选择结构和循环结构的实现,能修改仿写已有的代码,具备一定的编写程序代码和尝试解决问题的能力。
本章第一节4.1算法及其特征让学生对算法概念进行了深入了解,让学生学习了枚举法。本节的编程算法实现给学生掌握解析法提供了机会,也为实现复杂功能引入了“模块”概念,从而实现编程绘图功能,这都使得学生能更深入理解Python编程思想,掌握编程计算解决实际问题的能力。
与数学公式面对面
——4.2数值计算(第一课时)学案
一、项目指南 1.项目主题 探讨数学公式与程序设计的结合,体验利用计算机进行数值计算来解决问题的过程和方法。 2.目标要求 (1)通过求解一元二次方程的根,对比人工计算、软件计算、编程计算在数值类计算问题中的异同,了解编程算法设计中解析法实现数值计算。 (2)通过绘制一元二次函数、三角函数图像,学习计算机描点绘图的原理,掌握用Python中numpy和matplotlib模块绘制图像的方法。 3.实施建议 (1)对比分析,总结归纳,找出高效可靠的计算方法,认真感受数学方法与计算思维的异同;; (2)积极探索如何通过程序来解决实际问题,提高对实际问题的解析建模能力; (3) 合作探究,互相学习,掌握原理,融会贯通。 二、项目学习 课堂环节 项目活动 目标一 提出问题 通过解一元二次方程,对比人工计算、软件计算、编程计算在数值类计算问题中的异同,了解数值计算的基本流程,体验解析法在解决实际中的应用。 求解一元二次方程ax2+bx+c=0 (a≠0) 导学1 用数学方法求解方程 2x2+x-6=0 导学2 观看微视频,了解用WPS表格绘制一元二次函数y=2x2+x-6的图像。 对比内容 数学方法——手工计算 WPS——软件计算 手工计算 求解方程 观摩视频 自主学习 优点 缺点 对比内容 数学方法——手工计算 WPS——软件计算 回顾分支 编程求解 目标二 提出任务 导学3 编程求解方程ax2+bx+c=0 (a≠0) 定义变量d=b2-4ac,依据d值的分布,判断方程根的情况。 请将流程图补充完整。 【语法小问答】 1、这个流程图展示的算法是个什么结构?这个结构用到的什么语句来处理? _________________________、_________________________ 2、导入math模块,用什么命令实现? ____________________________________________________ ____________________________________________________ 通过绘制一元二次函数图像,学习计算机描点绘图的原理,掌握用Python中numpy和matplotlib模块绘制图像的方法。 参考一元二次函数y=2x2+x-6的在[-3,2]之间的绘图法,绘制正弦函数y=sin(x) 在[0,2π]之间的图像。 导学4 先读后练 例题: import numpy as np #加载numpy模块并取一个简洁的别名np,方便后续引用 import matplotlib.pyplot as plt #加载matplotlib.pyplot并取名plt x=np.arange(-3,2,0.01) y=2*x**2+x-6 plt.plot(x,y) #在-3到+2之间,每间隔0.01取一个x的值 #求对应的y值 #绘制图像,系统自动配置蓝色 #设置图像标题 #设置x轴标题 #设置y轴标题 #将绘制的图像窗口显示出来 plt.title(‘y=2*x^2+x-6’) plt.xlabel(‘x’) plt.ylabel(‘y’) plt.show( ) 完善以下Python程序:尝试画出sin(x)的图像。 import numpy as np #加载numpy模块并取一个简洁的别名np,方便后续引用 迁移运用 _______________________ #加载matplotlib.pyplot并取名plt x=_____________________ #列表x在0到2π之间,每间隔0.01取一个值 y=np.sin(x) plt.plot(x,y) #求sin(x)对应的y值 #绘制sin(x)图像 plt.title(‘y= sin(x)’) plt.xlabel(‘x’) plt.ylabel(‘y’) plt.show( ) 【点拨】: #设置图像标题 #设置x轴标题 #设置y轴标题 #将绘制的图像窗口显示出来 1、函数arange(起始点,终止点,步长),通过它我们可以得到一个等差数列。 2、x**2就是x*x,π表示为pi。 3、matplotlib模块中用单引号,而不是双引号。 回想本节: 1、 2、 3、 课堂小结
4.2 数值计算(第一课时)
效果分析
学习计算机通过编程计算解决实际问题的一般过程,通过对比人工计算、软件计算、编程计算的优缺点来实际体验,掌握解析法的应用,非常直接地锻炼了学生逻辑思维和分析能力。
对“算法精度”问题的引导与思考,让学生对数值计算的理解和功效更加了解,可以帮助学生的提高信息意识。
通过变形金刚中擎天柱的例子,将python的“模块”类比为“武器库”,非常形象地为编程绘图导入,同时也突破了“模块”这一概念的理解,为提高编程绘图技能的掌握发挥了较好的效果。
因篇幅问题不能全部显示,请点此查看更多更全内容