运算符 > 微积分运算符 > 示例:梯度算子
示例:梯度算子
定义函数 f
单击可复制此表达式
使用梯度算子求得 f 的偏导数矢量:
单击可复制此表达式
定义矢量函数并根据矢量 x 计算函数 f 的梯度。
单击可复制此表达式
单击可复制此表达式
在本示例中,为所有数组设置开始索引的 ORIGIN 设置为 0。
f 中带有最大下标的变量为 x2。Mathcad 假定有三个变量:x0x1x2。最终将生成由这些变量的三个偏导数值构成的梯度矢量。即使 x0x1 未出现在 f 中,Mathcad 仍然返回由三个值构成的矢量,但会将与缺失变量相对应的条目设置为 0。
对于出现在 f 中的最大下标 n,Mathcad 假定 n + 1 个变量,x0 x1...xn 并返回长度为 n + 1 的矢量。
如果以数值形式定义 x,则可使用等号 = 来计算梯度。Mathcad 计算 x 值的梯度,然后返回一个数字矢量,表示点 x 处的梯度。x 的长度必须大于 f 中显示的最大下标,以便 Mathcad 返回一个带有 length(x) 条目的梯度。
在以下示例中,x0x1 是表达式中显示的唯一变量,Mathcad 取 x0x1 的偏导数,并返回由两个值构成的矢量。
单击可复制此表达式
单击可复制此表达式
单击可复制此表达式
但是,如果将 x 定义为三元素矢量,则 Mathcad 会假设一个附加变量 x2,该变量不会显示在表达式中。最终将生成由三个元素构成的矢量。
单击可复制此表达式
单击可复制此表达式
使用梯度算子和 genfit 函数
梯度算子尤其适用于设置 genfit 函数的自变量,该函数可将常规非线性函数与数据集相拟合。
在以下示例中,清除 x 的值:
单击可复制此表达式
使用下表中的数据。
单击可复制此表达式
第一列包含数据的 x 值,第二列包含 y 值。
单击可复制此表达式
单击可复制此表达式
用以下形式的函数对数据进行建模:
单击可复制此表达式
这里的 a1a2a3 为矢量 a 中包含的未知参数。
可按如下方式调用 genfit 对数据进行建模:
单击可复制此表达式
在该表达式中
XY 为包含数据的 x 值和 y 值的矢量。
guess 为包含参数初始估计值的矢量。
F 矢量的初始条目为模型函数 f(x, a),其余条目为 f 对于未知参数的偏导数。
使用梯度算子和 stack 函数创建矢量 F
单击可复制此表达式
单击可复制此表达式
函数 stack 将模型函数 f 置于由梯度算子创建的偏导数矢量之上。
接下来,创建参数的估值矢量。
单击可复制此表达式
按如下方式应用 genfit
单击可复制此表达式
可实现最佳拟合的参数有:
单击可复制此表达式
单击可复制此表达式
这对您有帮助吗?