算法原理
略
二分法
网上有很多对二分法的介绍,这里不再多做赘述。
本文为《非线性最优化》中二分法的Python实现。但是目前此代码仅适用于单谷凹函数,可求函数所对应导数的根、根所在区间、x为何值时函数取最值。
稍加修改可求函数最值。
代码展示
from sympy import *
pre_function = input('\n***注意!此函数为测试课本《非线性最优化》二分法,目前只适用于 单谷凹函数 (如函数x**2)!!***\n请输入函数:')
# 求导
x = Symbol("x")
aft_function = diff(pre_function, x)
print(f'函数{pre_function}的一阶导数为:{aft_function}')
# 定义全局变量a, b
a = 0
b = 0
def qiudaoshuzhi(fun, num):
"""求导数值"""
result = float(fun.subs({
x: num}))
print(f'当前一阶导数值为:{result}')
return result
def suan1(t0, h, fun):
"""寻找区间1"""
t1