Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >无图求多项式最大值/最小值的算法

无图求多项式最大值/最小值的算法
EN

Stack Overflow用户
提问于 2014-01-26 18:32:38
回答 2查看 5.6K关注 0票数 0

对于形式为y=a*x^2+b*x+c的二次方程,最大/最小值出现在x=-b/2a处。对于高次多项式(x>=4),有没有像这样的硬而快速的方程?对于这样的多项式,我在网上得到的解决方案建议绘制曲线并找到。如何在不作图的情况下求出绝对最大值?

EN

回答 2

Stack Overflow用户

发布于 2014-01-26 18:42:20

如果你只处理多项式,那么你应该检查libmatheval。我不会详细介绍这背后的数学原理,也不会详细介绍所需的C代码,您可以在这里找到完整的参考here。然而,以下是该算法的草图:

将多项式解析成函数的导数,在指定的区间内用你喜欢的数值方法(可能是[MININT, MAXINT]或similar).

  • given
  1. similar).
  2. given
    1. ),称其为f的零( g g of [MININT, MAXINT])。评估每个点的f
    2. 还评估在点3使用的搜索间隔的上界和下界的f
    3. 保留点4和5的最大值和最小值。这些值是绝对最大值和最小值。

特别是,第6点的声明得到了a theoretical proof的支持。

如果你考虑任何限制区间之外的多项式(即从-inf到+inf),那么它们是无界的,因为它们的最大或最小(或两者)都是无穷大的。您可能对有限的max/min感兴趣(如果它们存在的话)。您可以检查max或min是否应该是无穷大的,但您不会从上面的算法中发现这一点,因为计算对值施加了一个数值界限:

如果多项式有奇数次,那么min = -inf

  1. 多项式有偶数次,maxmin之间的多项式是有限的。
票数 2
EN

Stack Overflow用户

发布于 2014-01-26 18:47:55

您可以使用<=5次多项式的渐近,通过微分和求解等于0的梯度来解析地解决这个问题。

请注意,这将给出解决方案的几个潜在位置(包括最小值和最大值),因此您必须评估潜在答案以找到实际的最大值。

例如,使用渐近,我们可以计算四次via的最大值的潜在位置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sympy import solve
from sympy.abc import a,b,c,d,e,x
f=a*x*x*x*x+b*x*x*x+c*x*x+d*x+e
A=solve(f.diff(x),x)
for sol in A:
    print sol

给出了3个可能的位置:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
(((d/(4*a) - b*c/(8*a**2) + b**3/(32*a**3))**2/4 + (c/(6*a) - b**2/(16*a**2))**3)**(1/2) + d/(8*a) - b*c/(16*a**2) + b**3/(64*a**3))**(1/3)*(1/2 + I*3**(1/2)/2) - (c/(6*a) - b**2/(16*a**2))/((1/2 + I*3**(1/2)/2)*(((d/(4*a) - b*c/(8*a**2) + b**3/(32*a**3))**2/4 + (c/(6*a) - b**2/(16*a**2))**3)**(1/2) + d/(8*a) - b*c/(16*a**2) + b**3/(64*a**3))**(1/3)) - b/(4*a)

(((d/(4*a) - b*c/(8*a**2) + b**3/(32*a**3))**2/4 + (c/(6*a) - b**2/(16*a**2))**3)**(1/2) + d/(8*a) - b*c/(16*a**2) + b**3/(64*a**3))**(1/3)*(1/2 - I*3**(1/2)/2) - (c/(6*a) - b**2/(16*a**2))/((1/2 - I*3**(1/2)/2)*(((d/(4*a) - b*c/(8*a**2) + b**3/(32*a**3))**2/4 + (c/(6*a) - b**2/(16*a**2))**3)**(1/2) + d/(8*a) - b*c/(16*a**2) + b**3/(64*a**3))**(1/3)) - b/(4*a)

