标签: polynomial-math

Python中的拉格朗日插值

我想用Lagrange方法插值多项式,但这段代码不起作用:

def interpolate(x_values, y_values):
    def _basis(j):
        p = [(x - x_values[m])/(x_values[j] - x_values[m]) for m in xrange(k + 1) if m != j]
        return reduce(operator.mul, p)

    assert len(x_values) != 0 and (len(x_values) == len(y_values)), 'x and y cannot be empty and must have the same length'

    k = len(x_values)
    return sum(_basis(j) for j in xrange(k))
Run Code Online (Sandbox Code Playgroud)

我跟着维基百科,但是当我运行它时,我在第3行收到一个IndexError!

谢谢

python interpolation polynomial-math

6
推荐指数
3
解决办法
2万
查看次数

用于仿射k-代数计算的库?

我正在寻找一个库或计算机代数系统,它将帮助计算环中多项式的运算

F_2[x_1, ..., x_n] / <f^2 - f>
Run Code Online (Sandbox Code Playgroud)

其中F_2是2-元素的有限域,并且<f^2 - f>是从元件所产生的理想f^2 - f对所有fF_2[...].(我认为/希望/我很确定这是使用xor作为+和*[ 维基百科 ] 的布尔代数环).

例如,

x_1 = poly_xn 1
x_2 = poly_xn 2
x_1 * x_2 * x_1 -- returns "x_1 * x_2"
x_1 + x_1 + x_2 -- returns "x_2"
Run Code Online (Sandbox Code Playgroud)

我已经在Haskell中为此编写了代码,但不幸的是性能不是很好.

注意:标题"仿射k-代数"来自艾森伯德的交换代数,其中包含代数几何的观点.35; 如果有更好的名字请编辑问题,谢谢!

haskell polynomial-math computer-algebra-systems

6
推荐指数
1
解决办法
150
查看次数

在TreeMaps中存储多项式---为什么?

我今天写了一篇关于Java数据结构实施的大学课程的试卷.最后一个问题是这样的:

解释为什么使用TreeMap <Integer,Integer>来存储具有积分系数的多项式是很方便的,特别是当多项式应该以标准形式打印出来时,作为字符串.

意识到这是一个错误,我接着解释了为什么我认为这不是一个好主意.我反而主张使用一个简单的int []数组,因为数组在两个方向上都有O(1)随机访问,O(n)迭代,并且指针(引用)没有额外的内存占用.

假设我错了并且使用(排序的)TreeMap有一些好处,有人可以向我解释这些好处吗?我的理由是,由于Matlab,Octave,Maple和其他经过良好测试的数值程序使用数组来存储多项式,因此不可能完全错误.

java polynomial-math data-structures

6
推荐指数
1
解决办法
800
查看次数

如何在C++中求解五次多项式

我有一个五次函数(五次多项式),我想用C++解决它.是否有可以使用的实现或数学库才能继续?

c++ polynomial-math

6
推荐指数
1
解决办法
5708
查看次数

多项式的最大值

我有一个N阶多项式(其中N是偶数).对于x减/加无穷大,该多项式等于负无穷大(因此它具有最大值).我现在正在做的是通过使用polyder然后找到N-1阶多项式的根来获取多项式的导数.roots函数在Matlab中返回N-1个解.然后我选择真正最大化多项式的真根.问题是我正在更新我的多项式,并且在每一步我使用上述过程来找到最大化器.因此,root函数需要花费太多的计算时间才能使我的应用程序变慢.有没有办法在Matlab或提出的算法中以计算有效的方式实现这种最大化(即只找到一个解决方案而不是N-1解决方案)?谢谢.

编辑:我还想知道Matlab中是否有一个例程只返回真实的根,而不是 roots返回所有真实/复杂的根.

optimization matlab max maximize polynomial-math

6
推荐指数
1
解决办法
2457
查看次数

用python求解同时多元多项式方程

编辑:我得到的方程式参考包含几个错误.我在这里修好了.解决方案现在可能真的有意义!

当两层流体流过地形时,取决于流速的相对大小和流体中的波速,存在许多不同的解决方案.

关键流程

这些被称为"超临界","次临界"和"关键"(前两个我在这里称为"超临界").

以下等式定义了(h,U0)参数空间中临界行为和临界行为之间的界限:

EQ1

EQ2

我想消除d_1c(即我不在乎它是什么)并找到这些方程的解决方案(h, U_0).

简化因素:

  • 我只需要给出答案 d_0
  • 我不需要精确的解决方案,只需要解决方案曲线的概述,因此可以通过分析或数字方式解决.
  • 我只想绘制区域(h,U0)=(0,0)到(0.5,1).

