问题标签 [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.
matlab - matlab优化工具箱——多项式拟合
我有一组 x 和 y 值,我想在其周围拟合多项式曲线。该函数应采用最多 9 阶多项式的形式;
其中 a(n) 是我的系数。
我有两个问题。该曲线可能并不总是采用 9 阶多项式的形式。它可能是 3 阶、6 阶或其他(最多 9 阶)。
我不确定如何使用优化工具箱进行设置。有任何想法吗?
其次,我可以设置一个约束以使计算的 y 值始终为正值吗?
非常感谢,
当前代码如下。
功能;
algorithm - 符号计算来自内维尔算法的多项式
我正在研究依赖于计算多项式插值的内维尔算法。有关它的更多信息,您可以在http://en.wikipedia.org/wiki/Neville%27s_algorithm找到。在某些时候计算多项式对我来说不是问题。有很多关于它的来源。我的问题依赖于我不想在某些时候计算多项式,我想以这种形式获得多项式a_0 + a_1x + ... + a_nx^n
:我不知道如何开始。你能给我一些建议吗?
matlab - 找到具有符号系数的多项式的根
作为作业的一部分,我必须推导出汽车悬架系统的运动方程。本质上,这是一个弹簧质量阻尼器问题。尚未给出汽车质量 M1、车轮质量 M2、弹簧常数 k1 和 k2 以及阻尼常数 c 的值。我已经导出了运动方程,并导出了一个将路面(输入)与最终的车身位移(输出)相关的传递函数。我必须确定这个传递函数的极点,因此我需要找到特征方程(分母)的根。问题是我没有上述变量的任何值,我试图在 MATLAB 中以符号方式分解我的四阶多项式或立即计算根。我不能假设任何值,它必须象征性地解决,
我对 MATLAB 没有太多经验,所以我不知道它的所有功能。
我试图解决的特征方程是:
(M1*M2)*s^4 + c*(M1+M2)*s^3 + ((M1*k1)+(M1*k2)+c^2+(M2*k2)-c)*s^2 + k1*c*s + ((k1*k2)-(k2^2))
先感谢您。
numpy - 由多项式组成的矩阵的乘法
是否可以使用 numpy/scipy 乘以由多项式组成的矩阵?
具体来说,我希望将一个 120 乘以 120 的稀疏矩阵相乘,其条目本身可能看起来像 a+7*b+c。
老实说,我并没有很努力地做到这一点。我看到 numpy 中有一个多项式模块,但我没有使用它的经验。我只是希望有人看到这一点并说“显然有可能,这样做”。
我之前看到过一个相关的问题:矩阵,其条目是多项式
java - 多项式字符串未拆分
我有 2 个字符串。
我想拆分字符串。我应该找到系数和指数。我使用了这样的替换方法:s1.replaceAll("//s+","");
所以我删除了所有空格。当我使用拆分方法时。
我的输出是:
但这不是答案。使用一种拆分方法,我将拆分所有部分。
但是我想在特殊代码“+”和“-”在一起时拆分字符串。但我又没有。在不删除空格的情况下,我可以拆分我的字符串吗?
python - 在 Python 中分配变量值之前对变量执行操作
好的,所以基本上我的问题是将思维框架从“在纸上”解决数学问题转变为通过编程来解决它们。让我解释一下:我想知道是否可以在为变量赋值之前对其执行操作。就像如果我有类似的东西,(1-x)**n
我可以先分配 na 值,然后将其转换为特定程度的特定值,然后给出 xa 值或值。如果我不够清楚:如果 n=2,我可以先将方程转换为形式1-2x+x**2
,然后在下一步处理 x 值吗?
我想编写一个用于计算和绘制 n 次贝塞尔曲线的代码。我为此使用伯恩斯坦多项式,所以我意识到方程由 3 部分组成:第一部分是多项式系数,它们都是帕斯卡三角形的一部分;我正在计算这些并将它们放在一个列表中。第二部分是控制点的坐标,也是某种系数,并将它们放在单独的列表中。现在是困难的部分:方程的一部分有一个变量。伯恩斯坦正在使用气压中心坐标(意思是 u 和 1-u)。这部分方程的第 N 度公式是:
其中 n 是曲线度,我从 0->n 开始,U 是可变的。U 是实际标准化变量,这意味着它的值可以从 0 到 1,我想稍后在一定数量的步骤中迭代它(比如 1000) .但问题是,如果我尝试使用提到的方程,我会不断出错,因为 Python 不知道如何处理 u 我教过嵌套循环,其中第一个将 u 的值从 0 迭代到 1,第二个会处理提到从0到n的方程,但不确定它是否是正确的解决方案,也不知道如何检查结果。你怎么看?PS:我没有上传代码,因为我遇到问题的部分我什至无法开始,而且,我认为但可能是错误的,它与代码的其余部分是分开的;但如果你认为它可以帮助解决问题,我可以上传它。
c - 递归 C 程序对多项式进行微分,直到它停止
上面的程序只计算一阶导数,但我需要一个计算所有导数的程序 ex 2x^3+2x^2+3x+1 f1= 6x^2+4x+3 f2=12x+4 f3=12
像这样我需要修改程序,但我不知道怎么做,请帮助我//
java - 我应该如何使用我的自定义链表实现排序?
我一直试图弄清楚链接列表是如何工作的,但我很难想象这个概念。我知道多种算法,但我不知道如何实现它们。
这是我的代码:
这是用于存储多项式的数据。我试图让他们按降序排列。并最终将具有相同指数的节点的系数相加。
我想我要使用冒泡排序算法,但我不知道如何重新排列链接。我也在考虑添加一个 remove() 方法,然后删除一个节点并将其添加到最后,直到它被排序。但这非常低效,因为我每次都必须不断制作新节点。
PS:我还有一个多项式类,它接受一个字符串并将其转换为 LL。我认为没有必要发布它,但如果你需要它,我会发布它!谢谢!
python - Python 等效于 MATLAB 的 Legendre 函数
目前,我正在尝试使用 Python 分析时间序列数据。作为这样做的指导方针,我将自己定位在一个 MATLAB 脚本上,它几乎可以完成我想做的所有事情。到目前为止它工作得很好,但现在我碰到了那个脚本中使用的勒让德多项式。
我尝试了它的NumPy 实现,但我找不到(或多或少)产生与MATLAB function 相同结果的方法。
基本上,这就是我想知道的。如何让我的 Python 代码给出与 MATLAB 代码相同的结果?
作为一个小示范,
给出:
而我的 Python 版本是这样的:我尝试的方式是这样的:
和产量:
我看到了一些有点奇怪的东西,但不幸的是我不知道如何测试它们,因为这是我第一次听说像勒让德多项式这样的东西,而且 NumPy 的文档和维基百科都对理解没有很大帮助它。
python - 如何评估动画通道样条的多项式系数?
我正在对视频游戏动画文件进行逆向工程,但遇到了一堵砖墙。动画集的结构如下:
对于每个动画集:
- 动画集名称:攻击
- 骨头数:22
- 持续时间:1.03333
随后对于集合中的每个骨骼:
- 骨骼名称:骨盆
- 骨骼 ID:0
- 键间隔:0.0333333
- 键数:31
然后将以下数据分解为 7 个通道(Position[x,y,z]
和Rotation quaternion[x,y,z,w]
):
Position[x,y,z] 是常量或原始值,我在这里没有问题。
但是 Rotation quaternion[x,y,z,w] 通道被解释为具有 N 段和 N 系数的样条线,我无法准确地弄清楚如何将样条线评估为可以打入 3D 程序的数据。
我知道每个通道的样条曲线被绘制为 Y 和 X 将等于标准化时间(0 到 1)。
这个 Q+A ( Evaluating Polynomial coefficients ) 似乎是我需要的:
系数为 a0, a1, a2, a3........an 的 n 次多项式是函数
p(x)= a0+a1*x+a2*x^2+a3*x^3+.....+an*x^n
并编写为 Python 代码:
但是我不确定当我将lst
每个段的系数和x = Duration / Keys
.
这是第一个动画集的“Rot.x”通道及其分段和系数:
段 = 3
第 1 段
- 系数1:0.0198117
- 系数2:0.00826611
- 系数3:0.0521381
- 系数4:-0.00210184
第 2 段
- 系数1:-0.181324
- 系数2:1.09073
- 系数 3:-1.77627
- 系数4:0.920407
第 3 段
- 系数1:-0.0335189
- 系数2:0.265863
- 系数3:-0.359457
- 系数4:0.147228
我正在查看的方式是每个段是持续时间的 1/3 (1.03333),此外,每个段的系数将在键数 (31) 的 1/3 上进行评估,但使用上述poly(lst, x)
函数的输出为了
- 第 1 段 = 从 0.019 到 4.90 到 -7.15
- 第 2 段 = 从 -0.18 到 20985.41
- 第 3 段 = 从 -0.03 到 3296.11
显然我做错了什么,因为输出太高了。
任何帮助将不胜感激!