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

Julia求导咨询:如何计算向量形式函数的偏导数

Julia计算偏导数并兼容hcubature的方案

方案1:用Symbolics.jl生成显式偏导表达式

如果你需要得到20x[1]^3这种简洁的显式结果,Symbolics.jl是最优选择,还能转换成适配hcubature的数值函数。

  1. 安装并加载包:
using Pkg
Pkg.add("Symbolics")
using Symbolics
  1. 定义符号变量和目标函数:
@variables x[1:2]
f(x) = 5x[1]^4 - 2x[2]^2
  1. 计算对x[1]的偏导:
df_dx1 = Symbolics.derivative(f(x), x[1])

执行后会直接得到20x₁^3的显式表达式,完全符合你的要求。

  1. 转成可调用的数值函数(支持向量输入):
df_dx1_func = Symbolics.build_function(df_dx1, x, expression=Val{false})[1]

测试一下:df_dx1_func([2, 3])会返回160,完美适配后续的hcubature调用。

方案2:用ForwardDiff.jl做数值自动微分

你之前用ForwardDiff出错应该是用法问题,它完全支持向量输入,且和hcubature兼容。

  1. 安装并加载包:
using Pkg
Pkg.add("ForwardDiff")
using ForwardDiff
  1. 定义接受向量参数的目标函数:
f(x) = 5x[1]^4 - 2x[2]^2
  1. 两种方式求x[1]的偏导:
    • 求梯度后取第一个元素:
      grad_f(x) = ForwardDiff.gradient(f, x)[1]
      
    • 直接指定求第1个变量的偏导:
      df_dx1(x) = ForwardDiff.partialderivative(f, x, 1)
      
    两种方式调用后都能得到正确结果,比如grad_f([2,3])返回160。

和hcubature结合的示例

不管用哪种方法得到的偏导函数,都能直接传入hcubature做二重积分。比如计算偏导在[0,1]×[0,1]上的积分:

using Pkg
Pkg.add("HCubature")
using HCubature

# 以Symbolics生成的函数为例
integral, err = hcubature(df_dx1_func, [0,0], [1,1])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 15:05:14