declare @n1 decimal(6,4), @n2 decimal(6,4), @mid decimal(6,4)
set @n1=0
set @n2=1
while (@n1< @n2)
begin
set @mid=(@n1+@n2)/2
if( 59*(@mid + power(@mid,2) + power(@mid,3) + power(@mid,4) + power(@mid,5))+1250* power(@mid,5)=1000)
break;
if(59*(@mid + power(@mid,2) + power(@mid,3) + power(@mid,4) + power(@mid,5))+1250* power(@mid,5)<1000)
set @n1=@mid + 0.0001;
else
set @n2=@mid - 0.0001;
end
print @mid
/*
0.9091*/
set @n1=0
set @n2=1
while (@n1< @n2)
begin
set @mid=(@n1+@n2)/2
if( 59*(@mid + power(@mid,2) + power(@mid,3) + power(@mid,4) + power(@mid,5))+1250* power(@mid,5)=1000)
break;
if(59*(@mid + power(@mid,2) + power(@mid,3) + power(@mid,4) + power(@mid,5))+1250* power(@mid,5)<1000)
set @n1=@mid + 0.0001;
else
set @n2=@mid - 0.0001;
end
print @mid
/*
0.9091*/
因为当>1的 时候59(X + X平方 + X立方 + X四次方 + X五次方)+1250*X五次方>1000
当 <0时候59(X + X平方 + X立方 + X四次方 + X五次方)+1250*X五次方<0
对59(X + X平方 + X立方 + X四次方 + X五次方)+1250*X五次方求导 值>0 所以 59(X + X平方 + X立方 + X四次方 + X五次方)+1250*X五次方是个递增函数
又因为当X=1的时候59(X + X平方 + X立方 + X四次方 + X五次方)+1250*X五次方>1250>1000
所以 59(X + X平方 + X立方 + X四次方 + X五次方)+1250*X五次方=1000时候的X值一定在0——1之间!
我觉得自己好想枉费了学习SQL啦~~
真笨。
连sql是什么都不知道,
假sql之名进行强暴存储过程,
这年头的程序员....哎....
用这类的方式解决,就像用脚拿筷子吃饭一样...如果要求答案不是最准确的,
简单的用用牛b法,差不多就可以了。
for ( double i = 负无穷大; i < 正无穷大 ; i+= 0.00001f )
{
if (f(i) <= e)
{
printf("got one : %10.8lf", i);
}
}
呵呵,SQL语法不懂,翻译一下应该差不多了
列 X
0.0001
0.0002
......
100000此表可以复用给其他一元方程.然后 SELECT X FROM ALL_REAL WHERE ABS(59*(X + X*X* + X*X*X + X*X*X*X + X*X*X*X)+1250*X*X*X*X*X - 1000) <= 0.1
AND X BETWEEN 0 AND X (此题的可能的X范围)
列 X
0.0001
0.0002
......
100000 此表可以复用给其他一元方程. 然后 SELECT X FROM ALL_REAL WHERE ABS(59*(X + X*X* + X*X*X + X*X*X*X + X*X*X*X)+1250*X*X*X*X*X - 1000) <= 0.1
AND X BETWEEN 0 AND 1 (此题的可能的X范围)