重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
吧0(a0), a1~a19放到数组中, 然后循环判断就行了
创新互联建站专注于三门网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供三门营销型网站建设,三门网站制作、三门网页设计、三门网站官网定制、小程序定制开发服务,打造三门网络公司原创品牌,更为您提供三门网站排名全网营销落地服务。
for(int i=0; i19 i++)
{
if(number=a[i] number=a[i+1])
{
cout"Range Num: " i+1;
break;
}
}
用进退法确定函数f(x)=x^2-6x+9的一优化搜索区间[a,b]
为X区间[A,B],F(X)=-X^2-6X+9=-(X^2+6X+9)+9+9=-(X+3)^2+18
当F(X)=9时候,即-(X+3)^2+18=9 ==X=0或 X=-6
当F(X)=9时候,即-(X+3)^2+18=-7 ==X=2 或X=-8
因为当X-3的区间,F(X)是单调减函数
当X-3的区间,F(X)是单调增函数
所以满足条件的区间[A,B]是[0,2]与[-6,-8]
所以A=0,B=2 或A=-6,B=-8
注意事项
(1)函数的单调性是对函数定义域内的某个子区间而言的,是函数的局部性质。
(2)函数f(x)在给定区间上的单调性是函数在该区间上的整体性质。
(3)函数的单调性定义中x1,x2有三个特征:任意性、有大小、属于同一个单调区间。
(4)求函数的单调区间,必须先求定义域。
(5)区间端点的写法:对于单独的一点,由于它的函数值是唯一确定的常数,没有增减变化,所以不存在单调性问题,因此在写单调区间时,可以包括端点,也可以不包括端点,但对于某些点无意义时,单调区间就不包括这些点。
用C语言来编进退法的搜索区间的源代码如下:
#includestdio.h
void main()
{
int a[20],x,i,start,end;
printf("input 20 numbers:\n");
for(i=0;i20;i++) scanf("%d",a[i]);
printf("please enter the number:\n");
scanf("%d",x);
for(start=0,end=19;start=end;)
{
i=start+(end-start)/2;
if (x==a[i])
{
printf("%d",i+1);
getch();
return;
}
else if (xa[i]) end = i-1;
else start=i+1;
}
扩展资料
1、C语言查找是在大量的信息中寻找一个特定的信息元素,在计算机应用中,查找是常用的基本运算,例如编译程序中符号表的查找。
2、其实二分查找、插值查找以及斐波那契查找都可以归为一类——插值查找。插值查找和斐波那契查找是在二分查找的基础上的优化查找算法。
把以下程序存为f618.m,再运行[x,min]=F618(0.2,0,1)
得到:x=1,min=0
function [x,min]=F618(precision,t0,h)
%初始区间为a,b,相对精度precision 即为原区间的多少分之,t0为初始值,h为步长
%用进退法得到高低高区间,在用0.618法求最值
%precision=0.2;
%t0=0;
%h=1;
[a,b]=Fpush(t0,h);
An=a;
Bn=b;
n=1;
while 0.618^(n-1)=precision
A=0.618.*(An-Bn)+Bn;
B=0.618.*(Bn-An)+An;
if AB
if F618Ret(A)F618Ret(B)
Bn=B;
else
An=A;
end
else
if F618Ret(A)F618Ret(B)
An=A;
else
Bn=B;
end
end
n=n+1;
end
x=An;
min=F618Ret(An);
%=======================================
function y=F618Ret(x)
%函数为f(x)=t^2-10*t+36 严格凸函数
y=x.^2-2*x+2;
%======================================
function [x1,x2]=Fpush(t0,h)
%进退法,调用函数为,F618Ret,t0为初始值,h为步长
a=t0;
b=t0+h;
while 1
if F618Ret(a)F618Ret(b)
h=0-h;
a=a+h;
b=a-h;
if F618Ret(b)F618Ret(b-h) F618(b)F618Ret(a)
break;
end
else
a=b;
b=a+h;
if F618Ret(a)F618Ret(b) F618Ret(a)F618Ret(a-h)
break;
end
end
end
x1=a;
x2=b;