当前位置: 首页 > news >正文

全局优化搜索高次方程的解

高次方程的解

某高中自主招生试题的形式是 ( 3 x − 2 ) 4 + ( 3 x − 4 ) 4 = 16 (3x-2)^4+(3x-4)^4=16 (3x2)4+(3x4)4=16,从方程常数项观察得到方程具备两个分式解 4 3 \frac{4}{3} 34 2 3 \frac{2}{3} 32,在一般的高次方程求解问题中,这类方程可能不具备易于观察得到的解,这里把函数构造成绝对值的形式,
∣ ( 3 x − 2 ) 4 + ( 3 x − 4 ) 4 − 16 ∣ = 0 |(3x-2)^4+(3x-4)^4-16|=0 (3x2)4+(3x4)416∣=0
此时 x x x定义域到值域的最小值是0,也是方程的最小值,那么Python程序的目标函数设计为,

objective_function = lambda x: numpy.abs((3*x-2)**4 + (3*x-4)**4 - 16)

从方程的区间端点的值域,起始搜索区间定义为(-10, 10),程序代码如下,

import porgo
import numpyobjective_function = lambda x: numpy.abs((3*x-2)**4 + (3*x-4)**4 - 16)
bounds = [(-10, 10)]
# bounds = [(-10, 1.2)]test = porgo.glos(objective_function, bounds) # mutation=0.5, recombination=0.9test.rand_pop(40)
for i in range(6):test.train_gen(100)test.result()print('{} epoch, minimum {}, medium {}, maximum {}'.format(i, test.fit_mini, test.fit_medi, test.fit_maxi))
print(test.mini, test.fit_mini)

得到第一个解是1.33333333,也就是4/3,

0 epoch, minimum [[5.65592018e-12]], medium [[5.65592018e-12]], maximum [[5.65592018e-12]]
1 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
2 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
3 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
4 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
5 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
[[1.33333333]] [[0.]]

缩小搜索区间到bounds = [(-10, 1.2)],得到第二个解是2/3,

0 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
1 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
2 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
3 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
4 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
5 epoch, minimum [[0.]], medium [[0.]], maximum [[0.]]
[[0.66666667]] [[0.]]

修改搜索区间到bounds = [(1.4, 10)]或[(-10, 0.6)],均无最小值,bounds=[(0.7, 1.2)]也无最小值。这时可以得到 ( 3 x − 2 ) 4 + ( 3 x − 4 ) 4 − 16 (3x-2)^4+(3x-4)^4-16 (3x2)4+(3x4)416共有两个解,第一个解是4/3,第二个解是2/3,其他高次方程的解也可以通过绝对值函数把定义域到值域的关系映射到极值为0,这种做法是无梯度搜索最值的方法,也是无需代数运算和变换的数值解法。

相关文章:

  • ssh connect to remote gitlab without authority
  • 完整的 CentOS 6.10 虚拟机安装启动脚本
  • 【python爬虫】python+selenium实现Google Play Store应用信息爬虫+apk下载
  • 生命之舞:创建,终止与等待,Linux进程控制的交响乐章
  • C++矩阵操作:正交矩阵(旋转矩阵)
  • RPA vs. 传统浏览器自动化:效率与灵活性的终极较量
  • 电商平台自动化
  • list 容器常见用法及实现
  • Java知识框架
  • 【JVS更新日志】企业文档AI助手上线、低代码、智能BI、智能APS、AI助手5.14更新说明!
  • 机器学习 Day17 朴素贝叶斯算法-----概率论知识
  • 【vue】生命周期钩子使用
  • DataX从Mysql导数据到Hive分区表案例
  • 反向传播算法——矩阵形式递推公式——ReLU传递函数
  • HVV蓝队实战面试题
  • Flink实时统计任务CPU异常排查与解决方案
  • 技术选型不当,如何避免影响项目进展
  • 1. Go 语言环境安装
  • 计算机图形学编程(使用OpenGL和C++)(第2版)学习笔记 10.增强表面细节(一)过程式凹凸贴图
  • 初探 Skynet:轻量级分布式游戏服务器框架实战
  • 首次采用“顶置主星+侧挂从星”布局,长二丁“1箭12星”发射成功
  • 马上评丨火车穿村而过多人被撞身亡,亡羊补牢慢不得
  • 技术派|更强的带刀侍卫:从054B型战舰谈谈世界护卫舰发展
  • 冷冰川谈黑白
  • 习近平结束对俄罗斯国事访问并出席纪念苏联伟大卫国战争胜利80周年庆典回到北京
  • 乘客被地铁厕所门砸伤,南京地铁:突然坏的,已和乘客沟通处理