资源简介 4.2 数值计算 【学习目标】 1.通过求解一元二次方程的解,了解计算机编程解决数值计算问题的一般流程,并能够使用解析法解决实际问题。 2.通过绘制一元多次方程函数图像,了解Python利用numpy和matplotlib两个模块绘制图像的基本方法。 3.通过编程求解一元多次方程,了解迭代法的含义,并尝试用牛顿迭代法解决实际问题。 【教学重点】 1.了解数值类算法在实际问题解决时的常用方法,如解析法和迭代法。 2.能够利用numpy和matplotlib两个模块绘制函数图像。 【教学难点】 理解迭代法的含义,并能够用牛顿迭代法求解一元多次方程。 【教学过程】 第一课时 师:计算机最初研究的用途就是进行数值计算,因此计算机可以解决很多数学方法所描绘的数值计算问题。本节将围绕项目“与数学公式面对面”探讨在中学数学领域里常见的数学公式与程序设计的有趣结合。完成下列的项目报告书。 与数学公式面对面 了解计算机进行数值计算的基本流程和方法。 环节一:求解一元二次方程ax2+bx+c=0(a≠0) 1.用数学方法求解方程2x2+x-6=0。 2.用WPS表格绘制方程2x2+x-6=0函数图象,求解方程。 3.用Python编程求解ax2+bx+c=0(a≠0)的解。a,b,c由程序输入。 与数学公式面对面 了解计算机进行数值计算的基本流程和方法。 环节一:求解一元二次方程ax2+bx+c=0(a≠0) 1.用数学方法求解方程2x2+x-6=0。 2.用WPS表格绘制方程2x2+x-6=0函数图象,求解方程。 3.用Python编程求解ax2+bx+c=0(a≠0)的解。a,b,c由程序输入。 完成项目报告书的过程中,比较数学方法、软件工具和编程解决问题的异同。 参考答案: 方法一:写出数学方法求解方程2x2+x-6=0。 方程可因式分解为(2x-3)(x+2)=0,因此x=1.5或x=-2。 用求根公式计算得x=1.5或x=-2。 方法二:wps表格画图。 存在问题,如果需要图象更加光滑,必须x的取值间隔要小;取值范围要恰当。 285750051435 方法三:Python求解。 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("方程无解") 生:完成项目报告,并思考计算机编程在解决问题时的一般步骤流程和方法。 总结:计算机编程解决问题的一般流程 数学建模数值计算 实际问题数学问题解 一元二次方程编程解决问题的方法:解析法。 第二课时 一、引入 师:一元二次方程可以根据公式来直接求解,但一元多次方程没有现成的公式。可以利用绘制函数图像和编程实现问题的解决,完成项目报告。 与数学公式面对面 了解计算机进行数值计算的基本流程和方法。 环节二:求解一元多次方程x5+x4+x-3=0的解 1.利用Python绘制x5+x4+x-3=0在[-1,2]之间的函数图像。 2.用Python编程求解x5+x4+x-3=0。 与数学公式面对面 了解计算机进行数值计算的基本流程和方法。 环节二:求解一元多次方程x5+x4+x-3=0的解 1.利用Python绘制x5+x4+x-3=0在[-1,2]之间的函数图像。 2.用Python编程求解x5+x4+x-3=0。 为了完成该项目,必须学习如何利用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并取别名为plt x=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并取别名为plt x=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-3 f=x**5+x**4+x-3 return f def f1(x): #定义f1(x)函数,计算f'(x)= 5*x**4+4*x**3+1 f1=5*(x**4)+4*(x**3)+1 return f1 x1=0.5 #x1,x2的初值只要确保|x1-x2|>1e-10就可以 x2=1.5 #解系列初值 print('迭代过程中的x值:') #根据迭代公式计算 while abs(x1-x2)>1e-10: print(x2) x1=x2 x2=x1-f(x1)/f1(x1) print('近似解:',x1) #输出最后解 input("运行完毕,请按回车键退出...") 运行结果 迭代过程中的x值: 1.5 1.2197802197802199 1.057644072697476 1.004898720733028 1.0000381246489294 1.0000000023254536 1.0 近似解:1.0 运行完毕,请按回车键退出... 总结:一元多次方程编程解决问题的方法:牛顿迭代法。 计算机编程解决问题的一般流程 数学建模数值计算 实际问题数学问题近似解 展开更多...... 收起↑ 资源预览