【发布时间】:2017-04-14 09:12:43
【问题描述】:
我有一个中等规模的非线性方程组,我想在 Julia 中使用 scipy.optimize 来求解。问题是我在将方程传递给求解器之前将它们存储在向量中,而 PyCall 不接受这一点。例如,这些方法都有效:
using PyCall
@pyimport scipy.optimize as so
function F(x)
f1=1- x[1] - x[2]
f2=8 - x[1] - 3*x[2]
return f1, f2
end
x0 = [1,1]
x = so.fsolve(F, x0)
function G(x)
f=[1 - x[1] - x[2],
8 - x[1] - 3*x[2]]
return f
end
x0 = [1,1]
x = so.fsolve(G, x0)
但事实并非如此:
function H(x)
f[1]=1 - x[1] - x[2]
f[2]=8 - x[1] - 3*x[2]
return f
end
x0 = [1,1]
x = so.fsolve(H, x0)
这个也不行:
function P(x)
f[1]= 1 - x[1] - x[2]
f[2]= 8 - x[1] - 3*x[2]
return f[1], f[2]
end
x0 = [1,1]
x = so.fsolve(P, x0)
由于问题的性质,我认为不使用循环是不可行的。有没有办法以 fsolve 可以接受的方式返回向量?
【问题讨论】: