まず、この問題は既に解決しているので、大したことではありません。ただ、自分の好奇心を満足させたいだけです。問題は、一連の制約が与えられた一連の連立方程式をどのように解くかです。方程式は次のとおりです。
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)