Home > Enterprise >  How to solve a cubic function in R
How to solve a cubic function in R

Time:09-16

Good day to all!

I have a following cubic equation.

Left <- P^3 4*P^2 6*P
Right <- 2

How do I get R to solve for P to get Left = Right?

Thanks in advance.

CodePudding user response:

1. uniroot()

You could use uniroot() to search for a root of a function with respect to its first argument.

uniroot(\(x, y) x^3   4*x^2   6*x - y, c(0, 1), y = 2, extendInt = "yes")

$root
[1] 0.278161

$f.root
[1] -1.779565e-05

$iter
[1] 6

$init.it
[1] NA

$estim.prec
[1] 6.103516e-05

2. polyroot()

If the function is a real or complex polynomial, you could specifically use polyroot(z), where z is the vector of polynomial coefficients in increasing order.

y <- 2
polyroot(c(-y, 6, 4, 1))

# [1]  0.2781631-0.000000i -2.1390815 1.616897i -2.1390815-1.616897i

Both approaches solve the equation with the root 0.278161. (Besides a real root, polyroot also gives two imaginary roots)

CodePudding user response:

If you want symbolic solutions, I guess you can try Ryacas like below

> library(Ryacas)

> yac_str("Solve(P^3 4*P^2 6*P==2,P)")
[1] "{P==(71/27 Sqrt(187/27))^(1/3)-(Sqrt(187/27)-71/27)^(1/3)-4/3,P==Complex(-(4/3 ((71/27 Sqrt(187/27))^(1/3)-(Sqrt(187/27)-71/27)^(1/3))/2),Sqrt(3/4)*((71/27 Sqrt(187/27))^(1/3) (Sqrt(187/27)-71/27)^(1/3))),P==Complex(-(4/3 ((71/27 Sqrt(187/27))^(1/3)-(Sqrt(187/27)-71/27)^(1/3))/2),-Sqrt(3/4)*((71/27 Sqrt(187/27))^(1/3) (Sqrt(187/27)-71/27)^(1/3)))}"
  • Related