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

如何使用Python求解含四个未知量的四元非线性方程组

四元非线性方程组求解Python脚本

依赖安装

使用前需要先安装依赖库:

pip install numpy scipy

求解逻辑

  • 将4个未知量Qcu、Qzn、Ccu、Czn打包为一维数组作为求解变量
  • 定义残差函数返回4个方程的计算结果,要求全部接近0
  • 给定合理初始猜测值调用fsolve求解,支持单个V值计算和0~300区间V的批量计算

完整代码

import numpy as np
from scipy.optimize import fsolve

# 定义方程组残差函数:x = [Qcu, Qzn, Ccu, Czn], V为自变量
def equations(x, V):
    Qcu, Qzn, Ccu, Czn = x
    f1 = (Qcu * Czn) / (Qzn * Ccu) - 3
    f2 = Qzn + Qcu - 3.5
    f3 = Czn + Qzn * V - 0.189
    f4 = Ccu + Qcu * V - 0.917
    return [f1, f2, f3, f4]

# ------------------- 单个V值求解示例 -------------------
if __name__ == "__main__":
    # 可自定义测试的V值
    V_test = 10
    # 初始猜测值,可调整以提升收敛性
    init_guess = [1.0, 2.5, 0.5, 0.1]
    # 求解
    solution = fsolve(equations, init_guess, args=(V_test,))
    Qcu, Qzn, Ccu, Czn = solution
    
    # 输出结果
    print(f"V = {V_test} 时求解结果:")
    print(f"Qcu = {Qcu:.6f}")
    print(f"Qzn = {Qzn:.6f}")
    print(f"Ccu = {Ccu:.6f}")
    print(f"Czn = {Czn:.6f}")
    # 校验残差,判断解是否有效
    residual = equations(solution, V_test)
    print(f"方程残差:{residual}")

# ------------------- 可选:批量遍历V=0~300求解 -------------------
# if __name__ == "__main__":
#     # 步长为1,可根据需求调整
#     V_arr = np.arange(0, 301, 1)
#     init_guess = [1.0, 2.5, 0.5, 0.1]
#     results = []
#     for V in V_arr:
#         try:
#             sol, infodict, ier, mesg = fsolve(equations, init_guess, args=(V,), full_output=True)
#             # 校验是否收敛
#             if ier == 1:
#                 Qcu, Qzn, Ccu, Czn = sol
#                 results.append([V, Qcu, Qzn, Ccu, Czn])
#                 # 用当前解作为下一次初值,提升收敛效率
#                 init_guess = sol
#             else:
#                 print(f"V={V} 求解不收敛,错误信息:{mesg}")
#         except ZeroDivisionError:
#             print(f"V={V} 出现除零错误,跳过")
#     # 导出结果到csv文件
#     # np.savetxt("四元方程组求解结果.csv", results, delimiter=",", header="V,Qcu,Qzn,Ccu,Czn", comments="")

注意事项

  • 初始猜测值的选择对fsolve求解成功率影响极大,如果出现求解不收敛的情况,可根据方程组的物理意义调整初始值
  • 求解完成后建议校验残差的绝对值,通常小于1e-6可认为解是有效的
  • 批量求解时复用前一次的收敛结果作为初值,可大幅提升求解效率和收敛概率

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 03:24:02