问题标签 [polynomials]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
569 浏览

python - 使用 for 循环从列表中计算函数的值

我需要创建一个简单的程序,它将获取列表的每个元素并将其放入多项式中,然后计算它。

这是我的代码

我的问题是,这仅重写多项式和列表中其余元素的系数为0。我需要一个如何正确解决它的线索。

0 投票
1 回答
205 浏览

java - FFT 除法复杂,Java

我在 matlab 文件中看到了这个。频率.m 文件

例子:

现在

fft 并不重要,我需要如何执行此操作..

我需要一个算法(没有 matlab 代码),我需要一些 Java 的东西,或者一步一步的微积分......

0 投票
1 回答
1223 浏览

c++ - 封闭式多项式求根算法

我正在寻找一种健壮的算法(或描述算法的论文),它可以使用封闭形式的解决方案找到多项式的根(理想情况下可以找到第 4 个 debree,但任何事情都可以)。我只对真正的根源感兴趣。

我第一次解决二次方程涉及到这个(我也有类似风格的三次/四次代码,但现在让我们关注二次方程):

代码很糟糕,我讨厌所有的门槛。但是对于在区间中有根的随机方程[-100, 100],这还不错:

请注意,此精度与系数的大小有关,通常在 10^6 范围内(因此最终精度远非完美,但可能大部分可用)。然而,如果没有阈值,它几乎是无用的。

我尝试过使用多精度算术,这通常效果很好,但往往会拒绝许多根,因为多项式的系数不是多精度的,并且某些多项式不能精确表示(如果在 2 度中有双根多项式,它通常要么将其分成两个根(我不介意),要么说根本没有根)。如果我想恢复甚至稍微不精确的根,我的代码就会变得复杂并且充满阈值。

到目前为止,我已经尝试过使用 CCmath,但要么我不能正确使用它,要么精度真的很差。此外,它在plrt().

我曾尝试使用 GNU 科学库gsl_poly_solve_quadratic(),但这似乎是一种幼稚的方法,并且在数值上不是很稳定。

天真地使用std::complex数字也被证明是一个非常糟糕的主意,因为精度和速度都可能很差(尤其是在代码中包含大量超越函数的三次/四次方程)。

将根恢复为复数是唯一的方法吗?然后不会遗漏任何根,用户可以选择根需要的精确度(从而忽略不太精确的根中的小假想分量)。

0 投票
1 回答
555 浏览

c++ - 最终域库上的多项式

我试图找到一个 C++ 库来处理一些有限域 GF(2^n) 上的多项式,并支持矩阵表示,支持秩查找/逆,甚至解决 A=X*B。我正在尝试使用 Linbox,但文档很少。在对库的 Givaro 部分做了一些讨厌的事情后,我能够将整数转换为多项式表示,但我无法使用 Linbox 的排名/求解部分,因为它们似乎不处理多项式, 只有指数为 1 的素数基数 (GF(2))。

这是代码的一部分

调试时,该rank函数始终将元素视为 GF(2) 上的元素并返回不正确的值。

关于如何使用这个库的任何想法?有一个 GF(2^n) 的 MxM 元素的矩阵并将其求逆或求其秩或求解线性方程组?或者我应该使用另一个库?

0 投票
1 回答
605 浏览

r - R通过(a)固定点将多项式拟合到数据

我陷入了一个非常具体的问题,我必须找到一个描述植物(标准化)叶子形状的函数。问题不仅在于找到最能描述数据的多项式,还在于它从 (0,0) 开始,到 (1,0) 结束,并通过最大宽度 (x_ymax, 1) 的点而不会变宽.

我尝试的另一个选项是 Hermite 插值,使用这 3 个特定点作为控制点,但它提供的功能与叶子的实际形状相差甚远,除非我提供更多控制点。

是否有特定的功能或者我需要进行一些手动转换?还是有更好的或替代的选择来解决这个问题?

提前致谢!

0 投票
1 回答
3560 浏览

python - 在python中创建任意次数的多项式

我想使用 a x +b x^2+c*x^3+... 类型的多项式函数来使用 scipy.optimize.curve_fit 拟合一些数据。

我设法做得很好,但我的问题是我希望用户能够输入拟合的多项式次数,仅此而已。如果不指定 python 中的系数,我无法找到一种简单的方法来生成 n 次多项式。谁能帮我?

谢谢!

0 投票
1 回答
178 浏览

performance - 优化一组多项式以提高计算速度

我有一组由计算机代数系统 (CAS) 生成的多项式表达式。例如,这是该集合的一个元素。

