#f(x)=x^2import numpy as npimport matplotlib.pyplot as pltdef f(x): return x*xdef Get_fai_Armijo(x,d,fai): c1=0.3 now=f(x) next=f(x-fai*d) for i in range(30): if next<
摘要由CSDN通过智能技术生成
#f(x)=x^2
import numpy as np
import matplotlib.pyplot as plt
def f(x):
return x*x
def Get_fai_Armijo(x,d,fai):
c1=0.3
now=f(x)
next=f(x-fai*d)
for i in range(30):
if next<now:
fai*=2
next=f(x-fai*d)
else:
break
for i in range(50):
if next>now-c1*fai*d*d :
fai/=2
next=f(x-fai*d)
else:
break
return fai
def Get_fai_Armijo_Quad(x,d,fai):
c1=0.3
now=f(x)
next=f(x-fai*d)
for i in range(30):
if next<now:
fai*=2
next=f(x-fai*d)
else:
break
for i in range(50):
if next>now-c1*fai*d*d :
b=d*fai*fai/(now+d*fai-next)
b/=2
if b<0:
fai/=2
else:
fai=b
next=f(x-fai*d)
el
#f(x)=x^2import numpy as npimport matplotlib.pyplot as pltdef f(x): return x*xdef Get_fai_Armijo(x,d,fai): c1=0.3 now=f(x) next=f(x-fai*d) for i in range(30): if next<