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

Sympy.solve报AttributeError: 'ImmutableDenseNDimArray'无as_independent属性排查

报错原因与解决方案

错误根因

AttributeError: 'ImmutableDenseNDimArray' object has no attribute 'as_independent' 错误由以下原因导致:
你使用np.dot计算SymPy符号变量与NumPy矩阵的乘积时,返回结果为SymPy与NumPy混用生成的ImmutableDenseNDimArray多维数组对象,而SymPy的solve函数仅支持求解标量符号表达式或表达式列表,无法识别数组类型的输入,因此调用数组对象不存在的as_independent方法时抛出异常。

修复方案

1. 调整函数返回值格式

你当前的f函数返回的是长度和C矩阵列数相等的数组,对应一组待求解的等式,需要将数组展开为SymPy表达式列表再传入solve:

def f(s, new_line_1, k, new_line_2):
    expr_arr = np.dot(y1, C[s, :]) + np.dot(y2, new_line_1) - np.dot(w1, C[k, :]) - np.dot(w2, new_line_2)
    # 将数组转为SymPy表达式列表
    return [expr for expr in expr_arr]

2. 补充缺失的符号声明

你给出的代码片段中未声明y1、y2、w1、w2符号变量,需要提前定义:

y1, y2, w1, w2 = symbols('y1 y2 w1 w2')

3. 补充变量初始化

循环中用到的s和k需要在每轮外层循环开始时初始化为-1,同时重置new_line_1和new_line_2,避免变量复用导致的逻辑错误:

for i in np.arange(len(sigma[:, ]) - 1):
    s = -1
    k = -1
    new_line_1 = np.zeros([1, len(C[0, :])]).astype(int)
    new_line_2 = np.zeros([1, len(C[0, :])]).astype(int)
    intersection_1 = []
    intersection_2 = []
    # 剩余内层逻辑不变

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 12:45:04