❶ c语言二分法怎么用,求例子!!
首先二分法必须让数列有序,比如说我要在 1 2 3 4 5 6 7 8 9 10中找到5.
#include<stdio.h>
intmain()
{
intlow=0,high=9,m,k,sign=0;
inta[10]=
{
1,2,3,4,5,6,7,8,9,10
};
scanf("%d",&k);
while(high>=low)
{
intm=low+(high-low)/2;
if(a[m]>k)high=m-1;
elseif(a[m]<k)low=m+1;
else
{
printf("yes");
sign=1;
break;
}
}
if(sign==0)printf("no");
return0;
}
❷ c语言二分法
syms x
f=x^3-3*x-1;
df=diff(f,x);
eps=1e-5;
x0=2;
cnt=0;
MAXCNT=200; %最大循环次数
while cnt<MAXCNT %防止无限循环
x1=x0-subs(f,x,x0)/subs(df,x,x0); %去掉分号可以看到迭代过程.
if (abs(x1-x0)<eps)
break;
end
x0=x1;
cnt=cnt+1;
end
if cnt==MAXCNT
disp '不收敛'
else
vpa(x1,8)
end
❸ C语言如何用二分法查找一个数.我要一个例题
//二分法查找一个数,原数列必须是有序的,
//有个问题,当数列中有相同的数怎么处理,也就是只找到其中一个
void binsrch( int m[N],int k){
int low,high,mid;
low=0;high=N-1;
while (low<=high){
mid=(low+high)/2;
if (k>m[mid])
high=mid-1;
if (k<m[mid])
low=mid+1;
if (k==m[mid]){
printf("找到此数在数组的%d位,值为%d",mid+1,k);
return;
}
}
printf("没有找到此数,非常报歉");
return;
}
❹ C语言:二分法
这段代码是求解方程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缩小迭代区间,继续迭代!
❺ 关于C语言中二分法的简单问题,望高手指点
#include<stdio.h>
#include<math.h>
void main()
{
double a=-10.0,b=10.0,c,d;
c=(a+b)/2.0;
d=2*c*c*c-4*c*c+3*c-6;
/*之所以要加这样行是因为while语句中要判断d的值,所以一定要初始化d,而d的值又与c有关,所以要初始化c。此处可以不用c=(a+b)/2.0;d=2*c*c*c-4*c*c+3*c-6; 直接给d初始化,如d=3;(任意double范围内实数)。程序照样能行。*/
while(fabs(d)>10e-7)
{
c=(a+b)/2.0;
d=2*c*c*c-4*c*c+3*c-6;
/* 此处要加这两行c和d的值才会不断变化,不然后面if语句中对d的判断就会毫无意义*/
if(d>0)b=c;
if(d<0)a=c;
if(d==0)break;
}
printf("Gen=%.3lf",c);
getchar();
}
希望满意。
我在想,如果x的三个根都在-10到10之间,你怎么办?