1、hjT,求代数方程的近似根(解),问题背景和实验目的,近似求解代数方程,解方程(代数方程)是最常见的数学问题之一,也是众多应用领域中不可避免的问题之一。,目前还没有一般的解析方法来求解非线性方程,但如果在任意给定的精度下,能够解出方程的近似解,则可以认为求解问题已基本解决,至少可以满足实际需要。,本实验主要介绍一些有效的求解方程的数值方法:对分法,迭代法 和 牛顿法。同时要求大家学会如何利用Matlab 来求方程的近似解。,相关概念,如果 f(x) 是一次多项式,称上面的方程为线性方程;否则称之为非线性方程。,线性方程 与 非线性方程,基本思想,对分法,将有根区间进行对分,判断出解在某个分段内
2、,然后再对该段对分,依次类推,直到满足给定的精度为止。,具体步骤,对分法,设方程在区间 a,b 内连续,且 f(a)f(b)0,给定精度要求 ,若有 |f(x)| ,则 x 就是我们所需要的 f(x) 在区间 (a,b) 内的 近似根。,. .,收敛性分析,对分法收敛性,设方程的根为 x* (ak , bk ) ,又 ,所以,对分法总是收敛的,但对分法的收敛速度较慢通常用来试探实根的分布区间, 或给出根的一个较为粗糙的近似。,根据上面的算法,我们可以得到一个每次缩小一半的区间序列 ak , bk ,在 (ak , bk ) 中含有方程的根。,迭代法, (x) 的不动点,f (x) = 0,x
3、= (x),f (x) 的零点,若 收敛,即 ,假设 (x) 连续,则,收敛性分析,迭代法的收敛性,即,注:若得到的点列发散,则迭代法失效!,定义:,迭代法收敛性判断,定理 2:如果定理 1 的条件成立,则有如下估计,如果存在 x* 的某个 邻域 =(x*- , x* + ), 使得对 x0 开始的迭代 xk+1 = (xk) 都收敛, 则称该迭代法在 x* 附近局部收敛。,迭代法收敛性判断,q 越小,迭代收敛越快,(x*) 越小,迭代收敛越快,迭代法收敛性判断,以上所给出的收敛性定理中的条件的验证都比较困难,在实际应用中,我们常用下面不严格的判别方法:,当有根区间 a, b 较小,且对某一
4、x0a, b ,|(x0)| 明显小于 1 时,则我们就认为迭代收敛,迭代法的加速,设迭代 xk+1 = (xk) ,第 k 步和第 k+1 步得到的近似根分别为 xk 和 (xk) ,令,其中 wk 称为加权系数或权重。得新迭代 xk+1 = (xk),松弛迭代法,松弛法迭代公式:,松弛法具有较好的加速效果,甚至有些不收敛的迭代,加速后也能收敛。,缺点:每次迭代需计算导数,Altken 迭代法,Altken迭代法,用 差商 近似 微商,设 x* 是方程的根,则由中值定理可得,Altken 迭代法,Altken迭代公式,k = 0, 1, 2, . .,Altken 法同样具有较好的加速效果,
5、牛顿迭代法,令:,设非线性方程 f (x)=0 , f (x) 在 x0 处的 Taylor 展开为,牛顿法迭代公式,牛顿迭代公式,k = 0, 1, 2, . .,牛顿法的收敛速度,令,牛顿法至少二阶局部收敛,(x) 即为牛顿法的迭代函数,牛顿法迭代公式,牛顿的优点,牛顿法是目前求解非线性方程 (组) 的主要方法,至少二阶局部收敛,收敛速度较快,特别是当迭代点充分靠近精确解时。,在实际计算中,可以先用其它方法获得真解的一个粗糙近似,然后再用牛顿法求解。,Matlab 解方程函数,roots(p):多项式的所有零点,p 是多项式系数向量。,fzero(f,x0):求 f=0 在 x0 附近的根
6、,f 可以使用 inline、字符串、或 ,但不能是方程或符号表达式!,solve(f,v):求方程关于指定自变量的解,f 可以是用字符串表示的方程、符号表达式或符号方程;solve 也可解方程组(包含非线性);得不到解析解时,给出数值解。,linsolve(A,b):解线性方程组。,其他 Matlab 相关函数,g=diff(f,v):求符号表达式 f 关于 v 的导数 g=diff(f):求符号表达式 f 关于默认变量的导数 g=diff(f,v,n):求 f 关于 v 的 n 阶导数,diff,f 是符号表达式,也可以是字符串,默认变量由 findsym(f,1) 确定, syms x f=sin(x)+3*x2; g=diff(f,x), g=diff(sin(x)+3*x2,x),