【问题标题】:Custom changes to polynomial function (polynom) for a variable in RR中变量的多项式函数(多项式)的自定义更改
【发布时间】:2017-06-10 21:03:05
【问题描述】:

这个问题更多是出于我自己的好奇心。我正在查看 R 的 Polynom 文档 pdf,并注意到几个基本的多项式运算,例如:

p <- poly.calc(1:5)
## -120 + 274*x - 225*x^2 + 85*x^3 - 15*x^4 + x^5

但是,如果我必须解以下等式,我将如何表示“x”:

(x+1)3x^3 + (x+1)4x^2 + (x+1) 2x + 3 = 17

作为奖励,如果我想指定 x 大于 0,并将等式更改为 (x+1)3x^3 + (x+1)4x^2 + (x+1) 2x + 3 ≈ 17 where x &gt; 0,该怎么办? (如果可能的话)

【问题讨论】:

    标签: r polynomial-math polynomials polynomial-approximations


    【解决方案1】:

    我认为您在问以下问题:

    与图书馆polynom:

    library(polynom)
    #(x+1)3x^3 + (x+1)4x^2 + (x+1) 2x + 3 - 17 = (x+1)(3x^3 + 4x^2 + 2x) - 14
    p1 <- polynomial(coef = c(1, 1))
    p2 <- polynomial(coef = c(0, 2, 4, 3))
    p <- p1 * p2 - 14
    roots <- solve(p)
    real.roots <- Re(roots[Im(roots)==0])
    # [1] -2.0554784  0.9069195
    real.positive.roots <- real.roots[real.roots > 0]
    # [1] 0.9069195
    plot(p)
    abline(h=0)
    abline(v=real.roots, lty=2)
    points(real.roots, rep(0, length(real.roots)))
    

    使用函数uniroot

    f <- function (x) (x+1)*3*x^3 + (x+1)*4*x^2 + (x+1)*2*x + 3 - 17
    root1 <- uniroot(f, c(-2, 1), tol = 0.0001)$root
    # [1] 0.9069388
    root2 <- uniroot(f, c(-3, -2), tol = 0.0001)$root
    # [1] -2.055487
    
    x <- seq(-2.5,1.5,0.001)
    plot(x, f(x), type='l')
    abline(h=0)
    abline(v=root1, lty=2)
    abline(v=root2, lty=2)
    points(root1, 0, col='red', pch=19)
    points(root2, 0, col='red', pch=19)
    

    【讨论】:

      猜你喜欢
      • 2017-12-14
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 1970-01-01
      • 2022-06-12
      • 2020-08-27
      相关资源
      最近更新 更多