-d*d*l*l*qb*b*l*l*q+2*d*f*j*l*q+2*b*f*h*l*qf*f*j*j*qb *b*j*j*q+2*b*d*h*j*qf*f*h*h*qd*d*h*h*q+b*b*j*j*o*o-2 *b*d*h*j*o*o+d*d*h*h*o*o-2*b*b*j*l*n*o+2*b*d*h*l*n *o+2*b*f*h*j*n*o-2*d*f*h*h*n*o+2*b*d*j*l*m*o-2*d*d *h*l*m*o-2*b*f*j*j*m*o+2*d*f*h*j*m*o+b*b*l*l*n*n-2 *b*f*h*l*n*n+f*f*h*h*n*n-2*b*d*l*l*m*n+2*b*f*j*l*m *n+2*d*f*h*l*m*n-2*f*f*h*j*m*n+d*d*l*l*m*m-2*d*f*j *l*m*m+f*f*j*j*m*m

我需要尽可能快地在 C 程序中执行所有这些。如果您仔细查看这些公式中的任何一个,很明显我们可以优化它们以提高计算速度。例如,在上面粘贴的多项式中,我可以立即看到 -d*d*l*l*q、2*d*f*j*l*q 和 -f*f*j*j*q 项,这样我就可以用 -q*square(d*lf*j) 替换它们的总和。我相信这里可以做很多这样的事情。我不相信(但也许我错了)任何编译器都能够找到这种优化,或者可能是更高级的优化。我试图让 maxima(一个 CAS)为我做这件事,但没有任何结果(因为我是 maxima 的初学者,我可能错过了一个神奇的命令)。所以,我的第一个问题是:我们可以使用什么工具/算法来优化多项式表达式以提高计算速度?

当谈到优化一组共享大部分变量的多项式表达式时,事情变得更加复杂。实际上,逐个表达式优化表达式可能不是最理想的,因为编译器可以在优化之前识别公共部分,但如果不作为一个整体执行,则在优化之后就不能识别了。所以,我的第二个问题是:我们可以使用什么工具/算法来优化一组多项式表达式以提高计算速度?

此致,

PS:这篇文章与“计算机代数软件以最小化一组多项式中的运算数量”有一些相似之处,但是其中给出的答案指向 CAS 程序,而不是说我们如何使用它们来实现我们的目标。

0 投票
2 回答
7987 浏览

r - 在 R 中绘制来自 lme 模型(带有多项式)的预测值

我正在使用线性混合效应模型(使用lme()R 中 nlme 包中的函数运行),它具有一个固定效应和一个随机截距项(以考虑不同的组)。该模型是这样指定的三次多项式模型(遵循下面给出的建议):

仅一些示例数据:

我现在想使用该predict函数绘制拟合值(iv 的值在数据集中不连续,因此我想改善拟合曲线的外观/平滑度)。

使用有关如何从简单的 lme 模型(没有多项式)绘制预测值的在线示例(参见此处:从 lme fit和http://glmm.wikidot.com/faq提取预测带),我可以绘制预测的“人口” ' 表示使用以下代码的没有多项式的 lme:

我想将此代码扩展为 1)绘制组内预测线以及平均人口值,以及 2)确定如何调整代码以绘制 lme 的预测“人口”和“组内”曲线多项式(即上面的模型 M1)。

获得组预测:我可以使用以下代码获得一组组的预测值,但我想为每个组绘制一条线,以及总体平均值,在示例数据的情况下,我看不到如何可以提取两组线的预测值吗?

此外,如果您想预测比原始 iv 值数量更多的值(例如,在您有不规则数据的情况下),这也不起作用。由于行数不同,下面的内容显然不起作用,但我在语法上苦苦挣扎。

对于多项式模型:我不明白如何将 poly(iv,3) 合并到 new.dat 数据框中以输入预测函数。

任何关于如何实现这两个目标的建议都将不胜感激,因为我一直在努力解决这个问题而没有高兴(如果可能的话,我宁愿使用基本图形而不是 ggplot)。谢谢!

0 投票
2 回答
1572 浏览

matlab - 求解一个 4 次多项式方程

我在这里解决了这个问题后得到了这个等式

我想用 Matlab 解决它。

0 投票
1 回答
459 浏览

plot - IPython,绘制多项式

我一直在使用 Sympy 进行插值,结果我得到了一个 7 次多项式 (ax^7 + bx^6 + cx^5 + ...+ h),我想绘制它,但是我尝试绘制它我得到错误,例如,如果我尝试:

哪里r = np.linspace(0,20,num=100)U = Polynomial(x); 结果是一条错误消息:如果我尝试“r = np.arange(20)” ValueError: sequence too large; must be smaller than 32,我会得到。MemoryError: 我可以绘制它的唯一方法是使用 for 循环,逐个替换并将其作为列表保存在另一个变量中。所以我的问题是,第一个输入有什么问题?有没有一种简单的方法来绘制多项式?