admin时间:2024-04-08 21:47:21来源:本站整理点击:
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
/*2^x+3x-7*/
intmain(void)
{
floata=0.0f;
floatb=2.0f;
floatx=0.0f;
floaty=1.0f;
floaty_1=0.0f;
floaty_2=0.0f;
for(;b-a>0.1;)/*二分法求近似解*/
{
x=(a+b)/2.0f;
y=pow(2,x)+3.0f*x-7.0f;
y_1=pow(2,a)+3.0f*a-7.0f;
y_2=pow(2,b)+3.0f*b-7.0f;//pow返回的值不能再给它赋值,估计你是把+写成=了
if(y*y_1<0.0f)
b=x;
if(y*y_2<0.0f)
a=x;
}
printf("x=%f",x);
system("pause");
return0;
}
二分法
对于在区间上连续不断且的函数,通过不断地把函数的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法叫作二分法。
二分法适合区间上存在变号零点的函数,即区间端点函数值异号
如果求得的值都是整数的话,用闭区间“[]”就可以! 不过一般情况下开区间“()”在这里是通用的,因为用二分法求值求得的是一种近似值,所以用开区间最合适了 如果求得的值都是整数的话,从函数图像中也可以看出函数也图像有交点,所以在二分法规定中有(所求值域的顶端值都为整数是,用闭区间符号也可!) 希望对您有所帮助!
Copyright 2005-2023 yaolan.com 〖摇篮网〗 版权所有 备案号:滇ICP备2022004586号-57
声明: 本站文章均来自互联网,不代表本站观点 如有异议 请与本站联系 本站为非赢利性网站 不接受任何赞助和广告 侵权删除 478923@qq.com