python - SymPy 的多元最小值
问题描述
我知道如何用 SymPy 象征性地找到函数的最小值:
from sympy import Symbol, sin, maximum
x = Symbol('x')
maximum(sin(x)*cos(x),x) # output 1/2
如果我想对多元函数做同样的事情怎么办?以下代码不起作用
from sympy import Symbol, sin, maximum
x,y= Symbol("x","y")
maximum(sin(x)*cos(y),x,y)
我没有在 SymPy 文档中找到这样做的好方法。然而 SymPy 能够区分多元函数,因此他也可以象征性地找到最小值或至少一些候选者(其中梯度为空)
任何人都知道如何做到这一点?
提前致谢
解决方案
一个快速版本可能是:
In [7]: f = sin(x)*cos(y)
In [8]: stationary_points = solve([f.diff(x), f.diff(y)], [x, y], dict=True)
In [9]: [f.subs(p) for p in stationary_points]
Out[9]: [0, 0, 1, -1, 0, 0, -1, 1]
In [10]: max(_)
Out[10]: 1
推荐阅读
- jquery - 我需要从我的 Phonegap 应用程序下载 CSV 文件
- javascript - 在对象中搜索对象并获取密钥
- ruby-on-rails - Spree 多供应商市场控制器
- python - python电子邮件换行
- c# - 通过 Azure Service Fabric 请求时,HttpClient 中基于证书的身份验证失败
- python-3.x - 如何从 2 份简历中获得相似度百分比,其中一份简历最适合 x 工作角色,而其他较新的简历需要与最好的一份进行比较?
- curl - 在 CMD 中使用 Curl 发送 Discord webhook
- php - 从浏览器加载带有 VPA 和 AMOUNT 的 UPI 应用程序
- javascript - 如何在单元测试中使用 TypeORM 全局 createConnection()?
- android - Android:如何在父活动及其按钮/导航视图上显示片段