c语言二分法求根

c语言二分法求根,第1张

二分法计算函数f(x)=x*x*x*x+2*x*x*x-x-1

本程序在turbo c或c++下编译:

#include "stdio.h"

#include <math.h>

float f(float x)

{float y

y=x*x*x*x+2*x*x*x-x-1

return y

}

void main()

{float a=0,b=0,h,y,x

int k,n0

printf("please input qujian a and b")

scanf("%f%f%d",&a,&b,&n0)/*输入含根区间a,b,循环次数n0 */

for(k=0k<=n0k++)

{ x=(a+b)/2

h=(b-a)/2

y=f(x)

if(h<10e-6||fabs(y)<10e-6)

{ printf("k=%d,x=%f,y=%f",k,x,y)

break; }/*输出分半次数k,函数的根x,及x对应的函数值.*/

else

{if(f(a)*f(x)<0)

b=x

else a=x

}

}

}

这段代码是求解方程f(x)=0在区间[-10,10]上的根的数值解。

方法的思想就是:一直选取区间中间的数值,如果发现中间的函数值与一侧函数值,异号,那么说明解在这个更小的区间中,采用eps=1e-5作为区间的极限大小,通过迭代的方法求解这个方程的数值解。

所以了解了上述思想,那么else

if(f(a)*f(c)<0)

b=c

说明的是

f(a)和f(c)异号,那么使用b=(a+b)/2缩小迭代区间,继续迭代;同理else

a=c说明f(a)和f(c)同号,那么使用a(a+b)/2缩小迭代区间,继续迭代!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11033471.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存