ICA使用牛顿迭代法对FastICA算法经行改进

ICA使用牛顿迭代法对FastICA算法经行改进
ICA使用牛顿迭代法对FastICA算法经行改进

ICA用牛顿迭代法改进的FastICA算法

ICA算法原理:

独立分量分析(ICA)的过程如下图所示:在信源()st中各分量相互独立的假设下,由观察xt通过结婚系统B把他们分离开来,使输出yt逼近st。

图1-ICA的一般过程

ICA算法的研究可分为基于信息论准则的迭代估计方法和基于统计学的代数方法两大类,从原理上来说,它们都是利用了源信号的独立性和非高斯性。基于信息论的方法研究中,各国学者从最大熵、最小互信息、最大似然和负熵最大化等角度提出了一系列估计算法。如FastICA算法, Infomax算法,最大似然估计算法等。基于统计学的方法主要有二阶累积量、四阶累积量等高阶累积量方法。本实验主要讨论FastICA算法。

1. 数据的预处理

一般情况下,所获得的数据都具有相关性,所以通常都要求对数据进行初步的白化或球化处理,因为白化处理可去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程,而且,通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性较好。

若一零均值的随机向量

满足

其中:I为单位矩阵,我们称这个向量为白化向量。白化的本质在于去相关,这同主分量分析的目标是一样的。在ICA中,对于为零均值的独立源信号

有:

且协方差矩阵是单位阵cov( S ) = I,因此,源信号

S( t )是白色的。对观测信号X( t ),我们应该寻找一个线性变换,使X( t )投影到新的子空间后变成白化向量,即:

其中,W0为白化矩阵,Z为白化向量。

利用主分量分析,我们通过计算样本向量得到一个变换

其中U和 分别代表协方差矩阵XC的特征向量矩阵和特征值矩阵。可以证明,线性变换W0满足白化变换的要求。通过正交变换,可以保证

因此,协方差矩阵:

再将

代入

且令

由于线性变换A~连接的是两个白色随机矢量Z( t )和S( t ),可以得出A~ 一定是一个正交变换。如果把上式中的Z( t )看作新的观测信号,那么可以说,白化使原来的混合矩阵A简化成一个新的正交矩阵A~。证明也是简单的:

其实正交变换相当于对多维矢量所在的坐标系进行一个旋转。

在多维情况下,混合矩阵A是N*N 的,白化后新的混合矩阵A~

由于是正交矩阵,其自由度降为N*(N-1)/2,所以说白化使得ICA问题的工作量几乎减少了一半。

白化这种常规的方法作为ICA的预处理可以有效地降低问题的复杂度,而且算法简单,用传统的PCA就可完成。用PCA对观测信号进行白化的预处理使得原来所求的解混合矩阵退化成一个正交阵,减少了ICA的工作量。此外,PCA本身具有降维功能,当观测信号的个数大于源信号个数时,经过白化可以自动将观测信号数目降到与源信号维数相同。

2. FastICA算法

FastICA算法,又称固定点(Fixed-Point)算法,是由芬兰赫尔辛基大学Hyv?rinen等人提出来的。是一种快速寻优迭代算法,与普通的神经网络算法不同的是这种算法采用了批处理的方式,即在每一步迭代中有大量的样本数据参与运算。但是从分布式并行处理的观点看该算法仍可称之为是一种神经网络算法。FastICA算法有基于峭度、基于似然最大、基于负熵最大等形式,这里,我们介绍基于负熵最大的FastICA算法。它以负熵最大作为一个搜寻方向,可以实现顺序地提取独立源,充分体现了投影追踪(Projection Pursuit)这种传统线性变换的思想。此外,该算法采用了定点迭代的优化算法,使得收敛更加快速、稳健。

因为FastICA算法以负熵最大作为一个搜寻方向,因此先讨论一下负熵判决准则。由信息论理论可知:在所有等方差的随机变量中,高斯变量的熵最大,因而我们可以利用熵来度量非高斯性,常用熵的修正形式,即负熵。根据中心极限定理,若一随机变量X由许多相互独立的随机变量 NiSi,...3,2,1 之和组成,只要iS具有有限的均值和方差,则不论其为何种分布,随机变量X较iS更接近高斯分布。换言之,iS较X的非高斯性更强。因此,在分离过程中,可通过对分离结果的非高斯性度量来表示分离结果间的相互独立性,当非高斯性度量达到最大时,则表明已完成对各独立分量的分离。

负熵的定义:

式中,GaussY是一与Y具有相同方差的高斯随机变量,H为随机变量的微分熵

根据信息理论,在具有相同方差的随机变量中,高斯分布的随机变量具有最大的微分熵。当Y具有高斯分布时,Ng(Y) = 0 ;Y的非高斯性越强,其微分熵越小,Ng(Y)值越大,所以Ng(Y)可以作为随机变量Y非高斯性的测度。由于计算微分熵需要知道Y的概率密度分布函数,这显然不切实际,于是采用如下近似公式:

其中,E为均值运算;g为非线性函数,可取 ,或

等非线性函数,这里,通常

我们取。快速ICA学习规则是找一个方向以便具有最大的非高斯性。这里,

非高斯性用式(3.7)给出的负熵的近似值来度量,的方差约束

为1,对于

白化数据而言,这等于约束W的范数为1。FastICA算法的推导如下。首先,XWT 的负熵的最大近似值能通过对

进行优化来获得。根据Kuhn-Tucker条件,在

的约束下

的最优值能在满足下式的点上获得。

以下是牛顿迭代法在生物医学工程专业中的实际应用,其中选择了3篇有关于牛顿迭代法在ICA算法中优化的应用?。

ICA 去除EEG 中眼动伪差和工频干扰方法研究

眼动伪差和工频干扰是临床脑电图(EEG)中常见噪声 , 严重影响其有用信息提取 . 本文尝试采用独立分量分析 (Independent Component Analysis , ICA) 方法分离 EEG 中此类噪声通过对早老性痴呆症( Alzheimer disease , AD)患者临床 EEG 信号( 含眼动伪差和混入工频干扰 , 信噪比仅 0dB)作 ICA 分析 , 比较了最大熵(Infomax)和扩展最大熵(Extended Infomax) ICA 算法的分离效果 , 证实虽然最大熵算法可以分离出眼动慢波 , 但难以消除工频干扰 , 为此需采用扩展的最大熵算法 ; 并知 ICA 方法在极低信噪比时也有较好的抗干扰性 , 且在处理非平稳信号时有好的鲁棒性 ; 文中还结合近似熵 (approximate entropy , ApEn )分析说明利用 ICA 去除干扰后有助于恢复和保持原始 EEG 信号的非线性特征 .

ICA 算法原理

