在2D中数值求解固定点

2024-06-16 10:03:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下四个功能

u_h = u_h(J_l, J_h)
u_l = u_l(J_l, J_h)
J_l = J_l(u_h, u_l)
J_h = J_h(u_h, u_l)

如果你愿意,让u = [u_l, u_h],和J = [J_l, J_h]。然后通过两个向量值函数uJ来定义由上述方程定义的系统的稳态:

^{pr2}$

同样,我需要检查J(u(J_0)) = J。在

这是一个概念性的问题,这些函数背后的代码并不是真的可以简化的,因此有一个合理的工作示例是值得的。在

以下是我目前所做的:

# create a grid for test-values u
u = np.linspace(0.0001, 0.3, 200)
GridUL, GridUH = np.meshgrid(u, u, indexing='ij')

# J = [JL, JH] would be what I called "J" previously
JL = JSteadyState(GridUL, GridUH, thisType='low')
JH = JSteadyState(GridUL, GridUH, thisType='high')
UL2, UH2 = uSteadyState(JL, Param), uSteadyState(JH, Param)

# check for fixed points in both variables
err = 1e-3
fixedPointL = abs(UL2-GridUL) < err
fixedPointH = abs(UH2-GridUH) < err
fixedPointH & fixedPointH

我怎样才能有效地检查UL2UH2与{},GridUH来找到不动点(复数)?在

到目前为止,我的方法很大程度上依赖于尝试和错误以及网格大小。scipy.optimize.root似乎集中在简单的根上,而不是更复杂的不动点问题。我可以把不动点问题写成根问题,但我认为这样做效率很低。我应该如何处理这个问题?在


Tags: 函数for定义nperrjljh不动点
1条回答
网友
1楼 · 发布于 2024-06-16 10:03:07

您可以尝试使用scipy.optimize.fixed_point

import scipy.optimize as optimize

def func(x):
    x0, x1 = x
    # J = [JL, JH] would be what I called "J" previously
    JL = JSteadyState(x0, x1, thisType='low')
    JH = JSteadyState(x0, x1, thisType='high')
    UL2 = uSteadyState(JL, Param)
    UH2 = uSteadyState(JH, Param)
    return np.array([UL2, UH2])

err = 1e-3
guess = [0.1, 0.1]
fixedPointL, fixedPointH = optimize.fixed_point(func, guess, xtol=err)

但是请注意,这并没有将x和{}限制到域{},因此这可能会或可能不会找到不动点,具体取决于 你的函数JSteadyStateuSteadyState的光滑性和 初步猜测。在

相关问题 更多 >