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

使用numpy求解带变量的Hessian矩阵逆时报LinAlgError问题求助

问题定位

该问题不是numpy功能限制导致的,属于代码调用逻辑错误:
你定义的hessf是需要传入x1、x2两个参数才能返回二维海森矩阵的可调用函数,但你在实现hessf_inv时,直接将hessf函数对象本身传入了np.linalg.inv,而非先调用hessf拿到实际的矩阵数值。numpy无法对函数对象求逆,识别到输入为非数组的0维对象时就会抛出对应报错。

修正代码

你只需要修改hessf_inv函数,先调用hessf(x1, x2)获取矩阵后再求逆即可,完整可运行代码如下:

import numpy as np
# Rosenbrock函数定义
def f(x1, x2):
    return 100*(x2-x1**2)**2+(1-x1)**2
# 定义梯度函数
def gradf(x1,x2):
    return np.array([[-400*x1*(x2-x1**2)-2*(1-x1)],[200*(x2-x1**2)]])
# 定义海森矩阵函数
def hessf(x1,x2):
    return np.array([[-400*x2+1200*x1**2+2 , -400*x1],[-400*x1 , 200]])
# 修正后的海森矩阵求逆函数
def hessf_inv(x1, x2):
    return np.linalg.inv(hessf(x1, x2))

print(hessf_inv(1,1))

运行后输出结果为:

[[0.5  1.  ]
 [1.   2.005]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 22:27:03