Numpy 未在lambdifygenerated中定义Sympy名称Heaviside

Numpy 未在lambdifygenerated中定义Sympy名称Heaviside,numpy,sympy,Numpy,Sympy,Heaviside函数应该内置于Sympy和Numpy中,但是下面的代码给出了错误名称Heaviside not defined。在将使用Heaviside函数的数值计算(基于回溯)之前,试图在代码中定义Heaviside函数没有任何效果-我想它应该在lambdifygenerated中定义。有解决办法吗 from sympy import * from IPython.display import display mux, s, Px, Py, Pxe, Pye = symbols("mu_X

Heaviside函数应该内置于Sympy和Numpy中,但是下面的代码给出了错误
名称Heaviside not defined
。在将使用Heaviside函数的数值计算(基于回溯)之前,试图在代码中定义Heaviside函数没有任何效果-我想它应该在
lambdifygenerated
中定义。有解决办法吗

from sympy import *
from IPython.display import display
mux, s, Px, Py, Pxe, Pye = symbols("mu_X s P_X P_Y P_X^* P_Y^*", positive=True)
vx, vy, cx, cy = symbols("v_X v_Y c_X c_Y", real=True)
pix = (Px-cx)*( mux*integrate(integrate(1,(vx,Min(1,Max(0,Px+Max(0,vy-Pye-s))),1)),(vy,0,1))
      +(1-mux)*integrate(integrate(1,(vx,Min(1,Max(0,Max(Pxe+s,Px)+Max(0,vy-Pye))),1)),(vy,0,1))
     )
piy = (Py-cy)*( (1-mux)*integrate(integrate(1,(vy,Min(1,Max(0,Py+Max(0,vx-Pxe-s))),1)),(vx,0,1))
      +mux*integrate(integrate(1,(vy,Min(1,Max(0,Max(Pye+s,Py)+Max(0,vx-Pxe))),1)),(vx,0,1))
     )
focx =diff(pix,Px)
focy =diff(piy,Py)
focxeq=focx.subs(Px,Pxe)
focyeq=focy.subs(Py,Pye)

import numpy as np
focx_lambda = lambdify((Pxe,Pye), focxeq, modules=['numpy', 'sympy'])
focy_lambda = lambdify((Pxe,Pye), focyeq, modules=['numpy', 'sympy'])
nsolve([focxeq.subs({mux:0.4,s:0.05,cx:0,cy:0.1}).evalf(),focyeq.subs({mux:0.4,s:0.05,cx:0,cy:0.1}).evalf()],(Pxe,Pye),(0.3,0.4))
回溯如下:

--------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)
<ipython-input-10-b7bc7e96827d> in <module>
     26 focx_lambda = lambdify((Pxe,Pye), focxeq, modules=['numpy', 'sympy'])
     27 focy_lambda = lambdify((Pxe,Pye), focyeq, modules=['numpy', 'sympy'])
---> 28 nsolve([focxeq.subs({mux:0.4,s:0.05,cx:0,cy:0.1}).evalf(),focyeq.subs({mux:0.4,s:0.05,cx:0,cy:0.1}).evalf()],(Pxe,Pye),(0.3,0.4))
     29 mux=0.4
     30 s=0.05

~/anaconda3/lib/python3.6/site-packages/sympy/utilities/decorator.py in func_wrapper(*args, **kwargs)
     88         dps = mpmath.mp.dps
     89         try:
---> 90             return func(*args, **kwargs)
     91         finally:
     92             mpmath.mp.dps = dps

~/anaconda3/lib/python3.6/site-packages/sympy/solvers/solvers.py in nsolve(*args, **kwargs)
   3045     J = lambdify(fargs, J, modules)
   3046     # solve the system numerically
-> 3047     x = findroot(f, x0, J=J, **kwargs)
   3048     if as_dict:
   3049         return [dict(zip(fargs, [sympify(xi) for xi in x]))]

~/anaconda3/lib/python3.6/site-packages/mpmath/calculus/optimization.py in findroot(ctx, f, x0, solver, tol, verbose, verify, **kwargs)
    926         # detect multidimensional functions
    927         try:
--> 928             fx = f(*x0)
    929             multidimensional = isinstance(fx, (list, tuple, ctx.matrix))
    930         except TypeError:

<lambdifygenerated-23> in _lambdifygenerated(Dummy_4515, _Dummy_4514)
      1 def _lambdifygenerated(Dummy_4515, _Dummy_4514):
