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

最小二乘法求解n=p非线性方程组:解违反约束问题咨询

非线性方程组最小二乘求解发散及变量负值问题求助

本人为博士生,正研究含物理意义的非线性方程组求解问题:

  • 输入变量:A、B、Cf、Jp、ks、Pp、R、T
  • 输出变量:Jw、Js、Cm、Cp、Pf

相关代码

import numpy as np
from scipy.optimize import least_squares
from math import exp

A = 0.0027                                      #m/s.bar-1
B = 1.19e-08                                    #m/s
R = 0.0821                                      #L.bar/mol.K
T = 25+273                                      #K
Qp = 140                                        #L/h
S_membrane= 14                                  #m²
Jp = (Qp*(1e-3/3600))/(S_membrane)              #m/s
Pp = 0.45                                       #bar
Cf = 7                                          #kg/m3 

def equations(vars):
    Js,Jw,Cp,Cm,Pf = vars  
    return(
        Jw - A*(Pf - Pp - 2*R*T*(Cm*17.11 - Cp*17.11)),
        Js - B*(Cm - Cp),
        Cp - (Js*1000)/Jw,
        (Cm - Cp)/(Cf - Cp) - exp(Jw/ks),
        Jp - Js/1000 - Jw
    )

求解设置

采用最小二乘法求解,初始向量及变量边界设置如下:

x0 = np.array([
    1e-8,        #Js    
    1e-6,        #Jw
    0.001,       #Cp
    8,           #Cm
    13           #Pf 
]) 

Xmin = np.array([
    1e-9,        #Js    
    1e-7,        #Jw
    0.000001,    #Cp
    1.01*Cf,     #Cm
    10           #Pf 
]) 

Xmax = np.array([
    1e-7,        #Js
    1e-4,        #Jw
    0.1,         #Cp
    500,         #Cm
    18           #Pf
])

调用least_squares方法:

res = least_squares(
    equations,
    x0,
    method='trf',
    xtol=1e-13,
    ftol=1e-13, 
    max_nfev=5000,
    verbose=1
)

print(res.active_mask)
print(res.message)
print(res.success)

运行结果

The maximum number of function evaluations is exceeded.
Function evaluations 5000, initial cost 2.1240e+02, final cost 3.3402e-11, first-order optimality 4.10e-01.
[0. 0. 0. 0. 0.]
The maximum number of function evaluations is exceeded.
False
Cf : 7 Cm : 6.964735678220357 Cp : 6.8969269139880875 Jw : -5.395451652744672e-06 Js : -3.721203572887036e-08 Jp : 2.7777777777777775e-06 dP : 57.21883313421709

疑问与求助

当前求解存在以下问题:

  • 迭代达到最大函数评估次数仍未收敛,系统发散
  • Jw、Js出现负值,违反物理意义及预设的边界约束
  • 尝试'trf'、'lm'、'dogbox'等方法后结果类似

恳请提供解决思路。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 05:40:38