(c/(6*a) - b**2/(16*a**2))/(((d/(4*a) - b*c/(8*a**2) + b**3/(32*a**3))**2/4 + (c/(6*a) - b**2/(16*a**2))**3)**(1/2) + d/(8*a) - b*c/(16*a**2) + b**3/(64*a**3))**(1/3) - b/(4*a) - (((d/(4*a) - b*c/(8*a**2) + b**3/(32*a**3))**2/4 + (c/(6*a) - b**2/(16*a**2))**3)**(1/2) + d/(8*a) - b*c/(16*a**2) + b**3/(64*a**3))**(1/3)

正如注释中所指出的,当x是方程式的最小值和最大值时,您还应该检查方程式的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21367517

复制
相关文章
算法创作|求任意N个整数中的最大值和最小值
解决这个问题有三种常见思路,第一种思路比较简单粗暴,就是对用户输入的每个整数两两之间进行比较,直到找到最大的整数和最小的整数为止。第二种思路是将用户输入的整数放入一个空列表中,然后利用Python内置的max()函数和min()函数分别得到最大值和最小值。第三种思路与第二种思路类似,也是将用户输入的整数放入一个空列表,然后对列表进行排序,列表下标为0的数即为最小值,列表下标为N-1的数即为最大值。接下来让我们来演示一下第三种方法:
算法与编程之美
2021/03/30
2.3K0
算法创作|求任意N个整数中的最大值和最小值
【运筹学】运输规划求最大值 ( 运输规划求最大值问题示例 | 转为运输规划求最小值的方式 )
在所有值都变为负数后 , 为了方便计算 , 给所有的值都加上一个正数 , 计算的数值虽然不同 , 但是最终的运输规划结果是相同的 ;
韩曙亮
2023/03/28
1.8K0
java integer范围值的大小_求最大值最小值的代码
最近在刷leetcode的题时,才发现有几道题的利用到Integer类型的最大值和最小值,尤其是在判断是否溢出的时候,有道题就非常经典直接判断最后一位,比如最大值231 – 1的最后一位是7,而最小值 -231 的最后一位是8,这样进行一个判断 8. 字符串转换整数 (atoi) 这道题对我在面试过程中被问到如何判断是否溢出有了很大启发 查下JDK1.6帮助文档是这样写的
全栈程序员站长
2022/10/04
1.3K0
java integer范围值的大小_求最大值最小值的代码
粒子群算法求函数最小值
主函数首先初始化种群,对于第1代种群,个体极值和全局极值都在本代种群中;之后进行迭代,每次迭代根据公式更新速度和位置,并更新个体极值和全局极值,重复此过程直至迭代结束。
mwangblog
2018/12/19
2.5K0
O(1)最大值最小值的均值滤波算法
之前做过最大值最小值滤波基本上复杂度是非常高的,因为涉及到遍历w*h的滑动窗口中的所有值然后求出这个窗口所有值的最大和最小值。尽管可以使用sse优化,但速度仍然快不起来,最近在ImageShop博主的一篇博客中遇见了这篇论文,https://files-cdn.cnblogs.com/files/Imageshop/O(1)%E6%9C%80%E5%A4%A7%E5%80%BC%E6%9C%80%E5%B0%8F%E5%80%BC%E7%AE%97%E6%B3%95.pdf ,讲的就是O(1)实现最大最小值滤波,所以希望与大家一起分享这个算法。
BBuf
2019/12/04
2K0
O(1)最大值最小值的均值滤波算法
Python_求列表s=[]求 元素个数,最大值,最小值,元素和,平均值
#编写程序,求列表s=[]求 元素个数,最大值,最小值,元素和,平均值 def choose(s): sum = 0 all = 0 maxnum = max(s) minnum = min(s) for i in s: sum = sum + 1 #元素个数 all = all + i average = all / sum print(str("元素个数{0},最大值{1},最小值{2},元素和{3},平均值{4}"
瑞新
2020/07/07
4.7K0
蚁群算法求函数最大值一
ants = initant(Ant, xl, xu, yl, yu); % 初始化蚁群
mwangblog
2018/12/10
2.1K0
蚁群算法求函数最大值一
蚁群算法求函数最大值二
functionsants = edgeselection(ants, tau, P0, lamda, xl, xu, yl, yu)
mwangblog
2018/12/10
1.3K0
求多项式的和
题目:求1-1/3+1/5-...+1/(2n-1)的和,当第n项的绝对值小于1e-6时停止相加,输出之前各项之和。
布衣者
2021/09/07
3280
手把手教你用Python求最大值和最小值
导读:在数据科学中,通常会使用统计信息来描述和汇总数据。本节介绍几个具有此类功能的描述性统计数据。
青南
2021/05/13
4.2K0
手把手教你用Python求最大值和最小值
差分进化算法(DE)求函数最小值
差分进化算法求函数 Z = 3 * cos(X .* Y) + X + Y , -4 <= X <= 4, -4 <= Y <= 4。
mwangblog
2018/11/30
1.9K0
差分进化算法(DE)求函数最小值
求十个数中最大值和最小值-C++
效果图: Please input 10 number: 1 2 3 4 5 6 7 8 9 10 Max is :10 Min is :1 /* 功能:求十个数中最大值和最小值 日期:2013-09-08 */ #include<iostream> using namespace std; void maxMinValue(int *arr,int n); int main(void) { int arr[10]; int i,n=10; cout << "Please i
WindCoder
2018/09/20
3.3K0
java integer最大值_java int型最大值/最小值,最大值+1,最小值-1
java中,int型变量是有符号整形变量。int型变量占用4个字节(32bit位)。
全栈程序员站长
2022/10/04
2K0
POJ 3264 Balanced Lineup【线段树区间查询求最大值和最小值】
Balanced Lineup Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 53703 Accepted: 25237 Case Time Limit: 2000MS Description For the daily milking, Farmer John's N cows (1 ≤ N ≤ 50,000) always line up in the same order. One day Farm
Angel_Kitty
2018/04/09
1.1K0
js算法之求最大值及其下标
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script type="text/javascript"> var a=Number(prompt("666")); var arr=[]; var max=0; for(var i=0;i<a;i++) { arr[i]=Number(prompt("6666")
贵哥的编程之路
2021/04/02
2.3K0
第八周算法提高求最大值
本文最后更新于 1163 天前,其中的信息可能已经有所发展或是发生改变。 #include<iostream> #include<cstring> using namespace std; int sum1=0,sum2=0,Max=0; int n; int a[105][3]; void dg(){ for(int j=0;j<n;j++){ if(a[j][2]==0&&(sum1+a[j][0])>=0&&(sum2+a[j][1])>=0){ sum1+=a[j][0]; su
Yuyy
2022/06/28
4110
输入一些整数,求最大值最小值和平均值
#include<stdio.h> int main(){ int x,n=0,min,max,s=0; while(scanf("%d",&x)==1) { s+=1; if(x<min) min=x; if(x>max) max=x; n++; } printf("%d %d %.3f\n",min,max,(double)s/n); return 0; }
杨鹏伟
2022/05/05
6300
Java 查找 List 中的最大值、最小值Java 查找 List 中的最大值、最小值
Java 查找 List 中的最大值、最小值 java> List<Long> list = new ArrayList(); java.util.List<java.lang.Long> list = [] java> list.add(1L) java.lang.Boolean res1 = true java> list.add(2L) java.lang.Boolean res2 = true java> Collections.max(list) java.lang.Long res3 = 2 j
一个会写诗的程序员
2018/08/17
3.9K0
无向图求割(找桥)tarjan
本博客参考了李煜东的《算法竞赛进阶指南》,大家要是觉得这篇文章写的不错请大家支持正版。豆瓣图书
风骨散人Chiam
2020/10/28
7320
无向图求割(找桥)tarjan
【AI PC端算法优化】五,常量阶最大值最小值滤波算法
最近有点忙,今天水一下。来为大家介绍一个之前看到的一个有趣的常量阶最大值最小值滤波算法,这个算法可以在对每个元素的比较次数不超过3次的条件下获得任意半径区域内的最大值或者最小值,也即是说可以让最大最小值滤波算法的复杂度和半径无关。
BBuf
2020/04/21
1.2K0
【AI PC端算法优化】五,常量阶最大值最小值滤波算法

相似问题

在python中求多元多项式的最小值/最大值

113

求给定值的最大值和最小值的简单算法

47

求最小值的最大值

30

用Stoer算法求无向图的最大割集

11

求最大值的最优算法

53
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文