Casio50 » fx-3x50P » Programs 程式集 » (Uncategorized 未分類) »

Numerical Minimum Searching
數值法求最小值

本式可求一函數在某三點附近的最小值.

<COMP>
Goto 3 : Lbl 0 : f(X) → Y :
X = A => Goto 1 : X = B => Goto 2 : Goto 4 :
Lbl 3 : ? → A : ? → B : ? → C :
Lbl 5 :
A → X : Goto 0 : Lbl 1 : Y → D :
B → X : Goto 0 : Lbl 2 : Y – D → M :
C → X ◢ Goto 0 : Lbl 4 : Y ◢
D – Y → D : D + M :
.5 ( B ² D + C ² M – A ² Ans ) ÷ ( B D + C M – A Ans → D :
B → A : C → B : D → C : Goto 5
>138 Bytes

操作方法

一般操作 例子
f(x) 在 x = x0x1x2 附近的最小值. 求 sin sin xx = 4 附近的最小值. (弧度)
整體程式為:
<COMP>
Goto 3 : Lbl 0 : sin sin X → Y :
X = A => Goto 1 : X = B => Goto 2 : Goto 4 :
Lbl 3 : ? → A : ? → B : ? → C :
Lbl 5 :
A → X : Goto 0 : Lbl 1 : Y → D :
B → X : Goto 0 : Lbl 2 : Y – D → M :
C → X ◢ Goto 0 : Lbl 4 : Y ◢
D – Y → D : D + M :
.5 ( B ² D + C ² M – A ² Ans ) ÷ ( B D + C M – A Ans → D :
B → A : C → B : D → C : Goto 5
>138 Bytes
啟動程式 Prog 1
輸入資料
x0 EXE x1 EXE x2 EXE
4 EXE 3.9 EXE 4.1 EXE
(可用要輸入的點的附近兩點作餘下輸入)
顯示近似值及其相對函數值
x2 EXE f(x2) EXE
x3 EXE f(x3) EXE
x4 EXE f(x4) EXE
x5 EXE f(x5) EXE ...
4.1 EXE -0.729969353 EXE
4.565169459 EXE -0.83557729 EXE
4.636128471 EXE -0.839897085 EXE
4.698865406 EXE -0.841421574 EXE
4.711906245 EXE -0.841470921 EXE
4.712374276 EXE -0.841470984 EXE
4.712388751
EXE -0.841470984 EXE
4.712387489
EXE -0.841470984 EXE ...
(即最小值約為 -0.8415, 對應之 x 值為 4.7124)
(正確之 x 值為 4.71238898038)

記憶體

A xn-2
B xn-1
C xn
D f(xn-2)
X xn
Y f(xn)
M Δf

其他資料

若輸入三點或連續約算出來的三點共線則會產生「Math ERROR」錯誤.

由於計數機的截距錯誤問題, 算出的 x 值通常只能準確至 8 個有效數字.

如果給出的三點過於接近 f(x) 的最大值, 本式可能會變成求得 f(x) 的最大值.

本式只能求局部最小值 (Local minimum), 而不能求全域最小值 (Global minimum).

本式的找最小值方法是找出一條通過 (x0, f(x0))、(x1, f(x1))、(x2, f(x2)) 的二次方程, 算出其頂點 (vertex)x 坐標並令其為 x3, 接著對 (x1, f(x1))、(x2, f(x2))、(x3, f(x3)) 做同樣的動作. 而那些頂點會逐漸趨近於 f(x) 的最小值.

Hosted by www.Geocities.ws

1