标签: polynomials

用已知截距拟合多项式

我正在使用lm(y~poly(x,2))适合数据的二阶多项式。但是我只是找不到指定已知拦截值的方法。如何使用来拟合具有已知截距值(例如“ k”)的多项式模型lm

r linear-regression intercept polynomials

3
推荐指数
1
解决办法
1213
查看次数

找到给定其根的多项式的系数

我正在尝试编写一个算法a(0),..., a(n-1),在给定值的情况下n, x_1, ..., x_n, a(n),它将找到:

a(n)*p^n + a(n-1)*p^(n-1) + ... + a(1)*p + a(0) = a(n)(p-x_1)(p-x_2)...(p-x_n)
Run Code Online (Sandbox Code Playgroud)

对于所有真正的p.

在乘以(n)(p-x_1)(p-x_2)后,我想到使用Viete的公式来找到系数.

但事实证明,编写代码并不像我预期的那么明显.

我想只使用代码中的基础知识 - 即循环,if-s加法和乘法 - 没有现成/复杂函数.

以下是公式: 在此输入图像描述

首先,我想强调一下,我只需要一个伪代码,而不关心为根和系数定义数组.这就是为什么我会写一个(n),xn.哦,如果我从i = 1开始索引而不是i = 0以便与数学符号同步,我希望它不会打扰你.为了从i = 0开始,我必须重新编写根并引入更多括号.

这就是我到目前为止所提出的:

a(n-1)=0;
for(i=1; i <= n; i++){
    a(n-1) = a(n-1) + x_i;
}

a(n-1) = -a(n)*a(n-1);
a(n-2)=0;

for(i=1; i <= n; i++){ 
    for(j=i; j <= n; j++){
        a(n-2) = a(n-2)+ x_i * x_j;
    }
}

a(n-2) = -a(n)*a(n-2);
a(n-3)=0;

