You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言使用Deriv包对函数向量自变量求导的问题咨询

Deriv包向量自变量求导解决方案

报错原因

Deriv默认将输入参数按标量处理,微分时把向量x当作长度为1的标量代入%*%运算,因此触发维度不匹配错误。

可行方案(无需拆分向量为独立参数)

方案1:声明向量参数属性

调用Deriv时通过vectorize.args指定目标参数为向量类型,配合combine参数合并导数结果:

library(Deriv)
h = function(x) as.vector(c(1,2)%*%x) # 将矩阵乘法输出转为向量,避免格式报错
dh = Deriv(h, x = 'x', vectorize.args = "x", combine = "cbind")
dh(c(1,2))
# 运行输出:
#      [,1] [,2]
# [1,]    1    2

参数说明:

  • vectorize.args = "x":告知Deriv参数x是向量类型,而非单个标量
  • combine = "cbind":将各分量的导数按列合并为矩阵,规避向量运算时的长度不匹配问题

方案2:函数定义使用向量索引

在定义目标函数时直接使用向量的分量索引写法,Deriv可自动识别向量结构,无需额外参数:

library(Deriv)
h = function(x) 1*x[1] + 2*x[2]
dh = Deriv(h, x = 'x')
dh(c(1,2))
# 运行输出:
# [1] 1 2

该方案适配任意自定义向量函数,只需要把向量运算的逻辑按分量展开即可,无需修改Deriv的调用参数。

内容的提问来源于stack exchange,提问作者Samuel Weisenthal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 08:15:03