我想用Enthought分配中的模块来解决这个问题(numpy,scipy,sympy),但是真的不知道从哪里开始.消除变量d1c确实让我感到困惑.

这是python中的方程式:

def eq1(h, U0, d1c, d0=0.1):
    f = (U0) ** 2 * ((d0 ** 2 / d1c ** 3) + (1 - d0) ** 2 / (1 - d1c - d0) ** 3) - 1
    return f

def eq2(h, U0, d1c, d0=0.1):
    f = 0.5 * (U0) ** 2 * ((d0 ** 2 / d1c ** 2) - (1 …
Run Code Online (Sandbox Code Playgroud)

python math sympy polynomial-math scipy

6
推荐指数
1
解决办法
2185
查看次数

SymPy不能求解四阶多项式方程

我有一个四阶多项式方程,我需要找到所有的根.简单的例子:

from sympy import (Symbol,solve,I)

a=4+5*I; b=3+7*I; c=12-56*I; d=33+56*I; e=345-67*I; x=Symbol('x')
eq=a*x**4 + b*x**3 + c*x**2 + d*x +e
solve(eq,x)
Run Code Online (Sandbox Code Playgroud)

如果a,b,c,d,e是纯粹的真实,那么它工作得很好.但就我而言,所有这些都是复杂的数字.然后我接到了电话:

PolynomialError: 'cannot return general quartic solution'
Run Code Online (Sandbox Code Playgroud)

我发现了类似的问题,并实现了修复: 问题的描述. 修复问题

但它并没有真正帮助.存在某种奇怪的问题,因为现在调用(在修复中已更改):

PolynomialError: Cannot determine if `-((12 - 56*I)/(4 + 5*I) - 3*(3 + 7*I)**2/(8*(4 + 5*I)**2))**2/12 + (3 + 7*I)*((33 + 56*I)/(4*(4 + 5*I)) + (3 + 7*I)*(3*(3 + 7*I)**2/(256*(4 + 5*I)**2) - (12 - 56*I)/(16*(4 + 5*I)))/(4 + 5*I))/(4 + 5*I) - (345 - 67*I)/(4 + 5*I)` is …
Run Code Online (Sandbox Code Playgroud)

python sympy polynomial-math equation-solving

6
推荐指数
1
解决办法
910
查看次数

数学函数,开始时缓慢增加,结束时快速增加

我有数字 x=[0,n],其中 n>0。我想构造一个函数 y=f(x) ,使得值从 0 开始缓慢增加,当接近 n 时增加得非常快,当达到 n 时,y 为无穷大。对此进行建模的好函数是什么?

algorithm math data-modeling polynomial-math

5
推荐指数
1
解决办法
3863
查看次数

用于基于一组点估计多项式的Java库

多项式的度数应该是# of points - 1例如,如果有2个点,则它应该是一条线.

我知道我可以用矩阵来解决这个问题

例如,如果有4个点:
多项式将是y = ax^3 + bx^2 + cx + d,矩阵将是

| y0 |         | x0^3    x0^2    x0    1 |     | a |
| y1 |    =    | x1^3    x1^2    x1    1 |  x  | b |
| y2 |         | x2^3    x2^2    x2    1 |     | c |
| y3 |         | x3^3    x3^2    x3    1 |     | d |
Run Code Online (Sandbox Code Playgroud)

我可以解决a,b,c,d.是否有一个库可以执行此操作,输入为点{x0,y0}到{xn,xn}?

java matrix polynomial-math polynomials

5
推荐指数
1
解决办法
246
查看次数

庞加莱-米兰达定理的实现

要测试一个连续函数是否有,在给定区间 [x0, x1] 中是否有一个单根相对容易:根据中值定理,当 x0 处的函数值的符号与 x1 处的符号相反时,有 (在至少)一个根。

\n\n

例如,给定一个二次函数:

\n\n
g(x): a*x**2 + b*x + c = 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

测试看起来像:

\n\n
if sign of g(x0) is opposite of sign of g(x1)\nthen return true\nelse return false\n
Run Code Online (Sandbox Code Playgroud)\n\n

对于多变量情况,有Poincar\xc3\xa9\xe2\x80\x93Miranda 定理,但我在阅读链接的文章时很难正确实现测试。

\n\n

给定两个二次二元函数:

\n\n
g1(x, y): a1*x**2 + b1*y**2 + c1*x*y + d1*x + e1*y + f1 = 0\ng2(x, y): a2*x**2 + b2*y**2 + c2*x*y + d2*x + e2*y + f2 = 0\n
Run Code Online (Sandbox Code Playgroud)\n\n

和一个矩形区域 …

algorithm math polynomial-math polynomials

5
推荐指数
1
解决办法
279
查看次数