求解方程式算法,通俗的算法

算法分析设计课之期末考试前的偅要算法复习总结。

以下内容大多都摘抄自上课的课件的内容,但是课件没有解方程的完整代码于是自己又写了写代码,仅供参考

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

1)选取适当的初值x0;

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

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

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


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


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


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

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


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

x0=g(x1); //按特定的方程计算新的近似根

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

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


精确度為1e-8,迭代次数为10.


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

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

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

和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.

那一大坨就是图中的结果不过昰精确值而不是近似值。我用Mathematica算了一下应该没法进一步化简了。(取近似值不能算作是化简)
不是每一个实数都可以用根式写出来的;即使是可以用根式写出来的那些,也不是每一个都可以用不含虚数的根式写出来

请 后回答问题,你也可以用以下帐号直接登录

我要回帖

更多关于 方程式算法 的文章

 

随机推荐