- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试求解非线性方程组的耦合:
x(x+2y)/(1-x-y) = A
y(x+2y)/x = B
其中 A 和 B 是两个大小相同的不同数组中的元素。
我在一个数组中有 10,000 个 A 值,在另一个数组中有 10,000 个 B 值。
我需要使用 A[i] 和 B[i] 确定 x[i] 和 y[i]。但是,当我执行以下操作时:
def Eqs(z):
x, y = z
for i in A and B:
return (x*(x + 2*y) - A[i]*(1 - x - y), y*(x + 2*y) - B[i]*x)
x, y = scopt.fsolve(Eqs, (1,1))
我收到以下错误消息:
ValueError:具有多个元素的数组的真值不明确。使用a.any()或a.all()
对 A 和 B 使用适当大小的随机数组,有人可以 (1) 解释为什么我收到该特定错误消息,并 (2) 建议解决方法吗?
最佳答案
行for i in A and B:
没有多大意义。 A 和 B
是对数组 A
和 B
的二元逻辑运算,它既无效,也不是您需要的运算。
您想要做的可能类似于 for a, b in zip(A, B):
。这会在每次迭代中生成标量 a
和 b
。所以 a = A[i] 且 b = B[i]。 zip
从 A
和 B
创建值对,然后可用作 a
和 b
在 for 循环中。
或者,您可以使用索引i
进行迭代:for i in range(len(A)):
代码还有另一个问题:return
将停止循环并将方法保留在第一次迭代中。因此,您可以为返回值创建两个列表,在整个 for 循环中填充它,并在 Eqs
末尾返回它。或者您使用列表理解来缩短它:
return [x*(x + 2*y) - a*(1 - x - y) for a in A], [y*(x + 2*y) - b*x for b in B]
这应该产生两个列表。
关于python - 通过迭代输入数组来获取耦合非线性方程的值数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28748936/
目标 给定一组点,我试图找出满足所提供所有点的线性方程的系数。 例如,如果我想求线性方程 (ax + by + c = z): 3x + 2y + 2 = z 我至少需要三个三维点: (2, 2, 1
我是一名优秀的程序员,十分优秀!