在非线性最小化函数stats::nlm
的帮助文件中,它声明其中一个参数f
是(强调我的):
要最小化的函数,返回单个数值。这应该是一个函数,第一个参数是长度为p的向量,后跟由...参数指定的任何其他参数。 如果函数值具有名为gradient或梯度和粗体属性的属性,则这些属性将用于计算更新的参数值。
这是否意味着渐变和hessians由以下命令提供:
attr(f, 'gradient') <- function(...){...}
此功能的输入和输出应该是什么?
将此与一般优化器stats::optim
对比:
optim(par, fn, gr = NULL, ...,
method = c("Nelder-Mead", "BFGS", "CG", "L-BFGS-B", "SANN",
"Brent"), ...)
其中渐变被明确指定为optim
的参数,作为示例,请参阅:how to propery specify a gradient function for use in optim() or other optimizer
检查nlm
的代码内部结构没有帮助。
答案 0 :(得分:0)
这是一个简单的一维示例:
<?php
include_once("db_conx.php");
$sql = "SELECT * FROM users WHERE AND activated='1' ORDER BY RAND()";
$query = mysqli_query($db_conx, $sql);
$i = 0;
$dynamic_table = '<table border="1" cellpadding="10">';
while ($row = mysqli_fetch_array($query, MYSQLI_ASSOC)) {
$id = $row["id"];
$username = $row["username"];
if ($i % 3 == 0) { // if $i is divisible by our target number (in this case "3")
$dynamic_table .= '<tr><td>' . $member_name . '</td>';
} else {
$dynamic_table .= '<td>' . $member_name . '</td>';
}
$i++;
}
$dynamic_table .= '</tr></table>';
?>
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<?php echo $dynamic_table; ?>
</body>
</html>
给出了:
f <- function(x) {
out <- -exp(-0.5 * x^2)
attr(out, 'gradient') <- -x * out
attr(out, 'hessian') <- (x^2 - 1) * out
return(out)
}
nlm(f, 1.3, hessian = TRUE, check.analyticals = TRUE)