1

我有以下一组方程,我想同时为 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
我 = 0.001
j = 0.0001
k = 0.001
e = 0 = X + a + b + c
g = 0.0001 = Y + d
h = 我 - 一个
4

1 回答 1

2

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

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

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

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

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

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

常用的求解器包括:

请注意,如果您在尝试运行求解器之前首先更改方程组以消除尽可能多的变量(例如,通过替换找到的任何位置),所有k这些都会更好地工作。降低的维度有很大的不同。

于 2012-04-16T18:45:09.680 回答