用matlab不动点迭代法求方程x^3+4x^2-10=0根

(1) 证明用牛顿法解此方程是收敛的;
(2) 给出用牛顿法解此方程的迭代公式,并求出这个根(只需计算 计算结果取到小数点后4位)。

首先,迭代法解方程的实质是按照下列步骤构造一个序列x0,x1,…,xn,来逐步逼近方程f(x)=0的解:

1)选取适当的初值x0;

2)确定迭代格式,即建立迭代关系,需要将方程f(x)=0改写为x=φ(x)的等价形式;

3) 构造序列x0,x1,……,xn,即先求得x1=φ(x0),再求x2=φ(x1),……如此反复迭代,就得到一个数列x0, x1,……,xn,若这个数列收敛,即存在极值,且函数 φ(x)连续,则很容易得到这个极限值

首先我们将方程写成这种形式:

用初始根x0=1.5带入右端,可以得到

这时,x0和x1的值相差比较大,所以我们要继续迭代求解,将x1再带入公式得

直到我们我们得到的解的序列收敛,即存在极值的时候,迭代结束。

下面是这个方程迭代的次数以及每次xi的解(i=0,1,2....)

我们发现当k=7和8的时候,方程的解已经不再发生变化了,这时候我们就得到了此方程的近似解。

注意:如果方程无解,算法求出的近似根序列就不会收敛,那么迭代过程就会变成死循环。因此,在使用迭代算法前应先考察方程是否有解,并在算法中对迭代次数给予限制。

下面再写一个求解方程组的例子加深一下理解:

精确度为1e-8,迭代次数为100

迭代法求解方程的过程是多样化的,比如二分逼近法求解,牛顿迭代法等。

下面就是效率比较高且比较常用的牛顿迭代法:

牛顿迭代法又称为切线法,它比一般的迭代法有更高的收敛速度,如下图所示。

首先, 选择一个接近函数f(x)零点的x0, 计算相应的f(x0)和切线斜率f'(x0)(这里f ' 表示函数f的导数)。然后我们计算穿过点 (x0,f (x0))且斜率为f '(x0)的直线方程

和x轴的交点的x的坐标,也就是求如下方程的解

将新求得交点的x坐标命名为x1。如图4所示,通常x1会比x0更接近方程f(x) = 0的解。接下来用x1开始下一轮迭代 .

上式就是有名的牛顿迭代公式。已经证明, 如果f' 是连续的, 并且待求的零点x是孤立的, 那么在零点x周围存在一个区域, 只要初始值x0位于这个邻近区域内, 那么牛顿法必定收敛。

求形如ax^3+bx^2+cx+d=0方程根的算法,系数a、b、c、d的值依次为1、2、3、4,由主函数输入。求x在1附近的一个实根。求出根后由主函数输出。

由以上的公式可得到代码:

接下来说一下二分逼近法

用二分法求一元非线性方程f(x)= x^3/2+2x^2-8=0(其中^表示幂运算)在区间[0,2]上的近似实根r,精确到0.0001.

我要回帖

更多关于 matlab不动点迭代求根 的文章

 

随机推荐