私は解決しようとしています
$\sum_{j=1}^{180} x^{a_j} = 1$
私は2つの関数を作成しました:
f1 <- function(x){c(rep(x,180))}
f2 <- function(x){sum(f1(x)^vec) - 1}
vec
私の a_j
ベクトルはどこですか。
uniroot
動作しません。どの関数を使用すればよいですか?
より良い構文はありますか?
私は解決しようとしています
$\sum_{j=1}^{180} x^{a_j} = 1$
私は2つの関数を作成しました:
f1 <- function(x){c(rep(x,180))}
f2 <- function(x){sum(f1(x)^vec) - 1}
vec
私の a_j
ベクトルはどこですか。
uniroot
動作しません。どの関数を使用すればよいですか?
より良い構文はありますか?
uniroot
実際、なぜ機能しないのですか?関数を正しく定義し、それを探す間隔が機能する限り、次のようになります。
aj <- c(-4,-5,-3,-4,-2,-3,-1,-2,-7,-6,-5,-8,-7,-6,-6,-7,-5,-6,
-4,-5,-3,-4,-9,-8,-7,-10,-9,-8,-1,-2,rep(-1,150))
f <- function(x,vec){sum(x^vec)-1}
uniroot(f, interval=c(-100,100), vec=aj)
$root
[1] -0.518658
$f.root
[1] -0.009276057
$iter
[1] 21
$estim.prec
[1] 6.103516e-05
polyroot
たとえば、を使用できます
polyroot(c(-1,rep(1,180)))
ここ
p(x) = -1 + 1 * x + … + 1 * x^180
編集あなたのベクトルajを使用するには
あなたのベクトルが何であるかは明確ではありませんvec
、私はあなたがこのようなものが欲しいと思います:
polyroot(c(-1,vec))
どこvec
vec = (a1,a2,..............,a180)
OPの説明後に編集:
OPは、負の指数を持つ多項式の根を見つけたいと考えています。解決策は、適用できる指数の最大値で因数分解することpolyroot
です。
vec <- c(-4,-5,-3,-4,-2,-3,-1,-2,-7,-6,-5,-8,-7,-6,-6,-7,-5,-6,
-4,-5,-3,-4,-9,-8,-7,-10,-9,-8,-1,-2,rep(-1,150))
ma <- max(abs(vec))
vec <- sort(ma+vec)
polyroot(as.data.frame(table(vec))$Freq)