python实现一维搜索搜索进退法

#定义函数 t0 及h
f = lambda t : t**3 - 2*t**2 + 1
t0 = -0.5 #初始点
h = 0.5 #初始步长

t2 = t0 + h
t0_value = round(f(t0), 3)
t2_value = round(f(t2), 3)
h = h if t2_value < t0_value else -h
print(f't0={t0},t2={t2},f(t0)={t0_value},f(t2)={t2_value},h={h}')
print()
t1 = t0 +h

h = 2 * h
t2 = t0
t0 = t1
t1 = t0 + h
print(f't2=t0={round(t2, 3)} t0=t1={round(t0, 3)} t1=t0+h={round(t1, 3)} ')

t1_value = round(f(t1), 3)
t0_value = round(f(t0), 3)
print(f'f(t1)={t1_value}, f(t2)={t2_value}')

while(t1_value < t0_value):
    print('f(t1) < f(t0)')
    print()
    h = 2 * h
    t2 = t0
    t0 = t1
    t1 = t0 + h
    print(f't2=t0={round(t2, 3)} t0=t1={round(t0, 3)} t1=t0+h={round(t1, 3)} ')
    t1_value = round(f(t1), 3)
    t0_value = round(f(t0), 3)
    print(f'f(t1)={t1_value}, f(t0)={t0_value}')


print('f(t1) > f(t0) 算法截止')
print()
a = round(min(t1, t2), 3)
b = round(max(t1,t2), 3)
print(f'a=min(t1, t2)={a} b=max(t1,t2)={b}')
print(f'初始搜索区间[{a},{b}])')
print(f'初始点[{round((a+b)/2,3)}]')

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值