----> 2     return (ImmutableDenseMatrix([[Dummy_4515*(mpf((0, 3602879701896397, -53, 52))*((-(_Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Heaviside(1 - Dummy_4515)*Heaviside(1 - Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + Heaviside(1 - Dummy_4515)*Heaviside(1 - Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + Min(mpf((0, 1, 0, 1)), _Dummy_4514 + mpf((0, 3602879701896397, -56, 52))) - Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))) if (Dummy_4515 >= 1) else (-(_Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Heaviside(1 - Dummy_4515)*Heaviside(1 - Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + Heaviside(1 - Dummy_4515)*Heaviside(1 - Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) - Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))))) + mpf((0, 5404319552844595, -53, 53))*((0) if (Dummy_4515 >= mpf((0, 4278419646001971, -52, 52))) else (-(_Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Heaviside(1 - Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + 1))*Heaviside(_Dummy_4514 - Dummy_4515 - Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52))) + 1) + Heaviside(1 - Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + 1))*Heaviside(_Dummy_4514 - Dummy_4515 - Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52))) + 1)*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + mpf((0, 1, 0, 1))))) if (Dummy_4515 >= 1) else (0))) + mpf((0, 3602879701896397, -53, 52))*((-(_Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Min(mpf((0, 1, 0, 1)), _Dummy_4514 + mpf((0, 3602879701896397, -56, 52))) + (_Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), _Dummy_4514 + mpf((0, 3602879701896397, -56, 52)))**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))**2) if (Dummy_4515 >= 1) else ((mpf((0, 1, 0, 1)) - Dummy_4515)*Min(mpf((0, 1, 0, 1)), _Dummy_4514 + mpf((0, 3602879701896397, -56, 52))) - (_Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Min(mpf((0, 1, 0, 1)), _Dummy_4514 + mpf((0, 3602879701896397, -56, 52))) + (_Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), _Dummy_4514 + mpf((0, 3602879701896397, -56, 52)))**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514 + mpf((0, 3602879701896397, -56, 52)), _Dummy_4514 - Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))**2)) + mpf((0, 5404319552844595, -53, 53))*((-(_Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), _Dummy_4514) + (_Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), _Dummy_4514)**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52))))**2) if (Dummy_4515 >= mpf((0, 4278419646001971, -52, 52))) else (-(_Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), _Dummy_4514) + (_Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + mpf((0, 1, 0, 1)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), _Dummy_4514)**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + mpf((0, 1, 0, 1))))**2) if (Dummy_4515 >= 1) else ((mpf((0, 4278419646001971, -52, 52)) - Dummy_4515)*Min(mpf((0, 1, 0, 1)), _Dummy_4514) - (_Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), _Dummy_4514) + (_Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), _Dummy_4514)**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(_Dummy_4514, _Dummy_4514 - Dummy_4515 + mpf((0, 4278419646001971, -52, 52))))**2))], [(_Dummy_4514 + mpf((1, 3602879701896397, -55, 52)))*(mpf((0, 5404319552844595, -53, 53))*((-(-_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Heaviside(1 - _Dummy_4514)*Heaviside(1 - Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + Heaviside(1 - _Dummy_4514)*Heaviside(1 - Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + Min(mpf((0, 1, 0, 1)), Dummy_4515 + mpf((0, 3602879701896397, -56, 52))) - Min(mpf((0, 1, 0, 1)), Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))) if (_Dummy_4514 >= 1) else (-(-_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Heaviside(1 - _Dummy_4514)*Heaviside(1 - Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + Heaviside(1 - _Dummy_4514)*Heaviside(1 - Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) - Min(mpf((0, 1, 0, 1)), Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))))) + mpf((0, 3602879701896397, -53, 52))*((0) if (_Dummy_4514 >= mpf((0, 4278419646001971, -52, 52))) else (-(-_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Heaviside(1 - Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + 1))*Heaviside(-_Dummy_4514 + Dummy_4515 - Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52))) + 1) + Heaviside(1 - Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + 1))*Heaviside(-_Dummy_4514 + Dummy_4515 - Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52))) + 1)*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + mpf((0, 1, 0, 1))))) if (_Dummy_4514 >= 1) else (0))) + mpf((0, 5404319552844595, -53, 53))*((-(-_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Min(mpf((0, 1, 0, 1)), Dummy_4515 + mpf((0, 3602879701896397, -56, 52))) + (-_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Dummy_4515 + mpf((0, 3602879701896397, -56, 52)))**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))**2) if (_Dummy_4514 >= 1) else ((mpf((0, 1, 0, 1)) - _Dummy_4514)*Min(mpf((0, 1, 0, 1)), Dummy_4515 + mpf((0, 3602879701896397, -56, 52))) - (-_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Min(mpf((0, 1, 0, 1)), Dummy_4515 + mpf((0, 3602879701896397, -56, 52))) + (-_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Dummy_4515 + mpf((0, 3602879701896397, -56, 52)))**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515 + mpf((0, 3602879701896397, -56, 52)), -_Dummy_4514 + Dummy_4515 + mpf((0, 4728779608739021, -52, 53))))**2)) + mpf((0, 3602879701896397, -53, 52))*((-(-_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), Dummy_4515) + (-_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Dummy_4515)**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52))))**2) if (_Dummy_4514 >= mpf((0, 4278419646001971, -52, 52))) else (-(-_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), Dummy_4515) + (-_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + mpf((0, 1, 0, 1)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Dummy_4515)**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + mpf((0, 1, 0, 1))))**2) if (_Dummy_4514 >= 1) else ((mpf((0, 4278419646001971, -52, 52)) - _Dummy_4514)*Min(mpf((0, 1, 0, 1)), Dummy_4515) - (-_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), Dummy_4515) + (-_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52)))) + mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Dummy_4515)**2 - mpf((0, 1, -1, 1))*Min(mpf((0, 1, 0, 1)), Max(Dummy_4515, -_Dummy_4514 + Dummy_4515 + mpf((0, 4278419646001971, -52, 52))))**2))]]))

