在MySQL中计算多项式的根

Calculate roots of polynomial in MySQL

提问人:Jossy 提问时间:8/5/2023 更新时间:8/5/2023 访问量:74

问:

我目前使用 numpy 函数如下:roots

y = numpy.roots([-2, 3, 0, -1 * x])[1]

在上面的表格中,我提取了一列来运行该函数。x

如果可能的话,我想把它移到MySQL查询中。我尝试复制函数的具体细节,但当我到达特征值时很快就迷失了方向。

我甚至还差得成为数学家,所以我想知道这里是否有人尝试过?

mysql numpy 多项式 mysql-8.0 特征值

评论

0赞 jared 8/5/2023
为什么是特征值标签,当你说要把它移动到MySQL查询中时,你是什么意思?
2赞 O. Jones 8/5/2023
你熟悉MySQL的存储函数吗?您也许能够使用这种笨拙且难以调试的语言编写代码。有一点很有帮助:该语言中的数字都是双精度浮点数。不过,不得不说,在许多应用程序中,dbms 是一个瓶颈,因此,当您可以在 python 代码中完成这项工作时,将大量数字运算塞入其中是不明智的。
0赞 Jossy 8/5/2023
@jared - 特征值标签是因为根包使用了特征值。在 SQL 查询上 - 我目前从 MySQL 表中提取数据并使用 python 计算 .我想知道这是否可以使用 SQL 查询来完成。y
1赞 Shadow 8/5/2023
@Jossy,您不能通过查询执行此操作。您需要编写存储过程或编译的函数。但是,任何人都不太可能从头开始为您编写此内容。

答:

1赞 gitg0 8/5/2023 #1

由于MySQL主要是为数据库操作而设计的,因此直接在MySQL查询中计算多项式的根似乎不是很实用。虽然,通过使用SLF(服务器可加载函数),这应该允许您用另一种语言(如C或C++)编写自定义函数,然后将所述函数集成到MySQL中。

阅读更多关于SLF Here Or Here的信息

1赞 Simon Goater 8/5/2023 #2

对于小阶多项式,您也许可以简单地使用一般解公式来做到这一点。阶 1 是微不足道的,阶 2 使用我们在学校教过的老式二次公式。您的示例似乎是三次多项式。根有一个通用公式

ax^3 + bx^2 + cx + d = 0

提供方(图片由维基百科提供)

cube root formula part1/3

cube root formula part2/3

cube root formula part3/3

一般三次多项式有 1 到 3 个实根。如果将 C 乘以单位 1 的立方根,上面的公式可以生成所有根(实数和复数),(sqrt(-3) - 1)/2,(-sqrt(-3) - 1)/2。Mysql 不支持复数,因此您必须将其全部扩展。我同意 gitg0 的观点,这不是解决这个问题的非常实用的方法,但通过一些工作看起来是可行的。