r - 通过for循环为R中的雅可比矩阵生成一个函数
问题描述
假设我有以下两个变量 y 和 z 以及变量 x
y = 1:10
z = 1:10
现在我想创建以下功能的雅可比
f <- function(x) c(y[1]*x[1]+z[1]*x[2],
y[2]*x[1]+z[2]*x[2],
: : : :
y[10]*x[1]+z[10]*x[2])
然后获得雅可比可以很容易地获得
jacobian(f, c(1,1))
现在假设
y= 1:i.
当 i 变大时,手动计算函数成为一项耗时的任务。
有没有办法为 i 构造相同的函数?
我尝试了以下方法:
for (i in 1:10) {
f[i] <- function(x) c(y[i]*x[1]+z[i]*x[2])
}
jacobian(f, c(1,1))
ThomasIsCoding 建议:
f <- function(x) tcrossprod(cbind(y, z), t(x))
这非常适合这种情况。
现在假设函数更复杂
y[1]*x[1]^2+z[1]/x[2]
建议的 t(x) 不再起作用。我现在如何为 x 写一个向量?
解决方案
您可以尝试以下功能的方式f
f <- function(x) tcrossprod(cbind(y, z), t(x))
推荐阅读
- elasticsearch - 弹性搜索 - 默认文档
- php - 警告:mysqli::__construct(): (HY000/1045): ProxySQL Error: Access denied for user 'root'@'2a02:4780:bad:f00d::18' (using password: NO) on line 12
- php - php 回显到新的 html 部分/标签
- flutter - 在颤动中打印休息请求错误时出现问题
- c - 为什么在声明指向函数的泛型指针时会出错?
- javascript - 在不提交表单的情况下显示模式错误
- python - 如何计算一个img中多个边界框的IOU?
- java - Swagger 实现 spring boot Oauth2 问题:404 409
- python - zip函数中的方括号问题
- python-3.x - 使用 np.shape() 时 (96,) 的含义?