'測試表示式 x^2+2*x'測試區間[-3 5]'
測試精度e=0.2
'書上最小值x=-1.0255 f=-0.999
function result(byval expression as string, byval x as string) as single
dim tmpstr as string
tmpstr = replace(ucase(expression), "ln", "log")
tmpstr = replace(tmpstr, "x", x)
dim obj as object
set obj = createobject("msscriptcontrol.scriptcontrol")
obj.language = "vbscript"
result = obj.eval(tmpstr)
set obj = nothing
end function
private sub command1_click()
dim e as single
dim a1 as string
dim a3 as string
const r = 0.618
dim f as string
f = inputbox("輸入表示式")
a1 = inputbox("輸入區間左則值")
a3 = inputbox("輸入區間右則值")
e = csng(inputbox("輸入允許誤差值"))
a11: a11 = cstr(csng(a3) - r * (csng(a3) - csng(a1)))
f1 = result(f, a11)
a12: a12 = cstr(csng(a1) + r * (csng(a3) - a1))
f2 = result(f, a12)
22: if abs((f2 - f1) / f1) <= e then
if abs((csng(a12) - csng(a11)) / csng(a11)) <= e then
goto 33
else
a1 = cstr(a11)
a3 = cstr(a12)
goto a11
end if
else if f1 > f2 then
a1 = cstr(a11)
a11 = cstr(a12)
f1 = f2
goto a12
else
a3 = cstr(a12)
a12 = cstr(a11)
f2 = f1
a11 = cstr(csng(a3) - r * (csng(a3) - csng(a1)))
f1 = result(f, a11)
goto 22
end if
end if
33: if f1 > f2 then
ax = csng(a12)
fax = result(f, a12)
else
ax = csng(a11)
fax = result(f, a11)
end if
print "最小值ax=" & ax print "
最小值fax=" & fax
end sub
private sub form_load()
form1.windowstate = 2
end sub
黃金分割法與單峰函式求極值
分割法 又稱 0.618 法 是求單峰函式極值的一種試探法,所謂單峰函式是指只有乙個峰值 區域性極小值也是全域性極小值,或者說只有唯一的區域性極小值 的函式,其嚴格定義為 定義 設 f x 是定義在 a b 上的函式,若 則稱 f x 為 a b 上的單峰函式。求 y x2 顯然為單峰函式 在 1,...
網頁配色之黃金分割法
眾所周知,數學上有乙個 分割點 0.618。據說用次比例數分割是最具美感的,從美眉身材到高樓建築,從藝術到繪畫無不出其之左,因此被稱為 神奇 的 分割點。與此同時,人們也對其進行了大量的研究,研究結果更是大量的 神奇 說法。不過,我輩是現實主義者,神奇 就不談了,還是看看咋用它的 神奇 解決我的問題...
一維搜尋 黃金分割法
一 分割法的基本思想與原理 分割法適用於 a.b 區間上的任何單峰函式求極小值問題,對函式除要求 單峰 外不做其他要求,甚至可以不連續。分割法是建立在區間消去法原理基礎上的試探方法,即在搜尋區間 a,b 內適當插入兩點a1,a2,並計算其函式值。a1,a2將區間分成三段,應用函式的單峰性質,通過函式...