编辑代码

function funx(x)

    y = x*x*x*math.sin(3.14*x)+math.cos(x)
    return y
end

GOLDEN=0.618

x1y = 0.0
x2y = 0.0
ax = 0.0
bx = 0.0
m=1
am=-1
bm=1

bx = GOLDEN*(bm-am)
ax = (1-GOLDEN)*(bm-am)
x2 = am+bx
x1 = am+ax
x1y = funx(x1)
x2y = funx(x2)
n = 1
while n<51 do


    if(x1y<x2y) then

        bm = x2
        am = am
        x2 = x1
        x1 = am+(1-GOLDEN)*(bm-am)
        x2y = x1y
        x1y = funx(x1)


    else

        am = x1
        bm = bm
        x1 = x2
        x2 = am+GOLDEN*(bm-am)
        x1y = x2y
        x2y = funx(x2)
    end


    if(ax<0.4E-8) then
        break
    end
    n=n+1
end

print("funmin",funx(x1),funx(x2))