我有以下功能:
2.3366*x^1+(-3.2684)*x^2+3.6513*x^3+(-2.2608)*x^5+2.1501*x^13+(-2.7412)*x^21+1.8876*x^34 = 0.8232711
我需要解决x。
在MATLAB中我会使用以下内容:
fsolve(function1=15/18.22,x)
我如何在R中执行此操作?我可以使用解决方法或uniroot或其他东西吗?
答案 0 :(得分:8)
使用polyroot
:
xx = c(-0.8232711,2.3366,-3.2684,3.6513,0,-2.2608,rep(0,13-6),
2.1501,rep(0,21-14),-2.7412,rep(0,34-22),1.8876)
polyroot(xx)
round(polyroot(xx),2)
[1] 0.58+0.00i 0.12+0.63i 0.12-0.63i 0.83-0.21i 0.21+1.02i -0.97+0.35i -0.18-0.99i 0.97-0.06i
[9] 0.60+0.81i -1.03+0.00i 0.21-1.02i 0.83+0.21i -0.18+0.99i -1.03-0.23i 0.05-1.02i 0.97+0.06i
[17] 0.05+1.02i -1.03+0.23i 0.60-0.81i 0.75+0.63i -0.58+0.85i -0.76-0.74i 0.75-0.63i 0.52+0.88i
[25] -0.87+0.60i -0.58-0.85i 0.95-0.48i -0.40+1.01i -0.40-1.01i 0.95+0.48i -0.76+0.74i -0.97-0.35i
[33] 0.52-0.88i -0.87-0.60i
您可以使用以下方法检查您是否拥有正确的多项式:
library(polynom)
as.polynomial(xx)
-0.8232711 + 2.3366*x - 3.2684*x^2 + 3.6513*x^3 - 2.2608*x^5 + 2.1501*x^13 - 2.7412*x^21 +
1.8876*x^34
答案 1 :(得分:2)
感谢您的回答。我自己想出来了。
f1<-function(z) {(2.3366*z^1+(-3.2684)*z^2+3.6513*z^3+(-2.2608)*z^5+2.1501*z^13+(-2.7412)*z^21+1.8876*z^34)-0.8232711}
Z <- uniroot(f1,c(0,1))
Z1 <-Z$root
Z1