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

Python求解4*N方程组:fun函数中return(g)位置是否正确?

问题解答

当前代码里的return(g)位置完全错误,原因如下:

  • 它被放在for i in range(4 * N)的循环内部,第一次循环(i=0)执行完就会直接返回g数组,后面i=1到4N-1的循环根本不会运行。
  • 最终返回的g数组只有g[0]被赋值,其余元素都是初始的0,完全无法生成你需要的4*N个方程。

正确的做法是把return(g)移到外层循环的外面,等所有i对应的方程都计算完毕后再返回。同时可以简化代码里的冗余部分,修正后的代码如下:

def fun(z):
    g = np.zeros(4 * N)
    for i in range(4 * N):
        f_i = 0
        for j in range(4 * N):
            if z[j] != 0:
                f_i += M_kk[i][j] * z[j] * np.arcsinh(w_c / z[j])
            # z[j]为0时f_i保持不变,无需额外处理
        g[i] = f_i - z[i]
    # 所有方程计算完成后再返回结果
    return(g)

z = fsolve(fun, np.zeros(4 * N))

额外提醒:直接判断z[j] != 0可能会因为浮点数精度问题出现误判,建议改成abs(z[j]) > 1e-10这类极小值判断,避免因浮点数近似0导致的计算异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 03:20:43