gpt4 book ai didi

python - 如何使用 scipy leastsq 设置最小化

转载 作者:行者123 更新时间:2023-11-28 19:17:46 24 4
gpt4 key购买 nike

我想了解如何设置 python scipy 最小化问题。这是我从 Excel Solver 问题中获取的示例。解释该问题的最简单方法是尝试求解一个非常简单的电网:

R1: 100
R2: 1000
R3: 50
U: 10

三个电阻,两个并联 (R2,R3),然后与 R1 串联。 10伏电源

控制方程是

i1 - i2 - i3 = 0
U - i1*R1 - i2*R2 = 0
U - i1*R1 - i3*R3 = 0

通过最小化给定的目标函数找到 i1、i2、i3 的解

(i1-i2-i3)**2 + (U-i1R1-i2R2)**2 + (U-i1*R1-i3R3)**2

如何在scipy leastsq中实现这个问题?

我想使用 leastsq 的原因是因为我的实际网络要复杂得多并且包含非线性元素(它实际上不是电力网络,而是液压网络)。

非常感谢!威廉

最佳答案

首先你定义实际的目标函数,它必须将你的未知变量作为参数

def objective(x):
i1, i2, i3 = x
R1 = 100
R2 = 1000
R3 = 50
U = 10
return (i1-i2-i3)**2 + (U-i1*R1-i2*R2)**2 + (U-i1*R1-i3*R3)**2

然后你对你的电流提供一些初步的猜测

x0 = [1.0, 1.0, 1.0]  # or whatever you want to start with

然后调用最小化

from scipy.optimize import minimize
res = minimize(objective, x0)

如果您想指定 a specific minimization algorithm,也可以传入 method 参数.

此外,如果您可以定义 Jacobian(可能还有 Hessian)矩阵,您还可以通过传入 jachess 参数来使用基于梯度的方法分别收敛得更快。

关于python - 如何使用 scipy leastsq 设置最小化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31430896/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com