python - 如何求解函数 y=f(x,y),即函数值取决于自身

标签 python linear-algebra nonlinear-optimization nonlinear-functions

我想在 python 中解决以下方程。问题是因变量“y”也出现在等式的右侧。第一个问题,这样的方程在数学上是怎么命名的?

如果我跳过 RHS 中的“y”,我就可以解决它。但是不知道如何解决将其固定到位的问题。

enter image description here

我使用了以下代码: 将 numpy 导入为 np 从 matplotlib 导入 pyplot 为 plt

A=2
B=1.3
C=0.25
D=1.25
def func(x,A,B,C,D):
  y=A*np.sinh(((x)/B-C)/D)  #I skipped (x-y) here
  return y

x=np.linspace(-3,3,200)
y=func(x,A,B,C,D)
plt.plot(x,y)
plt.show()

最佳答案

此类非线性方程通常以迭代方式求解。设置y=0,求解方程,得到新的y,将新值插入RHS,重复该过程。跟踪值 y(j)-y(j-1) 以检查收敛性。如果它不收敛,请尝试将之前的 RHS 部分与具有特定权重的当前部分混合:RHS(j) = w * RHS(j) + (1-w) RHS(j-1) 。下面是一些有用的链接:

wiki

书籍:多变量非线性方程的迭代求解 作者:J. M. Ortega、W. C. Rheinboldt

这里是你修改的例子:

import matplotlib.pyplot as plt
A=2
B=1.3
C=0.25
D=1.25
def func(x,z,A,B,C,D):
  y=A*np.sinh(((x-z)/B-C)/D)  #I skipped (x-y) here
  return y

x=np.linspace(-3,3,200)
y = np.zeros(x.shape)
w = 0.4
d = 10
track_d = []

while d > 0.01:
    track_d.append(d)
    temp = y
    y = w * y + (1-w) * func(x,y,A,B,C,D)
    d = np.max(np.abs(temp-y))

y=func(x, y,A,B,C,D)
plt.plot(x,y)
plt.show()

plt.plot(track_d)
plt.show()

对于更大的区间看起来更有趣,注意参数w。

import matplotlib.pyplot as plt
A=2
B=1.3
C=0.25
D=1.25
def func(x,z,A,B,C,D):
  y=A*np.sinh(((x-z)/B-C)/D)  #I skipped (x-y) here
  return y

x=np.linspace(-30,30,200)
y = np.zeros(x.shape)
w = 0.99999999
d = 10
track_d = []

while d > 0.0000001:
    track_d.append(d)
    temp = y
    y = w * y + (1-w) * func(x,y,A,B,C,D)
    d = np.max(np.abs(temp-y))

y=func(x, y,A,B,C,D)
plt.plot(x,y)
plt.show()
# look at the convergence
plt.plot(track_d)
plt.show()

enter image description here

关于python - 如何求解函数 y=f(x,y),即函数值取决于自身,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56444541/

相关文章:

python - 如何使用 Dash HTML 组件显示 html 文件

vector - 在 clojure 中,通过内核对向量进行卷积的有效方法是什么?

python - 为什么当前模块中没有__dict__?

python - 权重和内核调节器相同吗?

python - Buildout + Nose 因传递的选项选项而失败

python - 有没有办法用 numpy 有效地反转矩阵数组?

multidimensional-array - 如何使用矢量化代码求解许多超定线性方程组?

python - 欠约束系统的 SciPy 优化

python - 使用 scipy.minimize 最大化夏普比率

python - 最接近 R nlminb 的 Python scipy 求解器模拟?