欢迎来到天天文库
浏览记录
ID:10020247
大小:73.61 KB
页数:4页
时间:2018-05-21
《非线性方程的加速求根算法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、1实验目的1)通过创新算法加深对非线性方程求根方法的了解;2)通过用C语言求解例题加强对编程语言的掌握。2实验内容通过二分法寻找非线性方程的优化初始根,再用迭代法求解满足精度的解。将两种方法结合以加快对非线性方程组的求根速度。3实验步骤1)判断根的存在性此步可利用作图法或其他基本方法进行求解。2)利用二分法确定根的初始近似值给定区间[a,b],并设与符号相反,取为根的容许误差,为的容许误差。令;如果,则输出c,结束;否则执行;如果,则令;否则令,重复。3)利用迭代法求非线性方程的精确解将方程化为一个同
2、解的方程,给定一个初始值。代人右端可算得一个。再将代入右端,又可得。如此继续下去,会得到一个序列,其中,称为迭代序列,称为迭代函数。4例题解析及结果分析1)例题例题:说明方程在区间内有惟一根。,并选用适当的迭代法求(精确至3位有效数)。解:,故函数单调增加,因此,该方程在(1,2)间存在唯一的实根,取迭代函数,此时可以借用二分法选择较好的迭代初始值,初始根可较粗略,假设选择0.05,调用二分法后选择的结果是1.83,对于初值,运用迭代法求该非线性方程的满足精度根。其程序为:#include3、.h>#include#include#definef(x)sqrt(4-log(x))#definee0.0005voidmain(){inti;doublex1,x0;printf("Pleaseinputx0:");scanf("%lf",&x0);for(i=1;i<=1000;i++){x1=f(x0);printf("x[%d]=%-14.5f",i,x1);if(fabs(x1-x0)4、-14.5lf",x1);getch();}结果为:由于I,此时只需要迭代3次就得到所要的结果,故将作为近似值,已精确到了3位有效数字。附二分法程序:#include#include#definef(x)sqrt(4-log(x))#definee0.05#defineMAX500main(){doublea=1.0,b=2.0,m;for(inti=1;i<=MAX;i++){m=(a+b)/2;if(f(a)*f(m)<0)b=m;elsea=m;printf5、("第%d次Therootis%d=%f",i,(a+b)/2);if(fabs(b-a)
3、.h>#include#include#definef(x)sqrt(4-log(x))#definee0.0005voidmain(){inti;doublex1,x0;printf("Pleaseinputx0:");scanf("%lf",&x0);for(i=1;i<=1000;i++){x1=f(x0);printf("x[%d]=%-14.5f",i,x1);if(fabs(x1-x0)4、-14.5lf",x1);getch();}结果为:由于I,此时只需要迭代3次就得到所要的结果,故将作为近似值,已精确到了3位有效数字。附二分法程序:#include#include#definef(x)sqrt(4-log(x))#definee0.05#defineMAX500main(){doublea=1.0,b=2.0,m;for(inti=1;i<=MAX;i++){m=(a+b)/2;if(f(a)*f(m)<0)b=m;elsea=m;printf5、("第%d次Therootis%d=%f",i,(a+b)/2);if(fabs(b-a)
4、-14.5lf",x1);getch();}结果为:由于I,此时只需要迭代3次就得到所要的结果,故将作为近似值,已精确到了3位有效数字。附二分法程序:#include#include#definef(x)sqrt(4-log(x))#definee0.05#defineMAX500main(){doublea=1.0,b=2.0,m;for(inti=1;i<=MAX;i++){m=(a+b)/2;if(f(a)*f(m)<0)b=m;elsea=m;printf
5、("第%d次Therootis%d=%f",i,(a+b)/2);if(fabs(b-a)
此文档下载收益归作者所有