资源简介 4.2 数值计算【学习目标】1.通过求解一元二次方程的解,了解计算机编程解决数值计算问题的一般流程,并能够使用解析法解决实际问题。2.通过绘制一元多次方程函数图像,了解Python利用numpy和matplotlib两个模块绘制图像的基本方法。3.通过编程求解一元多次方程,了解迭代法的含义,并尝试用牛顿迭代法解决实际问题。【教学重点】1.了解数值类算法在实际问题解决时的常用方法,如解析法和迭代法。2.能够利用numpy和matplotlib两个模块绘制函数图像。【教学难点】理解迭代法的含义,并能够用牛顿迭代法求解一元多次方程。【教学过程】第一课时师:计算机最初研究的用途就是进行数值计算,因此计算机可以解决很多数学方法所描绘的数值计算问题。本节将围绕项目“与数学公式面对面”探讨在中学数学领域里常见的数学公式与程序设计的有趣结合。完成下列的项目报告书。完成项目报告书的过程中,比较数学方法、软件工具和编程解决问题的异同。参考答案:方法一:写出数学方法求解方程2x2+x-6=0。方程可因式分解为(2x-3)(x+2)=0,因此x=1.5或x=-2。用求根公式计算得x=1.5或x=-2。方法二:wps表格画图。存在问题,如果需要图象更加光滑,必须x的取值间隔要小;取值范围要恰当。方法三:Python求解。import matha=float(input("请输入方程系数a(!=0):"))b=float(input("请输入方程系数b:"))c=float(input("请输入方程系数c:"))d=b*b-4*a*cif 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("方程无解")生:完成项目报告,并思考计算机编程在解决问题时的一般步骤流程和方法。总结:计算机编程解决问题的一般流程数学建模数值计算实际问题数学问题解一元二次方程编程解决问题的方法:解析法。第二课时一、引入师:一元二次方程可以根据公式来直接求解,但一元多次方程没有现成的公式。可以利用绘制函数图像和编程实现问题的解决,完成项目报告。为了完成该项目,必须学习如何利用Python绘制函数图像和编程求解一元多次方程。二、Python绘制函数图像师:在Python中绘制函数图像一般要用到numpy和matplotlib两个模块。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() #将绘制的函数图像窗口显示出来练习:模仿绘制sin函数的方法,完成项目报告书,绘制x5+x4+x-10=0的图像。生:import numpy as np #加载numpy模块并取一个简洁的别名为np,便于后续引用import matplotlib.pyplot as plt #加载matplotlib.pyplot并取别名为pltx=np.arange(-1,2,0.01) #x在-1,2之间,每隔0.01取一个点y=x**5+x**4+x-3 #求对应的y值plt.plot(x,y) #绘制图像,系统自动配置蓝色plt.title('x^5+x^4+x-3') #设置图像标题plt.xlabel('X') #设置X轴标题plt.ylabel('Y') #设置Y轴标题plt.show() #将绘制的函数图像窗口显示出来师:请同学们根据函数图像估算函数的解是多少?三、编程求解一元多次方程师:在解决该问题时,我们将引入一个新的算法:迭代法。迭代法也称辗转法,是让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值。其中牛顿迭代法是求解方程根的重要方法之一。用牛顿迭代法求解x5+x4+x-3=0的步骤可以理解为:1.选取x1=0作为方程的初始解(x0应选取在解附近,这个可以通过观察函数图像得到);2.新解,其中f(x1)= x15+x14+x1-3,f'(x1)=5*x14+4*x13+1;3.如果|x1-x2|<1e-10,则解为x2,否则x1=x2,跳转到(2)。练习:利用牛顿迭代法求解方程x5+x4+x-3=0。生:def f(x):#定义f(x)函数,计算f(x)=x**5+x**4+x-3f=x**5+x**4+x-3return fdef f1(x):#定义f1(x)函数,计算f'(x)= 5*x**4+4*x**3+1f1=5*(x**4)+4*(x**3)+1return f1x1=0.5 #x1,x2的初值只要确保|x1-x2|>1e-10就可以x2=1.5 #解系列初值print('迭代过程中的x值:')#根据迭代公式计算while abs(x1-x2)>1e-10:print(x2)x1=x2x2=x1-f(x1)/f1(x1)print('近似解:',x1) #输出最后解input("运行完毕,请按回车键退出...")运行结果迭代过程中的x值:1.51.21978021978021991.0576440726974761.0048987207330281.00003812464892941.00000000232545361.0近似解:1.0运行完毕,请按回车键退出...总结:一元多次方程编程解决问题的方法:牛顿迭代法。计算机编程解决问题的一般流程数学建模数值计算实际问题数学问题近似解 展开更多...... 收起↑ 资源预览