mysql实现二分法查找_数据库的二分法查找 | 学步园

先创建函数

create function F(@y float,@c float,@f float,@pv float,@m float,@n int,@d float)

returns float

as

begin

declare @i int

declare @ret float

set @i=0

set @ret=0

while @i

begin

set @ret=@ret+(@c/@f)*Power(@f/(@f+@y),@d/365*@f+@i)

set @i=@i+1

end

set @ret=@ret+@m*Power(@f/(@f+@y),@d/365*@f+@n-1)-@pv

return @ret

end

接着再用二分法计算,下面的过程可以写成存储过程,数据的输入你可以从表中读取,如果一次要计算表中多行数据,就用游标

declare @c float,@f float,@pv float,@m float,@n int,@d float

declare @yh float,@yl float,@fm float,@e float,@fh float,@fl float

/*赋值略

set @c=?

set @f=?

……*/

set @fh=dbo.F(@yh)

set @fl=dbo.F(@yl)

if @fh*@fl>=0 select '数据错误'

else begin

while abs(@yh-@yl)>@e

begin

set @fm=dbo.F((@yh+@yl)/2)

if @fm=0 break

if @fm*@fh<0

begin

set @yl=(@yh+@yl)/2

set @fl=@fm

end

else

if @fm*@fl<0

begin

set @yh=(@yh+@yl)/2

set @fh=@fm

end

end

select (@yh+@yl)/2

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值