码迷,mamicode.com
首页 > 其他好文 > 详细

丢翻图方程组 最小解 计算机 数值求解

时间:2020-01-08 22:45:50      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:需要   https   分布   get   href   tps   设定   隐函数   通过   

我写了一个 程序  DiophantusMin  , 用 数值方法 求解 丢翻图方程组 的 最小解    。

 

算法 是  跨越逼近法,    算法 和 原理 见 《二元隐函数 数值求解》   https://www.cnblogs.com/KSongKing/p/12109699.html     。

 

丢番图方程组 是 不定方程组,  求 整数解  。   DiophantusMin  只 求 最小解  ,   因为是 数值方法, 所以 严格的说, 是 未知数 绝对值 尽可能小 的 近似解  。

 

程序 会用 很多组 整数 去 代入 方程 尝试匹配,    每组整数 代入方程 后 计算 方程等式左边和右边 的 差 的 绝对值,   这个 差 的 绝对值 称为 diff,   表示 该组 整数 对 方程 的 满足程度,  diff 越小, 满足方程 的 程度 越高,  diff 越大, 满足方程 的 程度 越低 。

程序 会 将 diff 最小 的 一组 整数 作为 最终输出 的 解    。

因为是 方程组,   所以这里说的 diff 是 综合 方程组 中 各个 方程 的 diff 得出 的 diff,  规则 是 取 各个方程 的 diff 中 最大的 一个 diff 作为 方程组 的 diff    。

 

至于 最小解 的 “最小”,   这里并没有 去 求 多组 解 来 排序 得出 最小解,    这里的 做法 很简单,   就是 把 代入方程 尝试匹配 的 整数 的 范围 设定在  ( -100 ,  100 )  区间 内,    取 这个 区间 内 diff 最小 的 整数组合,   这样 差不多 就是 最小解 了 ,    当然,    这是 近似 的 。

把 代入方程 尝试匹配 的 整数 的 范围 设定在  ( -100 ,  100 )  区间 内  这个 是 通过 匹配设定 设定 的 ,  程序界面 上 默认 的 匹配设定 是  2 轮 匹配,   第 1 轮 步长 10, 步数 10,  第 2 轮 步长 1, 步数 10    。     这个 运行程序以后,   在 程序界面 上可以看到   。

匹配 的 初始值 是 0, 这是 写死 在 程序 里的,    用 初始值 加上 步长 * 步数  就得到 每一次 匹配 的 整数    。

 

因为 不同 的 方程(组)  的 解 的 分布规律 不一样,  所以 ,  需要 设定  适当 的 步长 、步数 、进行多少轮匹配 ,   才能 求得 足够 精确 的 解   。

 

方程组 用 javascript 表示,   每个 方程 用 一个 函数 表示,  函数间 用 逗号隔开,    程序界面 里 默认 设定 了一个 方程组, 可以 直接 求解 试试  。

丢翻图方程组 最小解 计算机 数值求解

标签:需要   https   分布   get   href   tps   设定   隐函数   通过   

原文地址:https://www.cnblogs.com/KSongKing/p/12168989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!