for(i=1; i <= n; …
Run Code Online (Sandbox Code Playgroud)

algorithm loops for-loop polynomial-math polynomials

3
推荐指数
1
解决办法
2729
查看次数

使用表达式树构建Func <int,double>多项式

TL; DR

如何使用系数数组建立表达式并将其转换为Func<int, double>?有比表达树更好的方法吗?


我有一个不可变的序列类型,使用一个Func<int, double> formula用于为序列A生成术语An的构造.我开始构建一个辅助类,用一些简单的参数构造常见的数学公式:

public static Sequence CreateLinearSequence (double m, double b)
{ return new Sequence (n => m * n + b); }
Run Code Online (Sandbox Code Playgroud)

我为常量序列,对数和简单多项式(线性,二次,三次和四次)构建了标准方法,但我想扩展它以使用params关键字支持任意数量的项.

这是我的方法:

 public static Sequence CreatePolynomialSequence (params double[] coeff)
 {
     Expression<Func<int, double>> e = x => 0;
     double pow = 0;

     for (int i = coeff.Length - 1; i >= 0; i--)
     {
         double c = coeff[i];
         var p = Expression.Parameter (typeof (int), "x");
         e = Expression.Lambda<Func<int, …
Run Code Online (Sandbox Code Playgroud)

c# math func expression-trees polynomials

3
推荐指数
1
解决办法
744
查看次数

所有子集的乘积之和,

我想计算给定$ N $元素集的每个子集的乘积之和.例如,给定集合{1,2,3},答案是1 + 2 + 3 + 1*2 + 1*3 + 2*3 + 1*2*3.我还想给出模数$ $ M $.

我所知道的是我可以计算$(x - a_1)(x - a_2)...(x - a_n) - 1 $,但这会涉及FFT,因此可能存在一些舍入误差,但主要问题是这个想法是需要$ O(N\log ^ 2 N)$时间并且模数$ M $是有问题的.有没有更快的方法来解决这个问题?这不是我的功课,我从老师那里得到了这个任务来练习编程比赛,但我真的遇到了这个问题.

约束:

$ a_i\le 10 ^ 9 $

$ N\le 10 ^ 6 $

$ M\le 10 ^ 9 $

algorithm combinatorics number-theory polynomials

3
推荐指数
1
解决办法
206
查看次数

当只有预测网格的分辨率发生变化时,为什么预测多项式会发生剧烈变化?

为什么我有完全相同的模型,但运行不同网格大小的预测(0.001对比0.01)获得不同的预测?

set.seed(0)
n_data=2000
x=runif(n_data)-0.5
y=0.1*sin(x*30)/x+runif(n_data)
plot(x,y)


poly_df=5
x_exp=as.data.frame(cbind(y,poly(x, poly_df)))
fit=lm(y~.,data=x_exp)

x_plt1=seq(-1,1,0.001)
x_plt_exp1=as.data.frame(poly(x_plt1,poly_df))
lines(x_plt1,predict(fit,x_plt_exp1),lwd=3,col=2)

x_plt2=seq(-1,1,0.01)
x_plt_exp2=as.data.frame(poly(x_plt2,poly_df))
lines(x_plt2,predict(fit,x_plt_exp2),lwd=3,col=3)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

regression r linear-regression lm polynomials

3
推荐指数
1
解决办法
56
查看次数

在numpy中获得polyfit的反函数

我通过以下方式将二阶多项式拟合到多个x/y点:

poly  = np.polyfit(x, y, 2)
Run Code Online (Sandbox Code Playgroud)

如何在python中反转此函数,以获得对应于特定y值的两个x值?

python numpy polynomials

3
推荐指数
1
解决办法
4661
查看次数

当系数是非常大的整数时,poly1d 会给出错误的系数

我正在 ubuntu 16.04.2 LTS 和 NumPy 1.12.1 中使用 python 3.5.2。当我使用 poly1d 函数获取 coeffs 时,计算出现错误:

>>> from numpy import poly1d
>>> from math import fabs
>>> pol = poly1d([2357888,459987,78123455],True)
>>>[int(x) for x in pol.coeffs]
[1, -80941330, 221226728585581, -84732529566356586496]
Run Code Online (Sandbox Code Playgroud)

正如您在此列表中看到的,最后一个元素不正确。当我使用 Wolfram Alpha 构建多项式时,我得到:

x^3 - 80941330 x^2 + 221226728585581 x - 84732529566356580480
Run Code Online (Sandbox Code Playgroud)

最后一个系数与使用 poly1d 时不同(第一个系数以 ...496 结尾,另一个以 ...480 结尾)。我必须假设正确的系数是最后一次计算(由 WolframAlpha 制作)。

这是一个错误还是有什么我没有考虑到的?我用低绝对值的根进行了探索;在这种情况下,计算是正确的。但当我使用“大根”时,差异就很明显了。

python numpy polynomials

3
推荐指数
1
解决办法
823
查看次数

对于多项式,得到它的所有极值并通过突出显示所有单调碎片来绘制它

有人问我这个有趣的问题,我认为值得在这里发布,因为Stack Overflow上没有任何相关的线程.

假设我在长度n向量中有多项式系数pc,其中n - 1变量的多项式x可以用其原始形式表示:

pc[1] + pc[2] * x + pc[3] * x ^ 2 + ... + pc[n] * x ^ (n - 1)
Run Code Online (Sandbox Code Playgroud)

R核函数polyroot可以在复数域中找到该多项式的所有根.但是我们常常对极值感兴趣,对于单变量函数,局部最小值和最大值交替出现,将函数分解成单调的片段.

我的问题是:

  1. 如何在多项式的域中获得所有极值(实际上所有的鞍点)?
  2. 如何使用双色方案绘制这个多项式:红色表示上升部分,绿色表示下降部分?

将它写成函数会很好,这样我们就可以轻松地探索/可视化多项式.

例如,考虑5度的多项式:

pc <- c(1, -2.2, -13.4, -5.1, 1.9, 0.52)
Run Code Online (Sandbox Code Playgroud)

plot r polynomials

3
推荐指数
1
解决办法
302
查看次数

使用 geom_line 的 ggplot 中的时间序列

我对 gganimate 比较陌生,我正在尝试在 R studio 上创建一个简单的多项式时间序列图。

x <- 1:100

f <- function (x){
  return(-(x)^2)
}

df <- data.frame(x, y= -(x)^2)

ggplot(df, aes(x, y)) + 
   geom_line() + 
   stat_function(fun=f) + 
   transition_states(x, transition_length = 1, state_length = 2 )
Run Code Online (Sandbox Code Playgroud)

我的错误显示:

" Error in transform_path(all_frames, next_state, ease, params$transition_length[i],  : 
  transformr is required to tween paths and lines "
Run Code Online (Sandbox Code Playgroud)

我想知道 transition_state() 中是否缺少某些东西?它作为静态图看起来不错,但我想让它成为一个时间序列图。

感谢任何建议/帮助!谢谢 !

r ggplot2 rstudio polynomials gganimate

3
推荐指数
1
解决办法
1899
查看次数

sympy 中具有可变指数的展开多项式

我对 sympy 不太有经验,所以很抱歉,如果这是一个简单的问题。

如何使用 sympy 来展开二项式表达式?例如,假设我想让 sympy 计算多项式 $(x^2 + x + 1)^n$ 中 $x^2$ 的系数(我期望答案为 $n + \binom{n} {2}$)。

我尝试了以下代码:

x = symbols('x')
n = symbols('n', integer=True, nonnegative = True)
expand((x**2+x+1)**n)
Run Code Online (Sandbox Code Playgroud)

但结果只是 $(x^2+x+1)^n$ 而我想要二项式展开,即$(1+x+x^2)^n=\sum_{i=0}^{2n}{\left(\sum_{l=\max{0,in}}^{[i/2]}{ \binom{n}{i-2l,l,n-i+l}}\right)x^i}$

提前致谢。

sympy python-3.x polynomials

3
推荐指数
1
解决办法
1266
查看次数