1、4.2数值计算感受数据的图形化表示感受数据的图形化表示0101设计解析式方程设计解析式方程0202设计迭代方程设计迭代方程0303进行数值计算进行数值计算0404了解数值类算法在实际问题解了解数值类算法在实际问题解决时的应用及常用方法决时的应用及常用方法0505第第 一一 章章 节节didiyi yizhangzhangjiejie 数值计算,其实是数学的一个分支,它以数字计算机求解数学问题的理论和方法为研究对象,借助计算机运算速度快、精确度高的特点来解决各种数据问题。1.1 导入什么是数值计算04函数计算方程求解数列求和数值计算=建立WPS表格进行计算建立折线图图表1.2 用WPS表格绘制正
2、弦曲线05xSin(x)Sin(-x)Sin(2x)/210=sin(pi()*A2/180)23036014360Pi()即数学常量即数学常量,使用此函数可使用此函数可以将以将值精确到小数点后值精确到小数点后1414位。位。1.2 用WPS表格绘制正弦曲线06Pi()/180 则相当于则相当于1 1度。度。B2单元格中的公式=Sin(Pi()=Sin(Pi()*A2/180)A2/180)C2单元格中的公式=Sin(-Pi()=Sin(-Pi()*A2/180)A2/180)D2单元格中的公式=Sin(2=Sin(2*Pi()Pi()*A2/180)/2A2/180)/2选择相应的数据建立折
3、线图图表设置X轴数据系列格式1.2 用WPS表格绘制正弦曲线07 图像的关键点少,精度不够,图像不光滑。每隔1画一个点,数据表上就会增加300多行新数据。我们还可以借助程序描点绘制函数来达到速度快且精度高的效果。1.3 利用python绘制正弦曲线Numpy模块Matplotlib模块两个模块的安装08 简介 numpy是一个科学计算包,其中包含很多数学函数,如三角函数、矩阵计算方法等。通过该模块中的arange函数可以创建一个等差数列。如在02之间每隔0.01取个值,则可以用arange(0,2*numpy.pi,0.01)来表示,其中numpy.pi表示。下列代码可以产生sin(x)的若干
4、个关键点。应用创建三角函数图像#加载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.01y=np.sin(x)#通过解析式计算列表x对应的列表y的值1.3.1 Numpy模块09 简介 matplotlib模块是Python中最出色的绘图库,功能很完善。调用matplotlib.pyplot时,坐标系可以根据数值范围自动生成。matplotlib的绘图原理很简单,利用p
5、lot画线函数就可以在直角平面内轻松地将(x,y)坐标点对连接成平滑曲线。例如:在上述代码的适当位置增加下列语句,就可以将刚才生产的关键点连接起来。应用#加载matplotlib.pyplot并取别名为pltimport matplotlib.pyplot as pltplt.plot(x,y)#plot()函数将点对连线plt.show()#show()函数将绘制的图像窗口显示出来1.3.2 Matplotlib模块10 参考代码并补充#加载numpy模块并取名为npimport matplotlib.pyplot as plt#加载matplotlib.pyplot并取名为plt#x在0到
6、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(2*x)/2图像plt.title(sin(x)#设置图像标题plt.xlabel(X)#设置X轴标题plt.ylabel(Y)#设置Y轴标题 plt.show()#将绘制的函数图像窗口显示出来input(运行完毕,请按回车键退出.)1.4 Python绘制函数图像11 完整代码import numpy as np#加载numpy模块并取名为npimport ma
7、tplotlib.pyplot as plt#加载matplotlib.pyplot并取名为pltx=np.arange(0,2*np.pi,0.01)#x在0到2之间,每隔0.01取一个点y1=np.sin(x)#求sin(x)对应的y1值y2=np.sin(-x)#求sin(-x)对应的y2值y3=np.sin(2*x)/2#求sin(2x)/2对应的y3值plt.plot(x,y1)#绘制sin(x)图像plt.plot(x,y2)#绘制sin(-x)图像plt.plot(x,y3)#绘制sin(2*x)/2图像plt.title(sin(x)#设置图像标题plt.xlabel(X)#设
8、置X轴标题plt.ylabel(Y)#设置Y轴标题 plt.show()#将绘制的函数图像窗口显示出来input(运行完毕,请按回车键退出.)1.4 Python绘制函数图像121.4 Python绘制函数图像13第第 二二 章章 节节didiererzhangzhangjiejie2.1 斐波那契数列故事得从西元1202年说起,话说有一位意大利青年,名叫斐波那契。在他的一部著作中提出了一个有趣的问题:假设一对刚出生的小兔一个月后就能长成大兔,再过一个月就能生下一对小兔,并且此后每个月都生一对小兔,一年内没有发生死亡,问:一对刚出生的兔子,一年内繁殖成多少对兔子?152.1 斐波那契数列16
9、右边这一列数字是有规律的。第一个数和第二个数为1,之后的每一个数为之前两个数之和。比如,六月份的兔子数量为四月份和五月份兔子数量之和,即8=5+3。2.1.1斐波那契数列-数学计算17 1,1,1+1=2,2+1=3,3+2=5,5+3=8,8+5=13,13+8=21,.数学计算2.1.2 斐波那契数列-WPS18WPS2.1.3 斐波那契数列-Python19Python第第 三三 章章 节节didisansanzhangzhangjiejie3.1迭代法 每一次的重复称为一次迭代,每次迭代的结果被用作下一次的迭代值 一般用于数值计算。累加、累乘都是迭代算法的基础应用。迭代法(辗转法)是一
10、种不断用变量的旧值递推出新值的解决问题的方法。迭代算法是用计算机解决问题的一种基本方法。21确定迭代变量建立迭代关系式3.1迭代法对迭代过程进行控制22利用迭代法来解决问题,有三个关键的步骤:第第 四四 章章 节节didisi sizhangzhangjiejie4.1 练习一24尝试用python绘制y=x2-2x+1的图像import numpy as np#加载numpy模块并取名为npimport matplotlib.pyplot as plt#加载matplotlib.pyplot并取名为pltx=np.arange(-10,10,0.01)#x在0到2之间,每隔0.01取一个点y
11、=x*2-2*x+1#求x*2-2x+1对应的y1值plt.plot(x,y)#绘制图像plt.title(y=x*2-2*x+1)#设置图像标题plt.xlabel(X)#设置X轴标题plt.ylabel(Y)#设置Y轴标题 plt.show()#将绘制的函数图像窗口显示出来input(运行完毕,请按回车键退出.)4.2 练习二尝试用辗转相除法求解两个正整数的最大公约数25辗转相除法:用较大数除以较小数,再用出现的余数(第一余数)去除除数,再用出现的余数(第二余数)去除第一余数,如此反复,直到最后余数是0为止。如果是求两个数的最大公约数,那么最后的除数就是这两个数的最大公约数。4.2.2练习
12、二实现原理讲解尝试用辗转相除法求解两个正整数的最大公约数26step1:将两数中大的那个数放在m中,小的放在n中。step2:求出m被n除后的余数r。step3:若余数为0则执行步骤(7),否则执行步骤(4)。step4:把除数作为新的被除数;把余数作为新的除数。step5:求出新的余数r。step6:重复步骤(3)到(5)。step7:输出n,n即为最大公约数。4.2.2练习二python代码实现尝试用辗转相除法求解两个正整数的最大公约数m,n=map(int,input(请输入两个数:).split(,)if mn:m,n=n,mr=m%nwhile r:m=n n=r r=m%nprint(f最大公约数师n)m,n:先用split函数把输入用逗号分隔的两个数分离,再用map函数把分离的两个数变成整数,最后分别赋值给m和n。if:在后面的代码中m作为被除数,要比n大,所以如果m小于n,则交换m和n的值(Python中不用第三个变量作为中间变量,可直接用上述语句进行变量间值的交换)。while:如果余数不为0,则把n赋值给m,r赋值给n,算出新的余数,直到余数变为0,程序结束,得到的n即为最大公约数。print:打印出最大公约数。27谢谢聆听