资源描述:
《牛顿法逆插值法解方程及其分析》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、姓名:杜凡学号:02099037班级020991学号02099037计算方法大作业题目基于牛顿插值法一种新型非线性方程求根解法及算法分析学院电子工程学院班级020991学生姓名杜凡02099037摘要非线性方程,就是因变量与自变量之间的关系不是线性的关系,如平方关系、对数关系、指数关系、三角函数关系等等。求解此类方程往往很难得到精确解,经常需要求近似解问题。相应的求近似解的方法也逐渐得到大家的重视。求解非线性方程的方法很多,以迭代法为主,主要有二分法,牛顿迭代法,牛顿下山法,割线法,等等,本文旨在突破传统思维,以新的角度介绍一种非线性方
2、程的解法,牛顿插值解非线性方程。评价一个迭代公式的优劣,除去收敛条件之外,主要是看它的效能指标,即达到规定的精确度所花费的代价。因此如何构造收敛的迭代公式,分析公式的收敛速度和收敛条件,以及加快收敛的技术,这些都是迭代法研究的课题。本文主要对牛顿插值法进行改造,通过对函数的逆函数10/10姓名:杜凡学号:02099037进行牛顿插值多项式插值从而求出处对应的值,即所需的根,通过对方程f(x)=x.^2-exp(x)的求解分别比较了二分法和牛顿插值拓展法两种方式下的求解异同从而得出结论:在误差允许的范围内,牛顿逆插解方程的改进解法已经能够
3、得到相当高精度的解。【关键字】非线性方程二分牛顿插值一、算法思路根据对牛顿插值法的学习,我们受到启发,牛顿插值可以实现由(x,y)矩阵数据得到牛顿插值多项式,从而获得任意xi值处对应的函数值。我们可以再任意单调的区间,由(y,x)矩阵求出牛顿插值多项式,进而求得yi处对应的xi值,当我们令yi=0时,即可对任意线性和非线性方程求解。用牛顿插值求f(x)的反函数在0点的值f’(0),即为f(x)=0的解。用牛顿插值多项式对y,x进行逆插值得到y=f(x)的f’(0),即xi=chashangnewton(y,x,0);xi就是f(x)=0
4、的解二、未改进的算法matlab程序1)逆插值求解算法%main.mclc;clear;x=-1:0.1:0;y=fc(x);这里f(x)=x.^2-exp(x)xi=chashangnewton(y,x,0);:functionN=chashangnewton(x,y,xi)牛顿插值子程序%Newton»ù±¾²åÖµ·½·¨n=length(x);10/10姓名:杜凡学号:02099037m=length(y);ifm~=nerror('xoryÊäÈëÓÐÎó£¬ÔÙÀ´~');endA=zeros(n);Z=1.0;A(:,1)
5、=y;N=A(1,1);fork=2:n%kΪÁбêfori=k:n%iΪÐбêA(i,k)=(A(i-1,k-1)-A(i,k-1))/(x(i+1-k)-x(i));endZ=Z*(xi-x(k-1));N=N+Z*A(k,k);endfprintf('Newton²åÖµµÄ½á¹û±£Áô10λСÊýÊÇ%.10f',N);functionf=fc(x)f=x.^2-exp(x);下面我们以x.^2-exp(x)=0的求解为例介绍非线性方程的新解法方程x.^2-exp(x)=0为非线性方程,其曲线图如下10/10
6、姓名:杜凡学号:02099037图4函数曲线图首先以二分法方程求解,通过matlab程序运算可得结果如下:迭代次数:0根:-0.500000误差:0.500000迭代次数:1根:-0.750000误差:0.250000迭代次数:2根:-0.625000误差:0.125000迭代次数:3根:-0.687500误差:0.062500迭代次数:4根:-0.718750误差:0.031250迭代次数:5根:-0.703125误差:0.015625迭代次数:6根:-0.710938误差:0.007813迭代次数:7根:-0.707031误差:0.
7、003906迭代次数:8根:-0.705078误差:0.001953迭代次数:9根:-0.704102误差:0.000977迭代次数:10根:-0.703613误差:0.000488迭代次数:11根:-0.703369误差:0.000244迭代次数:12根:-0.703491误差:0.000122迭代次数:13根:-0.703430误差:0.000061迭代次数:14根:-0.703461误差:0.000031迭代次数:15根:-0.703476误差:0.000015迭代次数:16根:-0.703468误差:0.000008迭代次数:1
8、7根:-0.703465误差:0.000004迭代次数:18根:-0.703466误差:0.000002二分法结果为-0.703467通过我们的新型非线性方程解法:牛顿插值拓展解法可得结果如下10/10姓名