❶ 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之間,你怎麼辦?