前言
本系列涉及线性与非线性规划中的几种规划算法
1.本节介绍二次拟合方法
2.参考:陈宝林-最优化理论与算法
3.采用python编程实现,已测试,代码可行
一、二次拟合方法(抛物线法)
二次拟合法(抛物线法):抛物线法的基本思想是,在极小点附近,用二次三项式来逼近目标函数。
具体的方法可以参见陈宝林的抛物线这一小节。
二、代码实现
1.代码
需要注意的是,采用二次拟合要确定三个合适的初始点,本程序的三个初始点要自己找好,也可以采用进退法来找。
#参考资料,陈宝林
#实现二次拟合,求解一维搜索的无约束问题,初始的三个点需要自己给出来。之后再完善采用进退法得到三个初始可行点
from sympy import *
import numpy as np
import math
class Ercinihe_Function:
def __init__(self,F,Xi):
self.Xi = Xi
self.f = F
######################################################
def iteration_x(self,X0,acc1):
k=0
while True:
fk=[]
xk=X0
print(f'第{k}次的点为{X0}')
for index,item in enumerate(X0):
f1_3 = self.f.evalf(subs={
self.Xi:item})
fk.append(f1_3)
print(f'第{k}次的值为{fk}')
B1=