假设存在 N 道相互独立的未知源信号 X =[ x1 , x2 , … ,xN] , 通过某个未知的待检测分析系统后线性叠加为在 M 个传感器上接收到的观测信号 U =[ u1 , u2 , … , uM] . 已经证明在 M ≥N 条件下 , 如果源信号 X 不含一个以上的高斯过程则存在混合矩阵 A , 使得 U =AX . ICA 算法的基本思路在于求解一矩阵 W , 使其作用于观测信号 U 所得估计信号X ′ =WU , 在统计独立的意义下最逼近于未知源信号 X , 即要找到矩阵 W 使得信号 X ′的各个分量尽可能地相互独立 . 为此需建立一个合适的代价函数 , 再采用某种优化算法分离源信号 . 对于 EEG 信号 , 代价函数可取各导联信号间的高阶统计量、互信息熵或最大似然估计 , 优化算法则可采用牛顿迭代法、基于神经网络的自适应算法、随机梯度法、自然梯度法等本文所采用的最大熵( Infomax) 算法是根据常规的随机梯度法求解矩阵 W , 算法的目标判据为独立分量通过非线性环节后信息熵极大 , 其调节公式为ΔW =μ [ ( WT) -1 + (1 +2y)xT] ( 1)由于算法中涉及矩阵求逆 , 故又提出了用自然梯度代替常规梯度的改进算法 , 以避免求逆过程 , 减少计算量 . 如此 , 矩阵调节改为下式ΔW =μ [ (WT ) -1 + ( 1 +2y)xT] WTW =μ [ I + ( 1 -2y)uT] W其计算量和收敛速度均得到较大改进 .但上述算法仅适用于超高斯信号 , 而眼动肌电和工频干扰之类噪声多属亚高斯信号 . 为了使算法能同时适用于亚高斯信号 , 又推导出所谓扩展的最大熵(Extended

Infomax)算法 , 其调节公式为ΔW =μ [ I -Ktanh (u )uT -uuT ] W ,kii =1 (超高斯信号 ) , kii =-1 (亚高斯信号) 式中K 为对角阵 . 算法通过其主对角元素 Kii取不同值来区分超高斯和亚高斯信号 , 以便将脑电数据中 EEG 有用成分和肌电、工频等干扰信号分解开来 . 而简单的最大熵算法则难以做到这点 .

改进的Fast ICA 算法在事件相关电位提取中的应用研究

事件相关电位的特征提取分析在大脑认知的神经生理基础和临床应用研究中起着非常重要的作用。独立分量分析( Independent Co mpo nent A naly sis, ICA)作为目前比较流行的盲源信号处理算法, 其特性非常适合应用于事件相关电位的提取。文章主要讨论了独立分量分析的基本原理、判决条件和算法, 针对快速定点算法( F ast Independent Component Analy sis alg orithm , Fa st ICA) 迭代次数较多和对初始权值敏感的缺点, 我们引入利用梯度法改进的修正因子, 在此基础上对Fast ICA 进行优化, 得到改进算法, 改进算法降低了对初始权值的敏感性, 减少了迭代次数, 从而提高了算法的收敛速度。最后将其应用于ERP 信号的提取当中, 实验表明, 在分离效果相当的前提下, 收敛速度得到了较大的提高。

ICA 的基本理论

ICA 的线性模型可表示为:

x i( t)=Asi( t) ( 1)

ICA 的目的就是寻求一优化的分离矩阵W , 通过它能由观测信号xi( t)近似地恢复相互独立的源信号si( t):

u i( t)= W x i( t)= W As i( t) ( 2)

基于负熵判踞的Fast ICA 算法

Fast ICA 是一种基于固定点( fixed-point) 迭代理论来寻求非高斯性最大值的方法[ 4] 。由中心极限定理可知,非高斯性可以作为随机信号相互依赖的度量, 所以当非高斯性达到最大时, 表明已完成对各独立分量的分离。由信息论可知负熵可以度量信号的非高斯程度, 因此采用负熵作为独立性判据,可以从观测信号中分离出独立分量。

负熵判据

对于一概率密度函数为p( y) 的随机变量y , 负熵定义为:

J( y)=H( ygauss)-H( y)

H( y)=-∫ p( y) lgp( y) dy

为方便计算,一种较好的负熵近似是:

J( y)∞[ E{ G( y) }-E{ G( y ga us s) } ] 2 ( 5)

Fast ICA 算法实现

预处理

在运用ICA 方法之前, 适当的对原始观测信号进行一些预处理是非常必要的, 它可使ICA 的工作量大大减小,从而有利于提高ICA 算法的效率, 也能使问题更符合前述约束条件。信号预处理包括中心化和白化处理。中心化( 去均值) 是为了使实际的盲源分离问题能够符合ICA 数学模型,而白化则是对去均值后信号向量X 施加一个线性变换,使得新向量X 的各个分量互不相关, 同时X 的协方差矩阵为单位阵。

独立分量提取

对X 进一步处理, 即依据负熵判据来寻找矩阵以实现独立分量的分离。依据牛顿迭代

定理[ 5] , Fast ICA 算法的调整公式为:

w i →E{ zg( w iTz) }-E{ g′ ( w i Tz) }

式中: w i 为某一次牛顿迭代的结果; z 为预处理后的信号; w T i z 为z 在w i 上的投影; w 为调整权值。式只估计出了一个独立分量, 若要估计n 个独立分量,在每次提取一个分量之后, 要从观测信号中减去该独立分量,如此重复直到所有分量都被提取出来为止。去掉已提取的独立分量的方法如下( 假设已

估计了p 个分量):

w p +1 =w p +1 -∑w p T+1w j w j

w p +1 =w p +1/ w T p +1 w p +1

改进的Fast ICA 算法

快速分离算法Fast ICA 的迭代依赖于初始权值。算法的初始权值一般是随机选取的, 因此就会因为权值的值不同而导致每次迭代的效率不同, 得到的独立分量也会稍有不同, 特别是对源信号独立性不太好的情况,对权值的选取比较敏感, 不同的初始权值可能导致收敛性能的不同, 甚至会出现收敛和不收敛两种极端的情况。虽然可以选取白化过程中获得的主成分作为初始权值的值, 但算法很容易收敛到该白化初始值,尽管有良好的收敛性能,但分离效果不佳,与主成分分析效果相当。为了解决该问题, 就应该放宽算法对初始权值的要求, 也即实现大范围收敛。为了改善ICA 算法对初始权值的要求, 决定在Fast ICA 迭代公式中引入松弛因子[ 6] ,迭代公式如下:

w p +1 =w p -α p

[ E{ xg( wp T x) }-βw p]

[ E{ g′ ( w p T x) }-β]

通过引入松弛因子,保证从w k 某个开始进入牛顿迭代法的收敛区域,使得算法在任何情况下均可以达到收敛的效果。当α p =1 时, 该算法就退化到Fast ICA 算法了。带松弛因子的Fast ICA 算法对初始权值不敏感, 但松弛因子的选择却直接影响算法的收敛速度, 由多元微分学可知, 负梯度的方向就是函数值下降最快的方向,因此我们可以选择将梯度值作为松弛因子。计算E{ xg( w P Tx) }在w 处的梯度值:

其中

,调整迭代公

式,得出改进后算法如下:

w′ i →E{ zg( w i Tz) }+α E{ g′ ( w i Tz) } w

w″ i →E{ zg( w i Tz) }+E{ g′ ( w′ i Tz) } w ( 11)

w i →w″ i/ ‖w″ i ‖

改进算法实现的具体步骤为:

( 1) 对观测信号x 进行去均值处理;

( 2) 对去均值后的x 进行白化处理;

( 3)初始化随机权矢量w 0 ,设置收敛误差0 <ε<1 ;

( 4) 按照公式( 10) 计算出松弛因子α;

( 5) 依照公式( 11) 调整w p +1 , 计算出w p +1后,进行去相关和归一化;

( 6) 如果w p +1 -w p <ε ,则算法收敛,估计出独

立分量,

改进的I C A算法及其在 f MR I 信号上的应用

