二分法和牛顿法求解非线性方程(c语言).doc

二分法和牛顿法求解非线性方程(c语言).doc

ID:57401303

大小:13.50 KB

页数:2页

时间:2020-08-15

二分法和牛顿法求解非线性方程(c语言).doc_第1页
二分法和牛顿法求解非线性方程(c语言).doc_第2页
资源描述:

《二分法和牛顿法求解非线性方程(c语言).doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、(1)二分法求解非线性方程:#include#include#definef(x)((x*x-1)*x-1)voidmain(){floata,b,x,eps;intk=0;printf("intputeps");/*容许误差*/scanf("%f",&eps);printf("a,b=");for(;;){scanf("%f,%f",&a,&b);if(f(a)*f(b)>=0)/*判断是否符合二分法使用的条件*/printf("二分法不可使用,请重新输入:");elsebreak;}do{x=(a+b)/2;k++;if(f(a)*f

2、(x)<0)/*如果f(a)*f(x)<0,则根在区间的左半部分*/b=x;elseif(f(a)*f(x)>0)/*否则根在区间的右半部分*/a=x;elsebreak;}while(fabs(b-a)>eps);/*判断是否达到精度要求,若没有达到,继续循环*/x=(a+b)/2;/*取最后的小区间中点作为根的近似值*/printf("Therootisx=%f,k=%d",x,k);}运行结果:intputeps0.00001a,b=2,-5Therootisx=1.,k=20Pressanykeytocontinue总结:本题关键在于两个端点的取值和误差的判断,此程序

3、较容易。二分法收敛速度较快,但缺点是只能求解单根。(2)牛顿法求解非线性方程:#include#includefloatf(floatx)/*定义函数f(x)*/{return((-3*x+4)*x-5)*x+6;}floatf1(floatx)/*定义函数f(x)的导数*/{return(-9*x+8)*x-5;}voidmain(){floateps,x0,x1=1.0;printf("inputeps:");scanf("%f",&eps);/*输入容许误差*/do{x0=x1;/*准备下一次迭代的初值*/x1=x0-f(x0)/f1(x0

4、);/*牛顿迭代*/}while(fabs(x1-x0)>eps);/*当满足精度,输出近似根*/printf("x=%f",x1);}程序运行结果:x=1.总结:关键是牛顿迭代的应用,程序中最大缺点是函数及其导数已唯一给出确定不可求的随意函数的根,牛顿法比二分法收敛快,可以求重根。

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。