用二分法求非线性方程实根
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
A-1 用二分法求非线性方程实根
本实验用二分法求方程f (x) = x3 −2x −5 =0 在区间[2,3]内的根。
源程序:
#include
#include
#include
float f(float x)
{
float a;
a=x*x*x-2*x-5;
return a;
} /*求函数值,如果求其它函数,只需改成其它函数即可*/
main()
{
float a,b,,e,x; /* a,b 分别表示有根区间的左、右端点, e 是精度要求,x 区间中点值*/ clrscr();
printf(" \n please input data a =");
scanf("%f",&a);
printf(" \n please input data b=");
scanf("%f",&b);
printf("\n please input data eps=");
scanf("%f",&e);
if(f(a)*f(b)<0)
{
while(f(x)!=0)
{
x=(a+b)/2;
if(f(x)*f(a)<0)
{
b=x;
if(fabs(b-a) else continue; } else { a=x; if(fabs(b-a) else continue; } } printf("\n"); x=(b+a)/2; printf("the root of f(x)=0 is x=%f\n",x); } else printf("\ not root! afresh input\n"); /*表示[a,b] 区间无根,重新选择有根区间*/ getch(); teturn(x); } 计算结果: please input data a = 2 please input data b = 3 please input data eps= 0.00001 the root of f(x)=0 is x= 2.094555