【发布时间】:2019-04-05 00:21:39
【问题描述】:
我有一个集合,其中的数量可能会有所不同,我想使用一些数值方法来解决具有约束的非线性方程。
我已经能够使用 Solver 在 Excel 中解决一个简单的(一个方程式)案例,但之前还没有在 Python 中将类似的东西放在一起,因此希望对方法提出建议。
经过一番挖掘,看起来 fsolve 是解决此类系统的一种流行方法。对于一个简单的两个方程的情况,我的问题采用以下形式,为了清楚起见,分成几部分:
第二个方程 b 的形式相同。
A 是一个常数,变量 Z、S 和 x 是每个实体 i 的常数,唯一独立的值是指数 a 和 b;两个方程,两个未知数,所以应该有一个唯一的解。
正如我所说,我在 Excel 中设置了一个简单的方程案例,并成功地使用 Solver 求解。任何有关在 Python 中进行设置的指导都将受到赞赏。
【问题讨论】:
-
你应该真正提供你的样本输入,以及你正在使用的常量。您需要为您的问题提供一些背景信息。
-
@LutzL,指定错误,谢谢。
-
那么
w_i的分子只有S_i,因为j是分母的界变量?为什么不能将两者合并成S_i^{a+b}? -
求根与优化并不完全相同(这是 excel 求解器所做的)。如果要添加约束,则应使用优化;根发现(据我所知,并不明确支持它)。或者,在您的情况下,您可以使用求根并设置 zn = 1 -sum(z1, z2.. z(n-1))。有很多方法(见here)。如果您的函数是标量,您可以使用更简单的算法,例如
brentq或fixed_point -
好的,现在系统有意义了。但是,我看不到第二个等式,现有的可以压缩为 $$\sum_i(Z_i-A)x_iS_{1i}^aS_{2i}^b=0.$$ 是否正在进行一些最小化,做你寻求 $A$ 的最低价值或类似的东西?
标签: python python-3.x scipy numerical-methods numerical-analysis