我有以下方程组,我想同时为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
答案 0 :(得分:2)
如Joe所述,这实际上是一个非线性方程组。你需要的火力比单独提供的火力更多。
非线性方程的解决方法很棘手,典型的方法是定义目标函数
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
无论在哪里发现)。减少维数会产生很大的不同。