针对目前广泛使用的两种独立成分分析( I C A) 算法(f i x e d -p o i n t 算法和i n f o ma x算法) 在处理功能磁共振成像( f MRI ) 数据时速度较慢的特点, 给出了独立成分分析的一个优化模型,在此基础上,提出了一种快速的牛顿型迭代算法. 该算法采用修正后的牛顿迭代形式,使收敛速度达到三阶. 将文中算法与其它两种算法应用于实际 f MRI 数据,实验结果表明,文中算法能够很好地分离出任务成分,同时大大减少了运算量,提高了运算速度,在处理大数据量的f MRI 信号方面有明显的优势.

I C A的优化模型

1. 1 问题描述

标准独立成分分析的数学模型为

x=A s ( 1)式中:x=( x 1 , x 2 , …, x N)T为N维随机混合信号, 即观测信号; A为N×N常数混合矩阵; s=( s 1 , s 2, …,s N) T为分量彼此独立的源信号. I C A的任务是在只知道观测信号x 的情况下, 寻找N×N阶解混矩阵

W=( w 1 , w 2, …, w N) T,

使得恢复信号y=Wx的各个分量尽可能统计独立,则可以认为

y=( y 1, y 2, …,y N) T就是要找的源信号.

1. 2 优化模型

ICA的实现可以采用不同的估计准则, 包括信息极大化、非高斯性极大化、极大似然估计方法和互信息极小化等,但它们在某些条件下彼此是等价的,可以相互转化. 文中采用非高斯性极大化估计方法,利用负熵来度量随机变量的非高斯性.密度函数为p ( y ) 的随机变量y 的熵定义为

H( y )=-∫ p ( y ) l g p ( y ) d y ( 2)

而负熵J 定义为

J ( y )=H( y g a u s s)-H( y ) ( 3)

其中y g a u s s 表示服从高斯分布的随机变量, 且与随机变量y 具有相同的方差. y 的非高斯性越强, J ( y ) 值越大, 即最大化非高斯性就是最大化负熵J ( y ). 但负熵的计算较为复杂, 难以直接应用, Hy v ?r i n e n等[ 7] 给出了负熵的一个近似表达式( 假设随机变量为零均值且具有单位方差) :

J ( y ) ∝[ E( G (y ) )-E( G( υ )) ] 2 ( 4)

式中: υ 为具有零均值且与y 有相同单位方差的高斯随机变量; G( ·) 为非二次函数, 实际计算中可以选择增长速度不太快的函数,以获得稳定的估计. 由式( 4) 可知, J (y ) 最大即E (G ( y ) ) 最大.在I C A算法中, 需要对观测信号进行预处理,包括中心化和白化处理.

中心化的目的是使观测信号的均值为零,而白化则是将观测信号x 线性变换为具有单位方差且各分量互不相关的z ,即E( z z T)=I . 数据经过白化处理后, 只需要在正交矩阵空间中寻找解混矩阵W, 从而减少了变量维数, 简化了问题的求解. 这样, 得到如下约束优化问题: ma xψ ( w i)=E( G (y ))=E( G( w T iz ) ) ( 5)

s . t . w i 2 =1, i =1, 2, …, N.

I C A的一种牛顿迭代算法

2. 1 算法的导出

从式( 5) 可知,问题( 5) 的约束是等式且较简单,因此可采用在约束集上投影的方法,即先用牛顿法来求解问题( 5) 相应的无约束优化问题, 然后在每一步迭代后,将解向量w i投影到单位球面上以满足约束.由式( 5) 可知, 对ψ(w i)=E( G(w T iz ) ) 求极值, 即

E(G ′ ( w T iz ) )=E(z g( w T iz ))=0, g ( ·)=G′ ( ·) 是G( ·) 的一阶导数. 由牛顿迭代定理可以得到:

这里g ′ ( ·) 是g ( ·) 的一阶导数. 在算法( 6) 中需要计算矩阵的逆,使得实际计算中算法的收敛速度很慢. 而对于白化后的信号z , 可以将其作简化处理,一个合理的估计式如下: E(z z Tg ′ ( w T iz ) ) ≈E( z z T)E ( g ′ (w T iz ) )=E( g ′ ( w T iz ) ) I ( 7)这样矩阵E(z z Tg ′ ( w T iz )) 就变成了对角矩阵,可以很方便地求其逆矩阵. 在牛顿迭代中,由于初始值选择的不同,经常会造成算法不能正确收敛. 为克服此问题,在算法( 6) 中引入步长参数μ 得到: w i→w i-μ E( z g (w T iz ) ) E (g ′ ( w T i z ))

w i→w i w i( 8)

μ 在迭代过程中可以变化, 当μ取足够小( 如为0.10或0. 01) 时, 可大大增强算法的稳定性.

2. 2 算法步骤

牛顿迭代法

x n+1 =x n -f ( x n)/f ′ ( x n) , n=0, 1, 2, … ( 9)

是求解非线性方程f ( x )=0 的重要方法. 算法( 6)就是根据式( 9) 得出的. 可以证明, 当,式( 9) 为二阶收敛. 为加速收敛, 对牛

顿迭代进行了如下修正:

可以证明修正后的牛顿迭代法为三阶收敛[ 8] . 根据

修正的形式,文中对算法( 8) 进行改进得到:

( 11)

算法( 11) 可以提取一个独立成分. 若要提取N个独

立成分,将算法( 11) 写成矩阵形式:

( 12)

其中g ( y )=[ g (y 1), g ( y 2 ) , …, g ( y n) ] T, 每次迭代后, 需使矩阵W成为正交矩阵, 这可以通过对称正交化来实现,即W=(WW T) -1 2 W.

综上所述,文中算法的具体步骤如下: ( 1) 中心化数据x , 使其均值为零; ( 2) 白化数据得到z ; ( 3)选择一个正交矩阵作为初始矩阵; ( 4) 按照式( 12)进行迭代; ( 5) 对称正交化矩阵W=(WW T) -1 2 W;( 6) 如果算法未达到终止条件,返回步骤( 4) .

牛顿迭代法文献综述

“牛顿迭代法”最新进展文献综述牛顿法是一种重要的迭代法,它是逐步线性化的方法的典型代表。牛顿迭代法又称为牛顿-拉夫逊方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。方法使用函数f(x)的泰勒级数的前面几项来寻找方程f(x) = 0的根。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x) = 0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。另外该方法广泛用于计算机编程中。 介绍一下牛顿迭代法研究的前沿进展,1992年南京邮电学院基础课部的夏又生写的一篇题名一类代数方程组反问题的牛顿迭代法,对一类代数方程组反问题提出了一个可行的迭代解法。从算法上看,它是一种解正问题—迭代—解正问题迭代改善的求解过程。湖南师范大学的吴专保;徐大发表的题名堆浸工艺中浸润面的非线性问题牛顿迭代方法,为了研究堆浸工艺的机理,用牛顿迭代公式寻求浸润面的非线性方程的数值解,经过14次迭代的误差达到了,说明此算法收敛有效。浙江大学电机系的林友仰发表的牛顿迭代法在非线性电磁场解算中的限制对非线性电磁场解算中的限制做了分析,求解非线性方程组时迭代法是不可避免的。牛顿—拉斐森迭代法由于它的收敛速度快常被优先考虑。应用这个方法的主要问题是求雅可比矩阵。因为雅可比矩阵元素的计算非常费时。然而,本文要说明的是当利用以三角形为单元的有限元法求解非线性方程组时,应用牛顿法其雅可比矩阵容易求得,并且它保持了原系数的对称性和稀疏性,因而节省了时间。与此相反,若在差分法中应用牛顿迭代,并且按习惯用矩形网格进行剖分,则雅可比阵的计算很费时,而且不再保持原有对称性,这就使得存贮量和计算时间大为增加。南株洲工学院信息与计算科学系的吕勇;刘兴国发表的题名为牛顿迭代法加速收敛的一种修正格式,主要内容牛顿迭代法是求解非线性方程的一种重要的数值计算方法,在通常情况下,它具有至少平方收敛。本文利用文献[4]所建立的迭代格式xn+1=xn-αf(xfn)(x+n)f′(xn),对迭代格式中的参数α的讨论,实现了牛顿迭代法加速收敛的一种修正格式。

