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 = x0、x1 和 x2 附近的最小值. 求 sin sin x 在 x = 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