数值分析 四种方法解方程实验 程序代码.doc
上传人:qw****27 上传时间:2024-09-12 格式:DOC 页数:4 大小:83KB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

数值分析 四种方法解方程实验 程序代码.doc

数值分析四种方法解方程实验程序代码.doc

预览

在线预览结束,喜欢就下载吧,查找使用更方便

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实验目的在实际问题中常常会遇到求解非线性方程或非线性方程组的问题。表示为求方程f(x)=0的根,或称为求函数f(x)的零点。下面将介绍几种对非线性方程的求解办,但大部分都是要求知道根在什么范围内,而且在此范围内只有一个根。算法描述⑴设置菜单选项:1.对分区间法2.迭代法3.Newton法4.弦位法,用来选择要使用的方法来求解非线性方程f(x)=x3-3x-1=0在x[0]=2附近的实跟。⑵对每个方法进行分析:①对分区间法:找出f(x)=0的根的存在区间(a,b),取a=1,b=3,则f(1)=-3,f(3)=17。计算f(x)的区间中点函数值f((a+b)/2)。若f((a+b)/2)约等于0,则停止计算。否则,若f((a+b)/2)与f(a)异号,则根位于区间[a,(a+b)/2]中,以(a+b)/2代替b;若f((a+b)/2)与f(b)异号,则根位于区间[(a+b)/2,b]中,以(a+b)/2代替a。重复以上过程,有根区间以1/2的比率缩小,直到区间缩小到容许范围之内。此时,区间中点即可作为所要求的方程的近似解。②迭代法:按照迭代的思想将方程变形,x=g(x),有多种变形方式:例:x=(x^3-1)/3则g(x)=(x^3-1)/3连续,但一阶导g’(x)=x^2,在迭代区间没有上界,无法保证迭代收敛,不可取。x=x^3-2x-1则g(x)=x^3-2x-1连续,但一阶导g’(x)=3x^2-2,在迭代区间没有上界,无法保证收敛,也不可取。x=(3x+1)^(1/3)则g(x)=(3x+1)^(1/3)一阶导g’(x)=1/3(3x+1)^(-2/3),在迭代区间内有界且界M<1。则g(x)满足Lipschitz条件且L<1,迭代序列可以收敛到。且满足g(x)连续。所以选用这个变形方式。将f(x)=x^3-3x-1=0变形为x=(3x+1)^(1/3),则g(x)=(3x+1)^(1/3)一阶导连续且有界M<1,所以迭代法收敛。选定它的初始迭代值x[0]=2,则x[1]=g(x[0]),每次用x[1]替代x[0],直到|x[1]-x[0]|<e=0.0001(容许误差)停止计算,这样会产生一个迭代序列。计算每一步的迭代误差,最后一步的x[1]就是迭代法产生的近似解。③Newton法:Newton法是由选取的初值x[0]处作函数f(x)的切线,用切线与x轴的交点来近似代替f(x)与x轴的交点,要求f(x)存在导数,f(x)=x^3-3x-1,则f’(x)=3*x^2-3。导数存在。选定x[0]=2,计算f(x[0])。利用公式x[n+1]=x[n]-f(x[n])/f’(x[n])计算x[n+1],并计算f(x[n+1]),若f(x[n+1])约等于0或|x[n+1]-x[n]|<e=0.0001(容许误差)停止计算。x[n+1]就是迭代法产生的近似解。④弦位法:弦位法是选定曲线y=f(x)上的两个点做一条直线,用它与x轴的交点来代替其中的一个点,重复上述过程,直到误差在允许范围内。选定初始值x[0]=0和x[1]=2.5,f(x[0])*f(x[1])<0,通过迭代公式x[2]=x[1]-f(x[1])*(x[1]-x[0])/(f(x[1])-f(x[0]));计算x[2],如果f(x[2])约等于0则停止迭代,否则,用x[2]代替与之函数值同号的再去重复迭代算出x[2],直到相邻两次迭代值之差在容许范围。最后一步迭代的x[2]就是迭代法产生的近似解。源代码运行结果1.采用对分区间法,要选取恰当的区间,它是以1/2的比率缩小收敛的。2.使用迭代法,对方程变形时,得到x=g(x),这里的g(x)很关键,变形可以产生多个不同的g(x),选择合适的g(x)很重要,要找收敛速度最快的g(x)。并且要保证g(x)连续,一阶导存在且有界M<1。若选择错误的g(x),最后不会收敛。3.弦位法属于1.618阶收敛,它有一种变式,类似分区间法选取某一点的两侧的点,使得函数值异号,这样扩住了近似解,但是降低了收敛阶。4.采用Newton法时要保证所给的f(x)存在导数。Newton法是二阶收敛的,比其他方法收敛快。