资源简介 中小学教育资源及组卷应用平台 教科版必修1 4.2 数值计算 课题 必修1 4.2 数值计算 单元 4 学科 信息技术 年级 高一 学习 目标 1.通过求解一元二次方程的解,了解计算机编程解决数值计算问题的一般流程,并能够使用解析法解决实际问题。 2.通过绘制一元多次方程函数图像,了解Python利用numpy和matplotlib两个模块绘制图像的基本方法。 3.通过编程求解一元多次方程,了解迭代法的含义,并尝试用牛顿迭代法解决实际问题。 重点 1.了解数值类算法在实际问题解决时的常用方法,如解析法和迭代法。 2.能够利用numpy和matplotlib两个模块绘制函数图像。 难点 理解迭代法的含义,并能够用牛顿迭代法求解一元多次方程。 教学过程 教师活动 学生活动 设计意图 导入 5分钟 在数学课上经常需要手工绘制函数图像,今天我们借助计算机来绘制函数图像。 利用电子表格软件就能绘制函数图像。方法如下:若以30°为间隔,绘制0-360°之间的正弦函数图像,则首先需要完成课本中表4.2.1函数计算 表格数据的计算。 学生先完善表格中的数据。 通过完善表4.2.1,为下一步的利用wps绘制函数图像做准备。 教师 利用wps绘制的函数图像: 学生在老师的引导下,学习利用wps绘制函数图像。 让学生利用wps画图,培养动手能力,这让学生很有成就感。 讲授新知 介绍numpy模块 利用python绘制正弦曲线 在Python中,绘制函数图像一般要用到numpy和matplotlib两个模块,这两个模块需要另外安装。 numpy是一个科学计算包,其中包括很多数学函数,如三角函数、矩阵计算方法等 import numpy as np #加载numpy模块并取一个简洁的别名为np x=np.arrange(0,2*np.pi,0.01) # x在0到2π之间,每隔0.01取一个点 y=np.sin(x) #通过解析式计算列表x对应的列表y的值 学生学习numpy和matplotlib两个模块。 学生学习numpy模块的具体用法。 让学生学习新知,学习numpy和matplotlib这两个模块。 通过具体程序语句学习numpy模块的具体用法。 介绍Matplotlib模块 Matplotlib模块是一个绘图库 import matplotlib.pylot as plt #加载matplotlib.pylot并取别名为plt plt.plot(x,y) #将点对连线 plt.show() #将绘制的图像窗口显示出来 学生学习matplotlib模块的用法。 学生通过具体语句学习matplotlib的用法。 教师:两个模块的使用 学生在电脑上学习调试这个小程序,并运行。 让学生学会numpy模块 的使用。 并会它绘制函数曲线。 学生练习 参考上述代码,让我们一起来完善以下Python程序, 尝试绘出“sin(x)” “sin(-x)”和“sin(2x)/2”的图像。 程序见课本95页。 学生参考上述代码,尝试绘出“sin(x)” “sin(-x)”和“sin(2x)/2”的图像 做中学,意在引导学生学会两个模块的具体使用。 教师 数学家斐波那契在《计算之书》中提出了一个有趣的兔子问题:假设一对兔子每个月可以生一对小兔子,一对兔子出生后第2个月就开始生小兔子。则一对兔子一年内能繁殖成多少对?10年呢? 学生了解学习这个有趣 的兔子问题。从问题中发现规律。 以有趣的问题引入 教学 教师讲授新知 [1,1,2,3,5,8,13,21,34……] 斐波那契数列,兔子数列,黄金分割数列,随着数列项数 的增加,前一项与后一项之比越来越逼近黄金分割的数值, 0.6180339887 学生学习兔子序列的2个重要特征 意在让学生学习掌握兔子数列的两个特征。一是迭代。二是黄金分割。 教师介绍迭代的概念 第1个月和第2个月的兔子的对数之和为第3个月的兔子对数,第2个月和第3个月的兔子对数之和为第4个月的兔子对数……,每个月的兔子对数是前两个月的兔子对数之和,又同时作为下一个月兔子对数的加数。这种重复反馈的过程称为迭代。 迭代法也称辗转法,是用计算机解决问题的一种基本方法。迭代通常是为了接近并达到抽需的目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。 学习迭代法的含义,理解迭代法的迭代过程。 意在让学生学习迭代法的含义,理解迭代法的迭代过程。 Python 程序: def fib(n): #迭代求Fibonacci数列 f2=f1=1 for i in range(3,n+1): f1,f2=f2,f1+f2 return f2 n=int(input('输入需要计算的月份数:')) print('兔子总对数为:',fib(n)) input("运行完毕,请按回车键退出...") 学习迭代程序,从程序中理解迭代过程。 学习迭代程序,从程序中理解迭代过程。 课堂小结 2 分钟 老师带领着学生一起回顾本节课的知识。 1、理解解数据的图形化表示,如利用wps表格绘图 2、掌握numpy模块和matplotlib模块的安装和使用 3、理解斐波那契数列 4、理解迭代法 跟着老师一起总结本节课的内容。 再次巩固本堂课的知识,体现教学的完 整性。 练习 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() 尝试用Python绘制 y = x2 —2x + 1 的图像 巩固所学,熟悉numpy模块,matplotlib模块。 2、求解方程ax2+bx+c=0 import math a=float(input("请输入方程系数a(!=0):")) b=float(input("请输入方程系数b:")) c=float(input("请输入方程系数c:")) d=b*b-4*a*c if d>0: x1=(-b+math.sqrt(d))/(2*a) x2=(-b-math.sqrt(d))/(2*a) print("方程有两个不同的解",x1,x2) elif d==0: x1=-b/(2*a) print("方程有两个相同的解",x1) else: print("方程无解") 3、尝试用辗转相除法求解两个正整数的最大公约数。 参考答案: 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("运行完毕,请按回车键退出...") 4、牛顿迭代法求解x5+x4+x-3=0 参考代码: def f(x): #定义f(x)函数,计算f(x)=x5+x4+x-10 f=x**5+x**4+x-10 return f def f1(x): #定义f(x)函数,求导数f1(x)= 5*x4+4*x3+1 f1=5*(x**4)+4*(x**3)+1 return f1 #设置初始值 x=1 x1=2 #x1的初值只要确保|x-x1|>1e-10就可以 print('迭代过程中的x值:') #根据迭代公式计算 while abs(x-x1)>1e-10: x1=x y1=f(x) y2=f1(x1) x=x1-y1/y2 print(x) 学生求解方程ax2+bx+c=0 让学生通过求解方程的程序,培养解决问题的能力。 _21?????????è?????(www.21cnjy.com)_ 展开更多...... 收起↑ 资源预览