Casio50 » fx-3x50P » Programs 程式集 » (Uncategorized 未分類) »
本式可求一函數在某三點附近的最小值.
<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 附近的最小值. (弧度) | |||||||||||
整體程式為:
|
||||||||||||
啟動程式 | 按 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) 的最小值.