3
私はJuliaでscipy.optimizeを使用して解決したい非線形方程式の適度に大きなシステムを持っています。問題は、ソルバに渡す前に方程式をベクトルに格納し、PyCallがそれを受け入れないということです。例えば、これらの方法では、仕事の両方:JuliaでPyCallを使用するScipy
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がそれを受け入れることができるようにベクトルを返す方法はありますか?
ありがとうございました!私はNLSolveを試しましたが、私はなぜHベクトル(x、f)にfベクトルを含まなければならないのか分かりませんでした。今それは明らかになった。 私がNLSolveで持っていた問題は、Matlabから得た解決策を最初の推測として与えても収束しなかったということでした。 –
私はそれについて別の質問を開くだろう。あなたのコードに誤りがあったと思われます。 –