【问题标题】:Can I somehow include Maple procedure into C++ code我可以以某种方式将 Maple 程序包含到 C++ 代码中吗
【发布时间】:2012-09-25 17:01:28
【问题描述】:

我有一道数学题,用 Maple 解决,但必须用 C++ 解决。 问题是我找不到其中一个方程的数值方法(它是用内置的枫树“求解”程序求解的)。我能否以某种方式将此过程包含在我的代码中,或者找到显示 Maple 数值方法的完整描述的地方。 该方程是一个复代数方程组。

【问题讨论】:

  • 有多复杂?如果你能定义你的问题,我相信这个网站上有很多人可以给你数字方法
  • Complex 还是复杂的?
  • 复杂。而且相当复杂
  • zsqrt(1+m^2)+ksisqrt(n^2+m^2)+imx=t m - 未知复变量,z,n,x,t - 实参数,i - 虚数 1

标签: c++ numerical-methods maple


【解决方案1】:

你说你已经解出了 Maple 方程,所以我假设你确实有解析解。为什么你需要一个数字呢?根据文档here 从解决方案生成 C 代码,仔细检查并将其复制粘贴到您正在开发的 C++ 程序中。

【讨论】:

  • 象征性解决方案是否有用值得怀疑。方程z*sqrt(1+m^2)+k*s*i*sqrt(n^2+m^2)+i*m*x=t 可以通过二次平方转换为 4 次多项式,虽然存在 Ferrari 方法,但它相当复杂且难以鲁棒。使用 Newton 或 Laguerre 等任何多项式求根器可能更可靠。
【解决方案2】:

好吧,我假设在求解时您有 z、n、x、t 的值,以及第二个术语中的 ksi 值。如果是这样,我建议使用准牛顿法,这里列出了其中一些方法

Quasi-Newton Wiki

生成的数学当然可以用 C++ 编码,而且我确信外部存在一些实现。

我提出这个建议的原因是您的系统(我不确定我是否看到了一个系统?只是一个非线性函数)是非线性的,只有当您做出良好的初步猜测时,牛顿法才会有用。在给定任何初始条件的情况下,即使速度很慢,它们中的大多数也能保证收敛。

除非你编码不当哈哈

编辑 2:关于编辑 1 的 NVM。这是一个价格标签,哈哈


编辑:您也许可以使用这个具有 C++ 钩子的计算库(这听起来像是一个作业,所以也许您不能):

NAG Library

【讨论】:

    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 2010-12-29
    • 2015-07-05
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多