MAAB计算方法迭代法牛顿法二分法实验报告

姓名 实验报告成绩 评语: 指导教师(签名) 年 月 日 说明:指导教师评分后,实验报告交院(系)办公室保存。 实验一 方程求根 一、 实验目的 用各种方法求任意实函数方程0)(=x f 在自变量区间[a ,b]上,或某一点附近的实根。并比较方法的优劣。 二、 实验原理 (1)、二分法 对方程0)(=x f 在[a ,b]内求根。将所给区间二分,在分点 2a b x -=判断是否0)(=x f ;若是,则有根2a b x -=。否则,继续判断是否0)()(

+)(0x f 0))(('0=-x x x f 设0)('0≠x f ,则=x -0x )(') (00x f x f 。取x 作为原方程新的近似根1x ,然后将1x 作为0x 代入上式。迭代公式为:=+1 k x -0x )(')(k k x f x f 。 三、 实验设备:MATLAB 软件 四、 结果预测 (1)11x = (2)5x = (3)2x =0,09052 五、 实验内容 (1)、在区间[0,1]上用二分法求方程0210=-+x e x 的近似根,要求误差不超 过3105.0-?。 (2)、取初值00=x ,用迭代公式=+1 k x -0x )(') (k k x f x f ,求方程0210=-+x e x 的近似根。要求误差不超过3105.0-?。 (3)、取初值00=x ,用牛顿迭代法求方程0210=-+x e x 的近似根。要求误差 不超过3105.0-?。 六、 实验步骤与实验程序 (1) 二分法 第一步:在MATLAB 软件,建立一个实现二分法的MATLAB 函数文件如下: function x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); %把a 端点代入函数,求fa fb=feval(fname,b); %把b 端点代入函数,求fb if fa*fb>0 error('两端函数值为同号'); end

牛顿迭代法

牛顿迭代法 李保洋 数学科学学院信息与计算科学学号:060424067 指导老师:苏孟龙 摘要:牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法,即牛顿迭代法.迭代法是一种不断用变量的旧值递推新值的过程.跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“牛顿迭代法”属于近似迭代法,本文主要讨论的是牛顿迭代法,方法本身的发现和演变和修正过程,避免二阶导数计算的Newton迭代法的一个改进,并与中国古代的算法,即盈不足术,与牛顿迭代算法的比较. 关键词:Newton迭代算法;近似求解;收敛阶;数值试验;中国古代数学; 九章算术;Duffing方程;非线性方程;收敛速度;渐进性 0 引言: 迭代法也称辗转法,是一种不断用变量的旧值递推新值的过程,跟迭代法相对应的是直接法或者称为一次解法,即一次性解决问题.迭代法又分为精确迭代和近似迭代.“二分法”和“牛顿迭代法”属于近似迭代法. 迭代算法是用计算机解决问题的一种基本方法.它利用计算机运算速度快、适合做重复性操作的特点,让计算机对一组指令(或一定步骤)进行重复执行,在每次执行这组指令(或这些步骤)时,都从变量的原值推出它的一个新值.具体使用迭代法求根时应注意以下两种可能发生的情况: (1)如果方程无解,算法求出的近似根序列就不会收敛,迭代过程会变成死循环,因此在使用迭代算法前应先考察方程是否有解,并在程序中对迭代的次数给予限制. (2)方程虽然有解,但迭代公式选择不当,或迭代的初始近似根选择不合理,也会导致迭代失败. 所以利用迭代算法解决问题,需要做好以下三个方面的工作: 1、确定迭代变量.在可以用迭代算法解决的问题中,至少存在一个直接或间接地不断由旧值递推出新值的变量,这个变量就是迭代变量. 2、建立迭代关系式.所谓迭代关系式,指如何从变量的前一个值推出其下一个值的公式(或关系).迭代关系式的建立是解决迭代问题的关键,通常可以使用递推或倒推的方法来完成. 3、对迭代过程进行控制,在什么时候结束迭代过程?这是编写迭代程序必须考虑的问题.不能让迭代过程无休止地重复执行下去.迭代过程的控制通常可分为两种情况:一种是所需的迭代次数是个确定的值,可以计算出来;另一种是所需的迭代次数无法确定.对于前一种情况,可以构建一个固定次数的循环来实现对迭代过程的控制;对于后一种情况,需要进一步分析出用来结束迭代过程的条件. 1牛顿迭代法:

ICA使用牛顿迭代法对FastICA算法经行改进

ICA用牛顿迭代法改进的FastICA算法 ICA算法原理: 独立分量分析(ICA)的过程如下图所示:在信源()st中各分量相互独立的假设下,由观察xt通过结婚系统B把他们分离开来,使输出yt逼近st。 图1-ICA的一般过程 ICA算法的研究可分为基于信息论准则的迭代估计方法和基于统计学的代数方法两大类,从原理上来说,它们都是利用了源信号的独立性和非高斯性。基于信息论的方法研究中,各国学者从最大熵、最小互信息、最大似然和负熵最大化等角度提出了一系列估计算法。如FastICA算法, Infomax算法,最大似然估计算法等。基于统计学的方法主要有二阶累积量、四阶累积量等高阶累积量方法。本实验主要讨论FastICA算法。 1. 数据的预处理 一般情况下,所获得的数据都具有相关性,所以通常都要求对数据进行初步的白化或球化处理,因为白化处理可去除各观测信号之间的相关性,从而简化了后续独立分量的提取过程,而且,通常情况下,数据进行白化处理与不对数据进行白化处理相比,算法的收敛性较好。 若一零均值的随机向量 满足 , 其中:I为单位矩阵,我们称这个向量为白化向量。白化的本质在于去相关,这同主分量分析的目标是一样的。在ICA中,对于为零均值的独立源信号 , 有: , 且协方差矩阵是单位阵cov( S ) = I,因此,源信号 S( t )是白色的。对观测信号X( t ),我们应该寻找一个线性变换,使X( t )投影到新的子空间后变成白化向量,即:

其中,W0为白化矩阵,Z为白化向量。 利用主分量分析,我们通过计算样本向量得到一个变换 其中U和 分别代表协方差矩阵XC的特征向量矩阵和特征值矩阵。可以证明,线性变换W0满足白化变换的要求。通过正交变换,可以保证 因此,协方差矩阵: 再将 代入 且令 有 由于线性变换A~连接的是两个白色随机矢量Z( t )和S( t ),可以得出A~ 一定是一个正交变换。如果把上式中的Z( t )看作新的观测信号,那么可以说,白化使原来的混合矩阵A简化成一个新的正交矩阵A~。证明也是简单的: 其实正交变换相当于对多维矢量所在的坐标系进行一个旋转。 在多维情况下,混合矩阵A是N*N 的,白化后新的混合矩阵A~ 由于是正交矩阵,其自由度降为N*(N-1)/2,所以说白化使得ICA问题的工作量几乎减少了一半。 白化这种常规的方法作为ICA的预处理可以有效地降低问题的复杂度,而且算法简单,用传统的PCA就可完成。用PCA对观测信号进行白化的预处理使得原来所求的解混合矩阵退化成一个正交阵,减少了ICA的工作量。此外,PCA本身具有降维功能,当观测信号的个数大于源信号个数时,经过白化可以自动将观测信号数目降到与源信号维数相同。

§2.3牛顿Newton法及其变形.doc

2.3 牛顿(Newton )法及其变形 一、Newton 迭代方法 牛顿迭代法计算公式的推导过程 设*x 是()0f x =的根,()f x 在*x 的邻域内具有二阶连续导数,在*x 的邻域内取一点0x ,使0()0f x '≠,则()f x 在*x 的邻域内连续,将它在0x 点二阶Taylor 展开得 2 0000000()()()()()()2! ()()() f f x f x f x x x x x f x f x x x ξ'''=+-+-'≈+- 又()0f x =,则有 000()()()0f x f x x x '+-≈ 故()0f x =的近似解000()()f x x x f x ≈-',记0100()() f x x x f x =-' 类似,在点1x 处Taylor 展开,可得: 111()() f x x x f x ≈-',记1211()()f x x x f x =-' 依次往下做,可得一般的迭代格式:

上述迭代格式称为求()0 f x=的解的牛顿迭代法。 几何意义 在点 00 (,()) x f x处作() f x的切线,交x轴于一点,求该点的横坐标。此切线方程为 000 ()()() y f x f x x x ' -=-, 当0 y=时,得0 () () f x x x f x =- ' ,正是 1 x的值。 类似地,在点(,()) k k x f x作函数() f x的切线,交x轴于一点,切线方程为 ()()() k k k y f x f x x x ' -=-, 当0 y=时,得 () () k k k f x x x f x =- ' ,正是 1 k x + 的值。 所以,牛顿迭代法又称为切线求根法。 例6用牛顿迭代法求方程x x e- =在0.5 x=附近的根。解.将原方程化为()0 x f x x e- =-=,则牛顿迭代格式为

数值计算(二分法、简单迭代法、Newton迭代法、弦截法(割线法、双点弦法))

本科生实验报告 实验课程数值计算方法 学院名称信息科学与技术学院 专业名称计算机科学与技术 学生姓名 学生学号 指导教师 实验地点 实验成绩 二〇一六年五月二〇一六年五月

实验一非线性方程求根 1.1问题描述 实验目的:掌握非线性方程求根的基本步骤及方法,。 实验内容:试分别用二分法、简单迭代法、Newton迭代法、弦截法(割线法、双点弦法),求x5-3x3+x-1= 0 在区间 [-8,8]上的全部实根,误差限为10-6。 要求:讨论求解的全过程,对所用算法的局部收敛性,优缺点等作分析及比较, 第2章算法思想 2.1二分法 思想:在函数的单调有根区间内,将有根区间不断的二分,寻找方程的解。 步骤: 1.取中点mid=(x0+x1)/2 2.若f(mid)=0,则mid为方程的根,否则比较与两端的符号,若与 f(x0) 异号,则根在[x0,mid]之间,否则在[mid,x1]之间。 3并重复上述步骤,直达达到精度要求,则mid为方程的近似解。

2.2 简单迭代法 思想:迭代法是一种逐次逼近的方法,它是固定公式反复校正跟的近似值,使之逐步精确,最后得到精度要求的结果。 步骤:1.构造迭代公式f(x),迭代公式必须是收敛的。 2.计算x1,x1=f(x0). 3.判断|x1-x0|是否满足精度要求,如不满足则重复上述步骤。 4.输出x1,即为方程的近似解。

开始 输入x0,e X1=f(x0)|x1-x0|

改进的牛顿迭代法

改进的牛顿迭代法求解非线性方程 摘要:牛顿法思想是将非线性方程线性化,以线性方程的解逐步逼近非线性方程的解,但是其对初值、波动和可能出现的不收敛等缺点,而牛顿下山法克服了可能出现的发散的缺点。 关键词:牛顿法、牛顿下山法、非线性方程 一、牛顿法的迭代公式 设)(x f 在其零点*x 附近一阶连续可微,且0)(≠'x f ,当*0x x →时,由Taylor 公式有: ))(()()(000x x x f x f x f -'+≈ 以方程 0))(()(000=-'+x x x f x f 近似方程0)(=x f ,其解 ) ()(0001x f x f x x '-= 可作为方程的近似解,重复上述过程,得迭代公式 ),1,0(,) ()(1 ='-=+n x f x f x x n n n n 该方法称为牛顿迭代法。 二、牛顿法的改进 由于牛顿法缺点对牛顿法进行改进,使其计算简单,无需每次迭代都去计算)(x f ',且能够更好的收敛。 2.1简化的牛顿法 牛顿法的缺点之一是每次迭代都得去计算)(k x f '。为回避该问题,常用一个固定 )(k x f '迭代若干步后再求)(k x f '。这就是简化牛顿法的基本思想。 简化牛顿法的公式为: )(1k k k x cf x x -=+

迭代函数 )()(x cf x x -=? 若 2)(0,1)(1)(<'<<'-='x f c x f c x 即?,在根*x 附近成立,则迭代法局部收敛。 显然此法简化了计算量,却降低了收敛速度。 2.2牛顿下山法 牛顿法的缺点二是其收敛依赖与初值0x 的选取,若0x 偏离所求根*x 较远,则牛顿法可能发散。为防止迭代发散,我们对迭代过程再附加一项条件,即具有单调性: )()(1k k x f x f <+ 保证函数值稳定下降,然后结合牛顿法加快收敛速度,即可达目的。将牛顿法的计算结果 ) ()(1k k k k x f x f x x '-=+ 与前一步的近似值k x 适当加权平均作为新的改进值 k k k x x x )1(11λλ-+=++ 其中,称 )10(≤<λλ为下山因子,即为: ) ()(1k k k k x f x f x x '-=+λ 称为牛顿下山法。选择下山因子λ时,从 1=λ开始逐次将λ减半进行试算,直到条件成立为止。 三 举例说明 例1 求方程013=--x x 的根 (1)取5.10=x ,用牛顿法公式: 1 32131---=-+k k k k x x x x x 计算得:32472.1,32520.1,34783.1321===x x x

线性方程组的迭代法应用及牛顿迭代法的改进

线性方程组的迭代法应用及牛顿迭代法的改进 摘要: 迭代解法就是通过逐次迭代逼近来得到近似解的方法。由于从不同 的问题而导出的线性代数方程组的系数矩阵不同,因此对于大型稀疏矩阵所对应线性代数方程组,用迭代法求解。本文论述了Jacobi 法,Gauss-Seidel 法,逐次超松弛法这三种迭代法,并在此基础上对牛顿型的方法进行了改进,从而使算法更为精确方便。 关键词:线性方程组,牛顿迭代法,Jacobi 法,Gauss-Seidel 法,逐次超松弛 法 1.线性方程组迭代法 1.1线性方程组的迭代解法的基本思想 迭代法求解基本思想:从某一初始向量X (0)=[x 1(0) ,x 2(0) ,……………x n (0) ]出发,按某种迭代规则,不断地对前一次近似值进行修改,形成近似解的向量{X (k)}。当近似解X (k) =[x 1(k) ,x 2(k) ,……………x n (k) ]收敛于方程组的精确解向量X* =[x 1*,x 2*,……………x n *]时,满足给定精度要求的近似解向量X (k)可作为X*的数值解。 1.2 线性方程组的迭代法主要研究的三个问题 (1) 如何构造迭代公式 (2) 向量数列{X (k)}的收敛条件 (3) 迭代的结束和误差估计 解线性方程组的迭代解法主要有简单迭代法、 Gauss-Seidel 法和SOR 法。简单迭代法又称同时代换法或Jacobi 法,是最简单的解线性方程组的迭代解法也是其他解法的基础。 1.3Jacobi 迭代法 设方程组点系数矩阵n n j A ai R ???=∈??满足条件0ii a ≠,i=0,1,2, …n 。把A 分解为 A=D+L+U

牛顿迭代法实验报告

用牛顿迭代法求非线性方程的根 一、 实验题目 求方程()013=--=x x x f 在5.1附近的根。 二、 实验引言 (1)实验目的 1. 用牛顿迭代法求解方程的根 2. 了解迭代法的原理 3. 改进和修缮迭代法 (2)实验意义 牛顿迭代法就是众多解非线性方程迭代法中比较普遍的一种,求解方便实用。 三、 算法设计 (1)基本原理 给定初始值0x ,ε为根的容许误差,η为()x f 的容许误差,N 为迭代次数的容许值。 1.如果()0='x f 或迭带次数大于N ,则算法失败,结束;否则执行2. 2.计算()() 0001x f x f x x '-=. 3.若ε<-21x x 或()η<1x f ,则输出1x ,程序结束;否则执行4. 4.令10x x =,转向1. (2)流程图

四、程序设计program nndd01 implicit none real,parameter::e=0.005 real,parameter::n=9 real::x1 real::x0=1.5 integer::k real,external::f,y do k=1,9 if (y(x0)==0) then write(*,*)"失败" else x1=x0-f(x0)/y(x0) if (abs(x1-x0)

else x0=x1 end if end if end do end function f(x) implicit none real::f real::x f=x*x*x-x-1 return end function function y(x) implicit none real::y real::x y=3*x*x-1 return end function 五、求解结果 3 1.324718 4 1.324718 5 1.324718 6 1.324718 7 1.324718 8 1.324718 9 1.324718 六、算法评价及讨论 1.在求解在1.5处附近的根,不难发现在输入区间左端值为1时 需要迭代6次,而输入区间左端值为1.5时,却只要4次。初

二分法 牛顿迭代法

2014级硕士研究生数值分析上机实习 (第一次) 姓名:乔永亮 学号:14S030125 学院:船舶与海洋工程学院 实习题目:分别用二分法和Newton 迭代法求方程02010223=-++x x x 的根. 实习目的:掌握两种解法,体会两种解法的收敛速度. 实习要求:用C 程序语言编程上机进行计算,精确到8位有效数字. 报告内容: 1. 确定实根的个数以及所在区间. 解:对函数3 2 ()21020f x x x x =++-求导,得2 ()34100f x x x '=++=。 易知()0f x '>恒成立,所以函数(x)f 没有极值,只有一个实根。又可以知道(1)0f <,(2)0f >方程在区间(1,2)有一个实根,且为奇数重根,可以二分法和Newton 求解 2. 将最后两次计算结果填入下表(保留8位数字): 3. 实习过程中遇到哪些问题?如何解决?有何心得体会? 在编程的过程中由于对基本计算原理的理解有一定不足,同时对编程语言的不熟悉,导致在编程过程中错误百出,耗费了大量时间。但是通过课本以及网络对所需知识的不断学习,通过尝试不同的方法,最终还是得到了几种不同的思路与方法。通过这次编程,深深的感受到自己的不足,同时也明白了数学与计算机编程的紧密结合,不努力提高自己在当今社会就要被淘汰。

4. 两种解法的计算程序(此页写不下时可以加页): 二分法(Fortran 语言) program Analysis1 real::a,b,c,m real::fa,fc a=1. b=2. m=0.0001 !-------------------- do while(abs(b-a)>=m) c=(a+b)/2 fa=a**3+2.*a*a+10.*a-20 fc=c**3+2.*c*c+10.*c-20 if(fa*fc<0) then b=c else a=c end if write(*,"(f10.7)")c end do pause end program Anslysis1 牛顿迭代法(Fortran语言) program Analysis2 implicit none !定义变量---------------------------------------------------------------external f,df real m,x0,x1,f,df integer i !初始化变量-------------------------------------------------------------m=0.0001 x0=1.5 !牛顿迭代法-------------------------------------------------------------do while(abs(f(x0))>=m) x1=x0-f(x0)/df(x0) x0=x1 i=i+1 write(*,"(i4,f10.7)")i,x0 end do

牛顿迭代法求平方根

牛顿迭代法求平方根 求n的平方根,先假设一猜测值X0 = 1,然后根据以下公式求出X1,再将X1代入公式右边,继续求出X2…通过有效次迭代后即可求出n的平方根,X k+1 (迭代公式) 简单推导 假设f(x)是关于X的函数: 求出f(x)的一阶导,即斜率: 简化等式得到: 然后利用得到的最终式进行迭代运算直至求到一个比较精确的满意值,为什么可以用迭代法呢理由是中值定理(Intermediate Value Theorem):

如果f函数在闭区间[a,b]内连续,必存在一点x使得f(x) = c,c是函数f在闭区间[a,b]内的一点 我们先猜测一X初始值,例如1,当然地球人都知道除了1本身之外任何数的平方根都不会是1。然后代入初始值,通过迭代运算不断推进,逐步靠近精确值,直到得到我们主观认为比较满意的值为止。例如要求768的平方根,因为252 = 625,而302 = 900,我们可先代入一猜测值26,然后迭代运算,得到较精确值:。 回到我们最开始的那个”莫名其妙”的公式,我们要求的是N的平方根,令x2 = n,假设一关于X的函数f(x)为: f(X) = X2 - n 求f(X)的一阶导为: f'(X) = 2X 代入前面求到的最终式中: X k+1 = X k - (X k2 - n)/2X k 化简即得到我们最初提到的那个求平方根的神奇公式了: 用泰勒公式推导 我之前介绍过在The Art and Science of C一书中有用到,其实牛顿迭代法也可以看作是泰勒公式(Taylor Series)的简化,先回顾下泰勒公式:

仅保留等式右边前两项: 令f(X0+ε) = 0,得到: 再令X1 = X0+ ε0,得到ε1…依此类推可知: 转化为: 引申 从推导来看,其实牛顿迭代法不仅可以用来求平方根,还可以求立方根,甚至更复杂的运算。 同样,我们还可以利用pascal语言来实现下那个最简单的求平方根的公式(尽管我们可以直接用sqrt()完成) program asd (input,output); var a,x,n,i:real; begin writeln('Please input a!');

二分法和牛顿迭代法求解方程的比较

二分法和牛顿迭代法求解方程的比较 200822401018 徐小良 一、问题叙述 求解1232cos 0x x -+=的解;通过编写matlab 程序分别用分析二分法和牛顿迭代法求解方程,通过两种方法的比较,分析二者求解方程的快慢程度。 二、问题分析 由matlab 画图命令,容易得到此方程解的范围为(2,4);两种迭代方法,在使用相同的误差(0.00001)的情况下,得出matlab 迭代次数,通过次数的比较得出二者求解速度快慢比较。 三、实验程序及注释 (1)、二分法程序: clear; %清除所有内存数据; f=inline('12-3*x+2*cos(x)'); format long %数据显示格式设为长型; a=2;b=4; %求解区间; er=b-a;ya=f(a);k=0;er0=0.00001; %误差分析; while er>er0 x0=.5*(a+b); y0=f(x0); if ya*y0<0 b=x0; %二分法求解程序; else a=x0; ya=y0; end disp([a,b]);er=b-a;k=k+1 %显示各个区间值和求解次数; end disp([a,b]); %显示最后一个区间值; (2)、牛顿迭代法程序: clear; %清除所有内存数据; f=inline('12-3*x+2*cos(x)'); format long %数据显示格式设为长型; b=3;a=4;k=0; %求解区间; y0=f(b);y=f(a); while abs(b-a)>0.00001 t=a-y*(a-b)/(y-y0); b=a;y0=y; %牛顿迭代法求解程序; a=t;y=f(a); k=k+1; disp([b,a]);k %显示各个区间值和求解次数; end disp([b,a]); %显示最后一个区间值;

数值分析求解非线性方程根的二分法,简单迭代法和牛顿迭代法

实验报告一:实验题目 一、 实验目的 掌握求解非线性方程根的二分法、简单迭代法和牛顿迭代法,并通过数值实验比较两种方法的收敛速度。 二、 实验内容 1、编写二分法、牛顿迭代法程序,并使用这两个程序计算 02)(=-+=x e x x f 在[0, 1]区间的解,要求误差小于 4 10- ,比较两种方法收敛速度。 2、在利率问题中,若贷款额为20万元,月还款额为2160元,还期为10年,则年利率为多少?请使用牛顿迭代法求解。 3、由中子迁移理论,燃料棒的临界长度为下面方程的根cot x =(x 2?1)/2x ,用牛顿迭代法求这个方程的最小正根。 4、用牛顿法求方程f (x )=x 3?11x 2+32x ?28=0的根,精确至8位有效数字。比较牛顿迭代法算单根和重根的收敛速度,并用改进的牛顿迭代法计算重根。 三、 实验程序 第1题: 02)(=-+=x e x x f 区间[0,1] 函数画图可得函数零点约为0.5。 画图函数: function Test1() % f(x) 示意图, f(x) = x + exp(x) - 2; f(x) = 0 r = 0:0.01:1; y = r + exp(r) - 2 plot(r, y); grid on 二分法程序: 计算调用函数:[c,num]=bisect(0,1,1e-4) function [c,num]=bisect(a,b,delta) %Input –a,b 是取值区间范围 % -delta 是允许误差 %Output -c 牛顿迭代法最后计算所得零点值 % -num 是迭代次数

ya = a + exp(a) - 2; yb = b + exp(b) - 2; if ya * yb>0 return; end for k=1:100 c=(a+b)/2; yc= c + exp(c) - 2; if abs(yc)<=delta a=c; b=c; elseif yb*yc>0 b=c; yb=yc; else a=c; ya=yc; end if abs(b-a)

牛顿迭代法的一种改进方法

第30卷第5期 佛山科学技术学院学报(自然科学版) Vol.30No.5  2012年9月 Jo ur nal of Fo shan University(Natural Science Edition)Sep.2012文章编号:1008-0171(2012)05-0001-03 牛顿迭代法的一种改进方法 陈玉骥 (佛山科学技术学院环建学院,广东佛山528000) 摘要:牛顿迭代法是求解非线性方程的一种常用方法,该法对初值要求较高,只具有局部收敛性。在牛顿迭代法的基础上,通过调整非线性方程对应曲线切线的斜率,从而保证在取任意初值时,迭代均可收敛,有效改善了牛顿迭代法对初值的苛刻要求。 关键词:牛顿迭代法;非线性方程;初值;斜率 中图分类号:O242.23 文献标志码:A 工程上,不少实际问题的数学模型都涉及到非线性方程f(x)=0的求解。由于工程问题对应的方程f(x)=0大多不存在求根公式,因此确定精确解十分困难。故近似解的计算成为人们关心的主要问题。目前,人们已提出了不少求解非线性方程f(x)=0近似解的方法[1-8],其中,牛顿迭代法是最基本的方法之一。由于牛顿迭代法在方程的单根附近具有平方收敛速度,而且还可以求解方程的重根和复根,故该法得到了广泛应用。但牛顿迭代法对初值的要求较苛刻,只有适当选取初值,才能保证其收敛性。 为保证牛顿迭代法局部收敛,必须对f(x)和初值附加如下条件[9]: (1)f(x)在区间[a,b]上二阶可导; (2)f(a)f(b)<0; (3)f′(x)≠0; (4)f″(x)在区间[a,b]上不变号; (5)初值x0∈[a,b]应使f″(x0)f(x0)>0。 其中,条件(1)、(2)保证了方程f(x)=0根的存在性;条件(3)表示函数单调变化,则方程的根惟一;条件(4)表示函数f(x)的图形凸凹向不变;条件(5)是对初值的要求。 只要满足以上条件,就可保证牛顿迭代法的收敛性。但当表达式f(x)很复杂时,确定f(x)导数的计算量很大,且求出f″(x)的表达式非常复杂,要满足条件(3)、(4)比较困难。另外,还有不少方程不完全符合上述条件,无法按以上要求确定初值,迭代过程很难确保收敛性。 为了扩大牛顿迭代法的适用性,本文提出一种牛顿迭代法的改进方法,可以有效避免牛顿迭代法对初值选取范围的苛刻要求。其基本思想是,通过不断增加非线性方程对应曲线切线的斜率,达到迭代收敛的目的。所以,笔者将该法称为“改变斜率法”。 1 改变斜率法 在定义域内取任一初值x0∈[a,b],按牛顿迭代法的公式进行计算,得 收稿日期:2012-03-13 基金项目:国家自然科学基金资助项目(50978058);广东省自然科学基金资助项目(S2011010005037) 作者简介:陈玉骥(1962-),男,海南文昌人,佛山科学技术学院教授,博士。

MATLAB计算方法迭代法牛顿法二分法实验报告要点

姓名实验报告成绩 评语: 指导教师(签名) 年月日

说明:指导教师评分后,实验报告交院(系)办公室保存。 实验一 方程求根 一、 实验目的 用各种方法求任意实函数方程0)(=x f 在自变量区间[a ,b]上,或某一点附近的实根。并比较方法的优劣。 二、 实验原理 (1)、二分法 对方程0)(=x f 在[a ,b]内求根。将所给区间二分,在分点2a b x -= 判 断是否0)(=x f ;若是,则有根 2a b x -= 。否则,继续判断是否0)()(

(1)11x =0.09033 (2)5x =0.09052 (3)2x =0,09052 五、 实验内容 (1)、在区间[0,1]上用二分法求方程0210=-+x e x 的近似根,要求误差不 超过 3 105.0-?。 (2)、取初值00=x ,用迭代公式=+1k x -0x )(') (k k x f x f ,求方程0210=-+x e x 的 近似根。要求误差不超过 3 105.0-?。 (3)、取初值00=x ,用牛顿迭代法求方程0210=-+x e x 的近似根。要求误 差不超过 3 105.0-?。 六、 实验步骤与实验程序 (1) 二分法 第一步:在MATLAB 7.0软件,建立一个实现二分法的MATLAB 函数文件agui_bisect.m 如下: function x=agui_bisect(fname,a,b,e) %fname 为函数名,a,b 为区间端点,e 为精度 fa=feval(fname,a); %把a 端点代入函数,求fa fb=feval(fname,b); %把b 端点代入函数,求fb if fa*fb>0 error('两端函数值为同号'); end %如果fa*fb>0,则输出两端函数值为同号 k=0 x=(a+b)/2 while(b-a)>(2*e) %循环条件的限制

牛顿迭代法收敛定理

关于牛顿迭代法的课程设计实验指导 非线性方程(或方程组)问题可以描述为求 x 使得f (x ) = 0。在求解非线性方程的方法中,牛顿迭代法是求非线性方程(非线性方程组)数值解的一种重要的方法。牛顿是微积分创立者之一,微积分理论本质上是立足于对世界的这种认识:很多物理规律在微观上是线性的。近几百年来,这种局部线性化方法取得了辉煌成功,大到行星轨道计算,小到机械部件设计。牛顿迭代法正是将局部线性化的方法用于求解方程。 一、牛顿迭代法及其收敛速度 牛顿迭代法又称为牛顿-拉夫逊方法(Newton-Raphson method ),是一种在实数域和复数域上通过迭代计算求出非线性方程的数值解方法。方法的基本思路是利用一个根的猜测值x 0做初始近似值,使用函数f (x )在x 0处的泰勒级数展式的前两项做为函数f (x )的近似表达式。由于该表达式是一个线性函数,通过线性表达式替代方程中的求得近似解x 1。即将方程f (x ) = 0在x 0处局部线性化计算出近似解x 1,重复这一过程,将方程f (x ) = 0在x 1处局部线性化计算出x 2,求得近似解x 2,……。详细叙述如下:假设方程的解x *在x 0附近(x 0是方程解x *的近似),函数f (x )在点x 0处的局部线化表达式为 )()()()(000x f x x x f x f '-+≈ 由此得一次方程 0)()()(000='-+x f x x x f 求解,得 ) ()(0001x f x f x x '-= 如图1所示,x 1比x 0更接近于x *。该方法的几何意义是:用曲线上某点(x 0,y 0)的切线代替曲线,以该切线与x 轴的交点(x 1,0)作为曲线与x 轴的交点(x *,0)的近似(所以牛顿迭代法又称为切线法)。设x n 是方程解x *的近似,迭代格式 ) ()(1n n n n x f x f x x '-=+ ( n = 0,1,2,……) 就是著名的牛顿迭代公式,通过迭代计算实现逐次逼近方程的解。牛顿迭代法的最大优点是收敛速度快,具有二阶收敛。以著名的平方根算法为例,说明二阶收敛速度的意义。 例1.已知4.12≈,求2等价于求方程f (x ) = x 2 – 2 = 0的解。由于x x f 2)(='。 应用牛顿迭代法,得迭代计算格式 )/2(2 11n n n x x x +=+,(n = 0,1,2,……) 取x 0= 1.4为初值,迭代计算3次的数据列表如下 图1 牛顿迭代法示意图

用牛顿迭代法求解近似根

第四题 题目:用Newton 法求方程在 74 28140x x -+= (0.1,1.9)中的近似根(初始近似值取为区间端点,迭代6次或误差小于0.00001). 解:此题是用牛顿迭代法求解近似根的问题 1. Newton 迭代法的算法公式及应用条件: 设函数在有限区间[a,b]上二阶导数存在,且满足条件 ⅰ. ()()0f a f b <; ⅱ. ()''f x 在区间[a,b]上不变号; ⅲ. ()'0f x ≠; ⅳ. ()()'f c f c b a ≤-,其中c 是a,b 中使()()''min(,)f a f b 达到的一个. 则对任意初始近似值0[,]x a b ∈,由Newton 迭代过程 ()()() 1'k k k k k f x x x x f x +=Φ=-,k=0,1,2… 所生成的迭代序列{ k x }平方收敛于方程()0f x =在区间[a,b]上的唯一解а. 对本题: )9.1()9.1(0 )8(4233642)(0 )16(71127)(0 )9.1(,0)1.0(,1428)(3225333647>?''<-=-=''<-=-='<>+-=f f x x x x x f x x x x x f f f x x x f 故以1.9为起点 ?? ???='-=+9.1)()(01x x f x f x x k k k k 2. 程序编写 #include #include void main() { double x0,x=1.9; do

{ x0=x; x=x0-(x0*x0*x0*x0*x0*x0*x0-28*x0*x0*x0*x0+14)/(7*x0*x0*x0*x0*x0*x0-28*4*x0*x0 *x0); } while(fabs(x-x0)>1e-5); printf("x=%f",x); } 3.打印结果 4.讨论分析 A.要用误差范围来控制循环的次数,保证循环的次数和质量。 B.编写程序过程中要注意标点符号的使用,正确运用适当的标点符号。C.Newton迭代法是局部收敛的,在使用时应先确定初始值。

Newton迭代法浅析

目录 第一章:绪论 (2) 第二章 Newton迭代原理 (3) 2.1 一般迭代思想的设计 (3) 2.2 Newton迭代法的原理 (3) 2.3小结: (5) 第三章 Newton迭代法的收敛性 (6) 3.1 Newton迭代法中不收敛的情况 (6) 3.2 定理证明 (7) 3.3 Newton迭代法的收敛性分析 (10) 3.4小结: (12) 第四章两种改进的Newton迭代法 (14) 4.1 改进初值 x的Newton下山法 (14) 4.2 一种新的Newton迭代法加速设计 (15) 4.3小结: (16) 第五章 Newton迭代法的应用 (17) 5.1 Newton迭代法的Matlab实现 (17) 5.2 数值举例 (17) 5.3小结: (20) 总论 (21) 参考文献 (22) 致谢 (23)

第一章绪论 在自然科学和工程技术中很多问题的解决常常归结为解非线性方程(组)或者线性方程(组)代数方程组,例如电学中的网络问题,船体数学放样中建立三次样条函数问题,用最小而乘求是实验数据的曲线拟合问题,用差分或者有限元方法解常微分方程等。关于非线性方程(组)的求解,一般有两类解法:直接法和迭代法。我们知道,只有一次、二次和三次方程有规范的求根公式,而高于三次的方程0 ) x f是不存在求根公式的。因此求根变得一异常的困难。而科学计算却 ( 很好解决了这一问题,其中最基本的算迭代法了,它对于解决非线性方程(组)的根变得异常方面。就迭代法而言,Newton迭代法可算是其经典之作。 Newton迭代法又称为Newton-Raphson迭代法,它是Newton在17世纪提出的一种在实数域和复数域上近似求解方程的方法。牛顿迭代法是求非线性方程(组)根的重要方法之一,其迭代格式简单,且在单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根。 关于Newton迭代法,许多学者为之做了相当多的研究,并且留下了很多经典的文献([2-6])。Newton迭代法在解决Banach空间中非线性方程或方程组的应用更为重要,如梯形Newton迭代法。其中,Ksntorovich[7]关于Newton迭代法收敛的工作是解决方程算法现代研究的起点,并给出的Ksntorovich条件。 Newton迭代法是一个重要的计算方法和思想。牛顿迭代法的主要功能:计算方程时可以比较快速方便的计算出来结果但并不影响计算出来结果的精确度,运用于多种工业设计和数学设计方面,其重要性可见一般。 在我们开设的由李庆扬等编《数值分析》(第五版)中,其第七章7.4节就专门对Newton迭代法进行了一定的讲解。但是,其书上所讲内容甚微。这对于一个初学者来说,算是一个障碍。因此,本人想对Newton迭代法做一个系统的总结。 本文主要从Newton迭代法的基本思想、收敛性、及几种Newton迭代法的变形作一个全方面的介绍。主要是想在总结前人的经典研究之上,系统的对Newton 迭代法作一下总结,以便更加快速的学习和掌握Newton迭代法。

相关文档
最新文档