首先我已经解决了这个问题,所以这没什么大不了的,我只是要求满足我自己的好奇心。问题是如何在给定一组约束的情况下求解一系列联立方程。方程是:
tau = 62.4*d*0.0007
A = (b + 1.5*d)*d
P = b + 2*d*sqrt(1 + 1.5**2)
R = A/P
Q = (1.486/0.03)*A*(R**(2.0/3.0))*(0.0007**0.5)
条件是:
tau <= 0.29,Q = 10000 +- 说 3,并最小化 b
正如我提到的,我已经能够使用一系列嵌套循环提出解决方案:
b = linspace(320, 330, 1000)
d = linspace(0.1, 6.6392, 1000)
ansQ = []
ansv = []
anstau = []
i_index = []
j_index = []
for i in range(len(b)):
for j in range(len(d)):
tau = 62.4*d[j]*0.0007
A = (b[i] + 1.5*d[j])*d[j]
P = b[i] + 2*d[j]*sqrt(1 + 1.5**2)
R = A/P
Q = (1.486/0.03)*A*(R**(2.0/3.0))*(0.0007**0.5)
if Q >= 10000 and tau <= 0.29:
ansQ.append(Q)
ansv.append(Q/A)
anstau.append(tau)
i_index.append(i)
j_index.append(j)
这需要一段时间,我的脑海里有一些东西说必须有一个更简单/更优雅的解决方案来解决这个问题。谢谢(Linux Mint 13,Python 2.7.x,scipy 0.11.0)