NameError: name 'Heaviside' is not defined

为了以防万一,我还尝试了numpy import*中的
。这并没有改变任何事情

lambdify的几个问题似乎同时发生。我想我可以让事情运转起来,但你应该检查一下它是否有意义,因为我不熟悉具体的方程式

一般来说,从sympy import*
调用
和从numpy import*
调用
会造成很多混乱。两个库中的许多函数都有相同的名称,而且它们确实不喜欢使用彼此的变量

另一方面,
lambdify
Heaviside
配合不好。此外,numpy中的函数是小写的需要两个参数:一个
x
值和一个
x2
来决定
x==0
应该发生什么。作为补救措施,下面的代码用
lambda x:np.Heaviside(x,1)
替换“Heaviside”

我无法让sympy的
nsolve
使用这些函数,所以我尝试了scipy的
fsolve
fsolve
还需要一些杂耍来处理一组函数

创建
focx_lambda
时,除函数参数
Pxe
Pye
外的所有变量都必须接收固定值。因此,我在执行
lambdify
时替换了它们

从sympy导入符号、积分、最小值、最大值、差值、lambdify
从IPython.display导入显示
mux,s,Px,Py,Pxe,Pye=符号(“mu_X s P_X P_Y P_X^*P_Y^*”,正=真)
vx,vy,cx,cy=符号(“v_X v_Y c_X c_Y”,real=True)
pix=(Px-cx)*(mux*积分(积分(1,(vx,Min(1,Max(0,Px+Max(0,vy-Pye-s))),1)),(vy,0,1))
+(1-mux)*积分(积分(1,(vx,Min(1,Max(0,Max(Pxe+s,Px)+Max(0,vy-Pye))),1),
(vy,0,1))
)
piy=(Py-cy)*((1-mux)*积分(积分(1,(vy,Min(1,Max(0,Py+Max(0,vx-Pxe-s))),1)),(vx,0,1))
+mux*集成(集成(1,(vy,Min(1,Max(0,Max(Pye+s,Py)+Max(0,vx-Pxe))),1)),
(vx,0,1))
)
focx=diff(pix,Px)
焦点=差异(piy,Py)
focxeq=focx.subs(Px,Pxe)
focyeq=focy.subs(Py,Pye)
将numpy作为np导入
从scipy.optimize导入fsolve
模=[{'Heaviside':lambda x:np.Heaviside(x,1)},'numpy']
参数的值={mux:0.4,s:0.05,cx:0,cy:0.1}
focx_lambda=lambdify((Pxe,Pye),focxeq.subs(参数的值),modules=modules)
focy_lambda=lambdify((Pxe,Pye),focyeq.subs(参数的值),modules=modules)
打印(focx_lambda(0.3,0.4))#我们需要检查lambdify是否工作,因此这应该打印一个浮点数
打印(focy_lambda(0.3,0.4))
def方程式(p):
x、 y=p
返回focx_lambda(x,y),focy_lambda(x,y)
sol=fsolve(方程式,(0.3,0.4))
打印(sol)#[0.64701372 0.61726372]

这运行时不会出错-谢谢!如果能够在
focx\u lambda
中保留一些符号化参数,那就太好了。这可能吗?我使用Sympy的最初原因是为了象征性的解决方案。在Sympy之外,你不能有任何象征性的东西。恐怕您每次都需要使用新参数进行lambdify。好的,将在循环中进行lambdify。我大致得到了我想要的
def方程(p):x,y=p返回focx_lambda(x,y),focy_lambda(x,y)srange=[0.001,0.05,0.1,0.2,0.4,0.7,1],对于srange中的I:focx_lambda=lambdify((Pxe,Pye),focxeq.subs({mux:0.4,s:I,cx:0,cy:0.1}),modules=modules)focy_lambda=dify=dify((pyeq,Pye),subs({mux:0.4,s:i,cx:0,cy:0.1}),模=模)sol=fsolve(等式,(0.3,0.4))打印(i,sol)
def Heaviside(x):
    if x<0:
        out=0
    else:
        out=1
    return out