资源简介 4.2 数值计算 第4单元 计算与问题解决 学 习 目 标 3.了解数值类算法在实际问题解决时的应用及常用方法。 2.设计解析式或迭代方程,进行数值计算,解决问题。 1.感受数据的图形化表示。 设计解析式或迭代方程,进行数值计算,解决问题。 (重点) 了解数值类算法在实际问题解决时的应用及常用方法。(难点) 计算机最初研究的应用大多是数值计算,人们主要借助计算机运算速度快,精确度高的特点来解决各种数学问题,如函数计算、方程的求解、数列求和等都属于数值计算。 在数学课上经常需要手工绘制函数图像,今天我们借助计算机来绘制函数图像。 A B C D x sin(x) sin(-x) sin(2x)/2 1 0 0 0 0 2 30 3 60 … … … … … 14 360 0 0 0 表4.2.1 函数计算 活动1 用WPS表格绘制正弦曲线 方法如下:若以30°为间隔,绘制0-360°之间的正弦函数图像,则首先需要完成下列表格数据的计算。 任务一 绘制数学函数曲线 利用wps绘制的函数图像 方法:选择相应的数据,建立折线图表,设置x轴数据系列格式。 绘制出如下函数图像: 活动2 利用Python绘制正弦曲线 任务一 绘制数学函数曲线 在Python中,绘制函数图像一般要用到Numpy和 Matplotlib两个模块,这两个模块需要另外安装。 numpy模块简介 numpy是一个科学计算包,其中包括很多数学函数,如三角函数、矩阵计算方法、矢量运算、线性代数等。 通过该模块中的arange函数可以创建一个等差数列。 如在0-2π之间每隔0.01取个值,则可以用arange(0,2* numpy.pi,0.01)表示,其中numpy.pi表示π。 下列代码可以产生sin(x)的若干个关键点。 import numpy as np #加载numpy模块并取一个简洁的别名np,便于后续引用 x=np. arange(0,2*np.pi,0.01) #x在0到2π之间,每隔0.01取一个点 y=np.sin(x) #通过解析式计算列表x对应的列表y的值 matplotlib模块是一个绘图库。调用matplotlib.pyplot时,坐标系可以根据数值范围自动生成。 matplotlib的绘图原理很简单,利用plot画线函数就可以在直角平面内轻松地将(x,y)坐标点对连接成平滑曲线。例如:在上述代码的适当位置增加下列语句,就可以将刚才生成的关键点连接起来。 matplotlib模块简介 import matplotlib.pyplot as plt #加载matplotlib.pyplot并取名p1t plt.plot(x,y) #将点对连线 plt.show() #将绘制的图像窗口显示出来 利用Python绘制正弦曲线方法: 导入numpy模块,通过该模块中的arange函数可以创建一个等差数列,也就是描点法中的取x值,然后用y=np.sin(x)计算y的值。 接着调用matplotlib模块绘制函数图像。调用matplotlib.pyplot在直角平面内轻松地将(x,y)坐标点对连接成平滑曲线。 绘制y=sin(x)函数的图像程序如下: import numpy as np #加载numpy模块并取一个简洁的别名为np, 便于后续引用 import matplotlib.pyplot as plt #加载matplotlib.pyplot并取别名为pltx=np.arange(0,2*np.pi,0.01) #x在0到2π之间,每隔0.01取一个点y=np.sin(x) #求sin(x)对应的y值plt.plot(x,y) #绘制sin(x)图像,系统自动配置蓝色plt.title('sin(x)') #设置图像标题plt.xlabel('X') #设置X轴标题plt.ylabel('Y') #设置Y轴标题plt.show() #将绘制的函数图像窗口显示出来 参考以上代码,完善P95-P96的Python程序。 #加载numpy模块并取别名为np import?matplotlib.pyplot?as?plt #加载matplotlib.pyplot并取别名为plt #列表x在0到2π之间,毎隔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( ) #将绘制的函数图像窗口显示出来 import numpy as np x=np.arange(0,2*np.pi,0.01) y1=np.sin(x) y3=np.sin(2*x)/2 plt.plot(x,y2) plt.plot(x,y3) 利用python程序绘制的函数图像 任务二 求解斐波那契数列 活动1 用WPS求解数列 斐波那契在《计算之书》中提出了一个有趣的兔子问题:假设一对兔子每个月可以生一对小兔子,一对兔子出生后第2个月就开始生小兔子。则一对兔子一年内能繁殖成多少对?10年呢? 图4.2.3 兔子数量 使用电子表格可以很方便地求解,如上左图所示。 当计算到第74个月的时候,由于数据范围及表示精度的问题,导致结果出错,如上右图所示。 第1个月和第2个月的兔子的对数之和为第3个月的兔子对数,第2个月和第3个月的兔子对数之和为第4个月的兔子对数……,每个月的兔子对数是前两个月的兔子对数之和,又同时作为下一个月兔子对数的加数。这种重复反馈的过程称为迭代。 迭代法也称辗转法,是用计算机解决问题的一种基本方法。迭代通常是为了接近并达到所需的目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会被用来作为下一次迭代的初始值。 4.2.6 计算的迭代示意图 任务二 求解斐波那契数列 活动2 用Python求解数列 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)) #输出结果 input("运行完毕,请按回车键退出...") 程序执行后,输入74,运行结果: 利用迭代算法解决问题,有三个关键步骤: (1) 确定迭代变量,如活动2中的f1、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("运行完毕,请按回车键退出...") 巩固提升 展开更多...... 收起↑ 资源预览