python - 同时求解方程

标签 python numpy linear-algebra

我有以下一组方程,我想同时求解 X 和 Y。有人建议我可以使用 numpy 将它们作为线性方程组来求解。这是最好的选择,还是有更好的方法?

a = (((f * X) + (f2 * X3 )) / (1 + (f * X) + (f2 * X3 ))) * i
b = ((f2 * X3 ) / (1 + (f * X) + (f2 * X3))) * i
c = ((f * X) / (1 + (j * X) + (k * Y))) * i
d = ((k * Y) / (1 + (j * X) + (k * Y))) * i 
f = 0.0001 
i = 0.001
j = 0.0001
k = 0.001 
e = 0 = X + a + b + c 
g = 0.0001 = Y + d 
h = i - a

最佳答案

正如 Joe 所指出的,这实际上是一个非线性方程组。您将需要比 numpy 单独提供的更多的火力。

非线性方程的求解很棘手,典型的方法是定义一个目标函数

F(z) = sum(e[n]^2, n=1...13 )

其中 z 是一个向量,其中包含 13 个变量中每个变量的值 a,b,c,d,e,f,g,h,i,X,Ye[n] 是 13 个方程中每一个方程被违反的量。例如

e[3] = (d - ((k * Y) / (1 + (j * X) + (k * Y))) * i  )

一旦有了目标函数,您就可以应用非线性求解器来尝试找到 F(z)=0 的 z。这当然对应于方程的解。

常用的求解器包括:

请注意,如果您在尝试运行求解器之前首先更改方程组以消除尽可能多的变量(例如,通过替换 k 无论它在哪里找到)。降低维度会产生很大的差异。

关于python - 同时求解方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10158270/

相关文章:

python - 计算k-means的方差百分比?

python-3.x - seaborn histplot 和 displot 输出不匹配

algorithm - 将 Fortran77 代码转换为 Matlab 代码以查找特征值/向量

c - SVD(奇异值分解)的不同结果

python - PyQt如何从布局中移除布局

python - python中 '@'有什么用?

python - 如何获得加权高斯滤波器

python - 如何使用 python 操作系统更改驱动器?

python - 为什么 `int in List[List[int]]` 返回 `False` 但 `np.int in List[List[int]]` 返回 `True` ?

python - Python 中的 Cholesky 实现 - 求解 Ax=b