第4章 非线性方程数值解法
- 格式:ppt
- 大小:1.18 MB
- 文档页数:71


1《数值分析》课程教学大纲
课程编号:07054111
课程名称:数值分析
英文名称:Numerical Analysis
课程类型:公共基础
课程要求:必修
学时/学分:32/2(讲课学时:32 实验学时:0 上机学时:0)
适用专业:材料成型及控制工程
一、课程性质与任务
数值分析是数学科学的一个分支,它研究用计算机求解各种数学问题的数值计算方法及其
理论与软件实现。随着计算机以及科学技术的快速发展,求解各种数学问题的数值方法也越来
越多地应用于科学技术的各个领域,数值分析也因此成为高等学校理工科专业的一门重要课程。
与其他数学课程一样,数值分析也是一门内容丰富,研究方法深刻,有自身理论体系的课程,
既有纯数学高度抽象性与严密科学性的特点,又有应用的广泛性与实际实验的高度技术性等特
点,是一门与计算机密切结合,实用性很强的数学课程。
通过本课程的教学,使学生掌握在计算机上解决常见数学问题的常用的数值算法,熟悉各
种算法的基本原理和适用范围,了解误差分析、收敛性及稳定性的基本理论。培养学生运用计
算机解决实际问题的基本技能和基本素质,为学生学习后续专业课程和将来运用数值分析的知
识与技能解决本专业实际问题打下坚实的基础。
二、 课程与其他课程的联系
学生在学习本课程之前,应学习过高等数学、线性代数等课程,并了解一门编程语言或一
种科学计算软件。高等数学和线性代数课程的学习,为本课程提供必需的数学基础知识;具备
编程能力则可以使学生在计算机上编制程序,通过典型算例验证所学算法的有效性并应用到实
际问题中。本课程学习结束后,学生可具备进一步学习相关课程的理论基础,为学习后续课程
如计算流体力学、有限元分析等奠定知识基础。
三、课程教学目标
1.通过本课程的学习,使学生掌握现代科学计算中所常用的一些数值计算方法,熟悉这些算法
的思想与基本原理,了解其适用范围。(支撑毕业能力要求1.1,1.3,2.1)
2.通过本课程的学习,使学生了解误差分析,收敛性及稳定性等基本理论。(支撑毕业能力要
数值分析与数值计算方法
数值分析与数值计算方法是现代科学与工程领域中的重要学科,它涉及到利用计算机和数值方法解决数学问题的理论和技术。本文将从数值分析的基本概念、应用领域以及常见的数值计算方法等方面进行探讨。
一、数值分析的基本概念
数值分析是一门研究数学算法与计算机实现相结合的学科,旨在通过数学模型的建立和数值计算方法的选择,对实际问题进行定量分析和计算。它不仅包括了数值计算方法的研究,还包括了误差分析、计算复杂性和算法设计等内容。
数值分析的核心任务是将问题转化为数学模型和计算机可处理的形式,通过数值计算方法求解模型得到近似解。数值分析的基本思想是通过将连续问题离散化,将其转化为离散的代数问题,然后利用数值计算方法进行求解。
二、数值分析的应用领域
数值分析广泛应用于科学和工程领域,例如物理学、化学、生物学、经济学、计算机科学等。在实际的科学研究和工程应用中,常常需要对现象进行数值建模和计算求解,以获得更加准确的结果。
在物理学中,数值分析用于求解微分方程、积分方程等物理模型,并模拟和预测天体运动、流体流动等自然现象。在化学和生物学中,数值分析被用于计算分子结构、化学反应动力学等问题。在经济学中,数值分析可以用于建立经济模型、进行风险评估和决策分析。
三、常见的数值计算方法
1. 插值和拟合方法:插值和拟合方法用于根据已知数据点的函数值,构造出一个逼近原函数的函数。常见的插值方法有拉格朗日插值和牛顿插值;拟合方法包括最小二乘拟合、多项式拟合等。
2. 数值积分方法:数值积分方法用于计算函数在一定区间上的定积分。常见的数值积分方法有梯形规则、辛普森规则等。
3. 数值微分方法:数值微分方法用于在离散数据点上估计函数的导数。常见的数值微分方法有中心差分法和向前差分法等。
4. 常微分方程数值解法:常微分方程数值解法用于求解常微分方程的数值解。常见的数值解法有欧拉法、龙格-库塔法等。
5. 线性方程组的数值解法:线性方程组的数值解法用于求解线性代数方程组的数值解。常见的数值解法有直接解法和迭代解法。
1 第3章 非方程(组)的数值解法
3.1 引 言
在第2章中,我们已经学过线性方程组的数值解法,但是在实际问题中,常常遇到的是非线性方程(组)的求解问题,而非线性问题比线性问题复杂,因此,非线性模型常常用线性模型来近似代替;然而,在精度要求比较高的情形下,必须直接求解非线性问题。本章首先讨论单个方程的求根方法,如二分法,不动点迭代法及其加速方法,牛顿迭代法及其改进方法,并讨论迭代序列的收敛性,收敛速度和误差估计等,最后简要介绍非线性方程组的一些数值解法。
定义3.1.1 对于单变量方程
()0fx (3.1.1)
如果有*x(实数或复数),使*()0fx,则称*x为方程(3.1.1)的根(root),或函数()fx的零点(zero point).
定义3.1.2 设(1)mm是整数,若函数()fx可以写成
*()()()mfxxxgx,且*lim()0xxgx, (3.1.2)
则称*x为方程(3.1.1)的m重根(root of multiplicity m)或函数()fx的m重零点(zero of
multiplicity m). 特别地,当1m时,称*x为方程(3.1.1)的单根(simple root).
定理3.1.1 设()fx在*x处m阶导数存在,则*x是函数()fx的m重零点的充分必要条件是
**(1)*()()()0mfxfxfxL,()*()0mfx. (3.1.3)
若()fx为多项式
1110()nnnnfxaxaxaxaL,
其中0na,(0,1,,)iainL为实数,则称方程(3.1.1)为n次代数方程(algebraic equation of
degree n)。根据代数基本定理,方程(3.1.1)在复数范围内有且仅有n个根(含复根,m重根为m个根)。理论上已证明,当次数4n, 方程的根可用求根公式表示;而当5n时,方程没有一般的求根公式,通常都要用数值方法求解。
求解有lgx和x的方程编程
非线性方程求根数值解法
实验目的
(1)通过对二分法与牛顿迭代法做编程练习和上机运算,进一步体会二分法和牛顿法的不同。
(2)编写割线迭代法的程序,求非线性方程的解,并于牛顿迭代法作比较。
一、实验内容
1、用牛顿迭代法求下列方程的根
(1) x^2-e^x=0
(2) xe^x-1=0
(3) lgx+x-2=0
2、二分法解以上问题
3、编写割线法程序求解第一问的方程实验步骤、程序设计、
验结果及分析
一、用牛顿迭代法求下列方程的根:
1.1实验步骤:
以第一题为例,列举实验步骤
令 f(x)= x^2-e^x
求得f’(x)=2×x -e^x
xk+1=xk-f(x)/f’(x) 迭代计算即可
1.2程序设计:
(1) x^2-e^x=0
#include using namespace std;int main()
{
double x0,x;
x=1;
do
{
x0=x;
double fx=x*x-exp(x);
double fx2=x*2-exp(x);
x=x0-(fx/fx2);
}while(fabs(x-x0)>=1e-5);
cout<
return 0;
}
(2) xe^x-1=0
#include using namespace std;int main()
{
double x0,x;
x=1; do
{
x0=x;
double fx=x*exp(x)-1;
double fx2=x*exp(x)+exp(x);
x=x0-(fx/fx2);
}while(fabs(x-x0)>=1e-5);
cout<