在数学中,多项式是由变量(或不确定)和系数组成的表达式,其仅涉及加法,减法,乘法和非负整数指数的运算。
sympy.polys.polyerrors.PolynomialError:不支持非交换表达式
我使用 sympy.groebner 遇到以下错误:“sympy.polys.polyerrors.PolynomialError:不支持非交换表达式”。 在真实的情况下,我的表情非常困难
多项式根使用以下代码确定。根显示为虚数,但实际上是整数。 5 应该没有任何虚值 [5.+1.27882372e-07...
在 Sympy 中,有没有一种方法可以用定义多项式来表示 Groebner 基?
在 Sympy 中,我们可以通过 Grobner 基获得多项式约简的表示: 从 sympy 导入 groebner,展开 从 sympy.abc 导入 x, y f = 2*x**4 - x**2 + y**3 + y**2 G = 格罗布纳...
新的 np.polynomial API 中 np.polyval 的等效项是什么?
我在 NumPy 文档中找不到直接答案。此代码片段将使用域 x 上的多项式 p 值填充 y: p = [1, 2, 3] x = np.linspace(0, 1, 10) y = [np.polyval(p, i) for i in x] 什...
我正在尝试编写一个返回第 n 个勒让德多项式的系数的函数。 // 存储以前的多项式以使递归过程更快 无序_地图 我正在尝试编写一个返回第 n 个勒让德多项式的系数的函数。 // store previous polynomials to make the recursive process faster unordered_map<int, vector<double>> legendre_cache; // Recursive function to compute the coefficients of the nth Legendre polynomial vector<double> legendre_polynomial(int n) { // uses Bonnet's recursion formula P_{n+1} = ( (2n+1) x P_n - n P_{n-1} )/(n+1) // Check if the result is already in the cache if (legendre_cache.find(n) != legendre_cache.end()) { return legendre_cache[n]; } // Base cases if (n == 0) { return { 1.0 }; // P0(x) = 1 } if (n == 1) { return { 1.0, 0.0 }; // P1(x) = x } // Get coefficients for P_(n-1) and P_(n-2) vector<double> Pn_minus_1 = legendre_polynomial(n - 1); vector<double> Pn_minus_2 = legendre_polynomial(n - 2); // Get the sizes of the vectors to n+1 Pn_minus_1.push_back(0.0); // P_{n-1} gets multiplied by x Pn_minus_2.insert(Pn_minus_2.begin(), 0.0); // P_{n-2} needs two leading digits Pn_minus_2.insert(Pn_minus_2.begin(), 0.0); // Calculate coefficients for P_n vector<double> Pn(n + 1, 0.0); // Initialize Pn with n+1 zeros // Using the recurrence relation to fill coefficients for (int k = 0; k <= n; k++) { Pn[k] += ((2 * n - 1) * Pn_minus_1[k] - (n - 1) * Pn_minus_2[k]) / n; } // Store the result in the cache before returning legendre_cache[n] = Pn; return Pn; } 该算法有效,因为我将其结果与 n = 10 以内的其他来源进行了比较。 然而,这个函数很快就会变得不准确,而且它的递归性质并没有给它带来好处: 在这里,我评估我的多项式并将其与“boost/math”库中的类似函数进行比较: int main() { cout << fixed << setprecision(15); // Example inputs int n = 48; double x = 0.9; cout << "Result of my function:" << endl; vector<double> coeffs = legendre_polynomial(n); double result = 0; int l = coeffs.size(); for (int i = l - 1; i >= 0; i--) { result += coeffs[l - i - 1] * pow(x, i); } cout << result << endl; cout << "Result of boost library:" << endl; cout << boost::math::legendre_p(n, x) << endl; return 0; } n 越大,我的函数就越不准确,直到 n = 45 左右时完全崩溃: 测试代码的输出: Result of my function: 0.151876441197771 Result of boost library: -0.106892037065314 我从 boost 网站 知道 boost 函数使用与我相同的递归方法。 因此,假设他们的功能有效,那么也应该可以改进我的功能。 感谢您的帮助。 编辑1: 需要明确的是,我评估多项式只是为了证明我的系数是错误的;我主要需要多项式的系数(勒让德高斯求积)。 据我了解库中的函数,我认为那里从未提到过系数;递归公式仅应用于特定的 x 值。 坦率地说,我还没有达到重写代码来提取系数的水平。 编辑2: 我所说的“该算法是有效的,因为我将它的结果与其他来源的结果进行了比较,最多为n = 10”,我怀疑如果没有准确性错误,该函数将会起作用。我认为由于舍入、除法、浮点导致的错误会因为递归而像滚雪球一样不断增加,直到函数变得不可用。 (我的问题是如何处理这个问题) 我认为您无法像您一样计算勒让德多项式在给定点的值,即直接使用多项式的系数。事实上,您将面临数值错误,因为当多项式的阶数很大时,double无法处理x与“巨大”系数的乘法。 相反,您可以直接依赖这些多项式的三项递推关系来计算给定点的值: #include <iostream> #include <iomanip> #include <boost/math/special_functions/legendre.hpp> int main(int argc, char* argv[]) { std::cout << std::fixed << std::setprecision(15); int n = argc>=2 ? atoi(argv[1]) : 48; double x = 0.9; double p0=1; double p1=x; for (size_t k=1; k<n; k++) { double tmp = ( (2*k+1)*x*p1 - k*p0) / (k+1); p0=p1; p1=tmp; } std::cout << "Result of my function:" << std::endl; std::cout << p1 << std::endl; std::cout << "Result of boost library:" << std::endl; std::cout << boost::math::legendre_p(n, x) << std::endl; return 0; } 可能的输出: Result of my function: -0.106892037065314 Result of boost library: -0.106892037065314
将二次多项式拟合到 p 维数据并计算其梯度和 Hessian 矩阵的最佳方法是什么?
我一直在尝试使用scikit-learn库来解决这个问题。 大致: 从 sklearn.preprocessing 导入多项式特征 从 sklearn. Linear_model 导入 LinearRegression # 制作或...
在Python中,将二次多项式拟合到p维数据并计算其梯度和Hessian矩阵的最佳方法是什么?
我一直在尝试使用scikit-learn库来解决这个问题。 大致: 从 sklearn.preprocessing 导入多项式特征 从 sklearn. Linear_model 导入 LinearRegression # 制作或...
如何让 Python 将多项式作为输入,同时保持用 x 替换实际值的能力? 这是我尝试过的: fx=input("输入多项式:") x=浮点(输入(...
我正在制作一个二维码生成器,现在已经到了最后一步。我现在需要做的就是计算 Correctionbytes,以便扫描仪读取我的 QR 码。 https://www.thonky.com/qr-code-tutorial/
有没有一种简单有效的方法来在Python中计算初等对称多项式?
我目前正在开发一个项目,该项目涉及使用 Python 评估初等对称多项式(或“ESP”)。所以本质上我需要创建一个函数: 需要一个非空...
我(终于)最近听说了可变参数模板。我想知道是否有一种方法可以使用编译时运算符创建 int - 多项式: 模板 结构多项式 {}
如何将 RootOf 占位符转换为 Maple 中的显式根式以获得六次多项式?
我在 Maple 中有一个六次多项式,并且使用 RootOf 显示解。如果可能的话,我想将它们转换为显式部首。 这是多项式 49 Z^6 - 588 Z^5 + 2638 Z^4 - 55...
标题:如何将 RootOf 占位符转换为 Maple 中的显式根式以获得六次多项式?
我在 Maple 中有一个六次多项式,并且使用 RootOf 显示解。如果可能的话,我想将它们转换为显式部首。 这是多项式 49 Z^6 - 588 Z^5 + 2638 Z^4 - 55...
我一直在尝试理解图2.3中的情节。我希望有人可以向我解释它,因为我认为尝试按照问题 12 中的指示复制它会帮助我理解它。不过我
我正在努力准确计算此方法的运算次数,以产生多项式 f(x): 公共静态 int numOccurrences(int n){ 整数计数=0; for(int i = 0; i < ...
我想算出多项式 x^2 - 800x + 160000 的根,它的倍数根为 400。 在 Matlab 中,如果我输入 root([1 -800 160000),我会正确得到 ans = 400.0000, 400.0000 wh...
我正在尝试将多项式或黄土拟合到一系列短数据(作物系数(Kc)~生长期天数(gdds))。 实际数据很短,其中 <- c(0.1, 0.41, 0.54, 0.66, 0.8...
我想对 cuda 内核内的多项式执行求和运算,其中包含给定的系数和函数 y = a1*f1(x) + a2*f2(x) + a3*f3(x) + a4*f4(x); 我的第一个想法是...
scipy.special.eval_hermite 具有复杂的参数
scipy.special eval_hermite 函数只支持实参吗?从文档(https://docs.scipy.org/doc/scipy/reference/ generated/scipy.special.eval_hermite.html)中,我假设...
我想知道是否可以在 scilab 中将多项式计算为矩阵。 例如 : A = 地板(10*兰特(3,3)); P = 聚(A,“x”); horner(P,A) 应该返回空矩阵,b...