簡體   English   中英

如何在Python中求解非線性方程組?

[英]How can I solve a system of non-linear equations in Python?

我有一個方程組:

for i [1, N]:

        |A_i x (X - B_i)|
y_i = ------------------------
           |A_i|
the goal: find X such that it minimizes the target function:
sum_{i in [1, N]} (y_i)^2 -> min

其中A_i, X, B_i3x1向量, *是標量乘法, |v| v歐式范數,並且x是交叉乘法。

如何使用Python(scipy.optimize?)求解此方程組? 我以前僅使用numpy.linalg.solve解決了Ax = b ,所以我有點困惑。

我認為我應該使用Nelder-Mead單純形算法 ,聽起來正確嗎?

基本上,我最終使用了此SciPy文檔中的代碼:

import numpy as np
from scipy.optimize import minimize

# Target function
def rosen(x):
    """The Rosenbrock function"""
    return sum(100.0*(x[1:]-x[:-1]**2.0)**2.0 + (1-x[:-1])**2.0)

x0 = np.array([1.3, 0.7, 0.8, 1.9, 1.2])
res = minimize(rosen, x0, method='nelder-mead',
               options={'xtol': 1e-8, 'disp': True})

print(res.x)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM