由函数曲线分析可知,该解有3个。因为解的区间很容易确定,用二分法计算如下: var x0,x1,x2,y0,y1,y2:Real; begin x1:=-0.1; x2:=-1; y1:=power(2,x1)-x1*x1; y2:=power(2,x2)-x2*x2; Repeat x0:=(x1+x2)/2; y0:=power(2,x0)-x0*x0; if y0*y1 < 0 then begin x2:=x0; y2:=y0; end else begin x1:=x0; y1:=y0; end; until abs(y0)<1e-10; Edit1.Text:=FloatToStr(x0); end;因此,除了2,4解外,还有一解为 -0.766664695914369。
>>这样这能得一个解。 修改就可 while true do但其實根據一些邏輯推斷, 大于一定的數, 是不可能再滿足的
i := 0;
while true do
begin
inc(i)
if Power(2,i)=Power(i,2) then break;
end
ShowMessage(IntToStr(i));
这样这能得一个解。
你怎么知道没有更多的解呀?
你又怎么知道只有整数解了?
当且仅当x=2时,函数为零,即相交
从曲线图可以看出。
当x=2
当x=4
都有交点
还有个但x=-?的时候有个交点。这个x应该是个无限不循环的无理数。
var
x0,x1,x2,y0,y1,y2:Real;
begin
x1:=-0.1;
x2:=-1;
y1:=power(2,x1)-x1*x1;
y2:=power(2,x2)-x2*x2;
Repeat
x0:=(x1+x2)/2;
y0:=power(2,x0)-x0*x0;
if y0*y1 < 0 then
begin
x2:=x0;
y2:=y0;
end
else
begin
x1:=x0;
y1:=y0;
end;
until
abs(y0)<1e-10;
Edit1.Text:=FloatToStr(x0);
end;因此,除了2,4解外,还有一解为 -0.766664695914369。
修改就可 while true do但其實根據一些邏輯推斷, 大于一定的數, 是不可能再滿足的
csdn里面牛人多啊!看来这个负数解,用pc只能算到这个精度了。