範例:梯度運算子
• 定義函數 f:
使用梯度運算子接收 f 的偏導數向量:
• 定義向量函數並依向量 x 計算函數 f 的梯度。
在此範例中,設定所有陣列之起始索引的
ORIGIN 設定 0。
在 f 中具有最大下標的變數是 x2 。Mathcad 會假設有三個變數:x0、x1 及 x2。結果會產生包含三個值的梯度向量,含這些變數的偏導數。如果 x0 或 x1 未出現在 f 中,Mathcad 仍會傳回包含三個值的向量,但對應於遺失變數的項目會設為 0。
對於在 f 中出現的最大下標 n,Mathcad 會假設 n + 1 變數、x0、 x1、...xn,並傳回長度 n + 1 的向量。
• 若以數值方式定義
x,則可使用
等號 = 計算梯度。Mathcad 會以 x 的值計算梯度並傳回數值向量,代表點 x 的梯度。x 的長度必須大於顯示在 f 中的最大下標,且 Mathcad 會傳回具長度(x) 項目的梯度。
在以下範例中,x0 與 x1 是出現在運算式中出現的唯一變數,Mathcad 會採用有關 x0 與 x1 的偏導數,然後傳回兩個值的向量。
但是,如果您將 x 定義為三元素向量,Mathcad 會假設有其他不會出現在運算式中的變數 x2。結果為三元素向量。
使用梯度運算子搭配 genfit 函數
梯度運算子在設定 genfit 函數的引數時尤其有用,可讓一般非線性函數適合資料集。
• 使用下表中的資料。
• 第一欄包含資料的 x 值,第二欄包含 y 值。
• 依下列格式的函數為數據建模:
在此處,a1、a2 及 a3 是在 a 向量中包含的未知參數
您可以依下列方式呼叫 genfit 以為數據建模:
在此運算式中
◦ X 與 Y 是包含數據之 x 值及 y 值的向量。
◦ guess 是參數初始估值的向量。
◦ F 是一個向量,其第一個項目是模型函數 f(x, a),其剩餘的項目是 f 的偏導數,相關於未知參數。
• 使用梯度運算子與 stack 函數建立向量 F。
• stack 函數會將模型函數 f 置於梯度運算子所建立之偏導數向量之上。
• 接下來,建立參數的估值向量。
• 套用 genfit 如下:
• 最適合的參數為: