首页 文章

计算机代数软,以最小化一组多项式中的运算数

提问于
浏览
1

我有多项式系统,相当简单的多项式表达式,但很长,以优化我的手 . 表达式按集合分组,在给定集合中,在几个变量中有常用术语 .

我想知道是否存在计算机代数系统,例如Mathematica,Matlab或sympy,它们可以使用通用术语优化多个多项式以最小化操作次数 . 如果这样的系统可以最小化中间项的数量以减少寄存器的数量,那也将是很好的 .

如果这样的系统不存在,我将使用Python符号代数Sympy自己做 . 如果您正在处理此类软件包或有兴趣开发或使用该软件包,请告诉我们 .

这是一个简单的例子

x0 = ((t - q*A)*x + B)*y
y0 = ((t - q*A)*y + B)*z
z0 = ((t - q*A)*z + B)*x

所以你可以明显地考虑(t - qA)项 . 现在,如果您使用各种常用术语组合使术语数量非常大,则很难手动完成 . 我所涉及的方程式最多涉及40个项,并且大小约为20.希望有所帮助

谢谢

4 回答

  • 1

    sympy你知道它是否支持你可能想要的所有功能(仍然,调整它以添加你认为它可能缺少的东西必须比从头开始写你自己更容易;-) .

  • 1

    你考虑过Maxima吗?

    它是一个令人印象深刻的象征性计算包,是免费的,开源的,并且具有强大且活跃的社区,在处理非显而易见的配方时提供有 Value 的帮助 . 它适用于所有三种主要操作系统,并具有预编译的Windows二进制文件 .

    你有各种各样的代数操作命令可用于表达式和方程组(如你的):扩展,因子,简化,ratsimp,linsolve等 .

    这个页面(Maxima for Symbolic Computation)应该让您入门 - 下载,安装,一些示例,然后指出其他资源来指导您的工作,包括快速命令参考/备忘单,以及编写您自己的脚本的一些指导 .

  • 0

    Mathomatic可能是您正在寻找的轻量级解决方案 . 看看:http:www.mathomatic.org .

    它使用所有常用运算符进行简单代数,能够简化符号表达式,求解变量和eqns集 .

    它没有编程能力 . 您可以构建一个独立的应用程序,或者以库和头文件的形式使用API将其合并到C,C或Objective-C中,或者您可以从提供命令行和环境的应用程序中启动应用程序 .

    看看NSTask,它还允许在自己的应用程序中将stdin和stdout传递给数据流 .

    Mathomatic还能够以java,python或maxima格式保存结果表达式,以包含在这些系统上的程序代码中 .

  • 1

    Mathematica当然可以对你的多项式方程组进行各种变换,其中一些变换可以减少项的数量 . 这是否是适合您的正确答案是值得商榷的,因为您似乎没有可用的副本 . 我希望Maple和大多数其他CAS都是如此 .

    但是你提到的

    减少寄存器数量

    表明您实际上正在尝试进行一些数据流分析以进行编译 . 您可能也想查看有关该主题的文献 . 一些文献确实提到了关于表达式的类似计算机代数的转换 .

相关问题