牛顿迭代法解元方程组以及误差分析matlab实现

牛顿迭代法解元方程组以及误差分析matlab实现
牛顿迭代法解元方程组以及误差分析matlab实现

举例,给定方程组为:

先用matlab 自带函数solve 解此方程组,确定牛顿迭代时的初值范围,得到根为:

?

??==8493476.0848937.108y x 作图验证: 此组值确为方程的根。

通过观察我们可以发现y 的取值必须大于0。这在程序中必须说明,如果迭代过程中y 小于0,则此迭代法发散。

误差分析:因为范数等价的原因,我们选择2范数。将两次相邻迭代差差范数的比值,即相对误的与,2x x n n 1+n x 的2范数作为误差,存储与一个向量或矩阵中,并作出曲线图,观察迭代过程中误差的变化情况。

如选初值为(12,0.3),得到误差图形为:

选初值为(12,1.2),误差图为:

我们可以发现误差在前3-5次迭代的时候迅速下降,但是中间会有上升的过程,直至最后误差达到我们设定的误差值。由此猜想迭代过程可能漏掉了一些根,利用作图,得到曲线如下:

可以发现还有两组根,用牛顿迭代法只能得到一组值,可能是因为所给方程比较特殊,它的定义域中x,y 均不能为0,导致函数不连续。 另外,也可能因为函数不连续,导致初值只能在根的附件变化时才能得到收敛的结果。

因此我们不妨将初值选的稍微小一些,如:[1,2],得到根为

选初值为[-1,4],得到根为

综上所述,此方程组有三组根,不同的初值,会得到不同的解的情况,也会有不同的误差情况。初值选得越接近真值,误差变化程度越小,迭代次数也越少。

程序在另三个附件中。

同理,对于n元函数方程组,我们有:

相关主题
相关文档
最新文档