重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
使用scipy下的fsolve函数即可求解,代码如下:
网站建设哪家好,找成都创新互联公司!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了津市免费建站欢迎大家使用!
[python] view plain copy
from scipy.optimize import fsolve
from math import cos
def f(x):
d = 140
l = 156
a = float(x[0])
r = float(x[1])
return [
cos(a) - 1 + (d*d)/(2*r*r),
l - r * a
]
result = fsolve(f, [1, 1])
print result
这是我按照你的方法得到的结果
import math
def f(list):
... x,y,z=list//注意这里是list的解包 不过如果你不传入list而是别的 比如字符串 就需要用到 tolist了
... return[math.sqrt((x-15.34)**2+(y-51.59)**2+(z-57.55)**2)-4.59,
math.sqrt((x-18.92)**2+(y-49.03)**2+(z-53.91)**2)-6.33,
math.sqrt((x-16.46)**2+(y-55.25)**2+(z-58.49)**2)-5.32]
...
f([9,8,7])
[62.459132731154696, 56.776381610737275, 64.96110841470843]
f([1,1,1])
[72.62972675424331, 67.34140150696197, 75.22299597109608]
是三个结果没错啊
我猜你的 fsolve的方法内容是这样的吧
def fsolve(method,list):
return method(list)
或者你在fsolve里面对 f(list)返回的结果又做了一些操作,发一下你的 fsolve方法吧 要不然找不到问题所在 目前来看 你的f方法是正确的
python非线性规划用什么模块本文使用SciPy的optimize模块来求解非线性规划问题,结合实际例子,引入非线性规划问题的求解算法及相应函数的调用。
本文提纲一维搜索/单变量优化问题
无约束多元优化问题
非线性最小二乘问题
约束优化问题
非线性规划问题的目标函数或约束条件是非线性的。本文使用SciPy的optimize模块来求解非线性规划问题。
目标函数和约束条件是否连续光滑是非常重要的性质,这是因为如果光滑,则所有决策变量可微,多变量函数的偏导数组成的向量为梯度,梯度是指向目标函数增长最快的方向。将目标函数梯度作为搜索方向,对非线性规划问题的求解具有重要的意义。这些函数或其导数\梯度的不连续性给许多现有的非线性优化问题的求解带来了困难。在下文中,我们假设这些函数是连续且光滑的。
# Importing Modules
from scipy import optimize
import matplotlib.pyplot as plt
import numpy as np
import sympy
1、一维搜索/单变量优化问题(Univariate Optimization)
无约束非线性规划最简单的形式是一维搜索。一维搜索通常作为多维优化问题中的一部分出现,比如梯度下降法中每次最优迭代步长的估计。求解一维搜索常用的两类方法是函数逼近法和区间收缩法。其中函数逼近法是指用较简单的函数近似代替原来的函数,用近似函数的极小点来估计原函数的极小点,比如牛顿法;区间收缩法对于一个单谷函数通过迭代以不断缩小该区间的长度,当区间长度足够小时,可将该区间中的一点作为函数的极小点,比如黄金分割法。
e.g. 最小化一个单位体积的圆柱体的表面积。
r, h = sympy.symbols("r, h")
Area = 2 * sympy.pi * r**2 + 2 * sympy.pi * r * h
Volume = sympy.pi * r**2 * h