我試圖解決函數解方程[R
$\sum_{j=1}^{180} x^{a_j} = 1$
我創建了兩個功能:
f1 <- function(x){c(rep(x,180))}
f2 <- function(x){sum(f1(x)^vec) - 1}
其中VEC是我的$ a_j $向量。
Uniroot不起作用。我應該使用哪個功能?
PS:有更好的語法嗎?
感謝
我試圖解決函數解方程[R
$\sum_{j=1}^{180} x^{a_j} = 1$
我創建了兩個功能:
f1 <- function(x){c(rep(x,180))}
f2 <- function(x){sum(f1(x)^vec) - 1}
其中VEC是我的$ a_j $向量。
Uniroot不起作用。我應該使用哪個功能?
PS:有更好的語法嗎?
感謝
爲什麼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
那很簡單。謝謝。 – user1627466 2013-03-26 12:47:43
我剛剛意識到有一個解決方案之外的區間c(-100,100),但我似乎無法得到它與uniroot,因爲「f()值在終點不符號相反」 – user1627466 2013-03-26 13:36:18
這就是我的意思「只要你正確定義了尋找的時間間隔」。我只用c(-100,100)作爲例子。如果有幾種解決方案,則不會阻止您以不同的時間間隔多次運行該功能。 – plannapus 2013-03-26 13:38:11
您可以使用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希望找到負指數polynome的根。解決方法是將指數的最大值因式分解以適用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)
但是,如果他實際上有一堆'a_j'指數,他必須列出它們。他的'f1'功能與他發佈的圖片不一致。 – 2013-03-25 17:13:00
polyroot(c(-1,vec))不能解決我的問題。我已經用vec = 2試過了,我得到0.5而不是1. vec是無序指數的列表 – user1627466 2013-03-26 10:32:03
這根本就不是我想要的。在這個例子中,我想解決-1 + x^2 = 0 – user1627466 2013-03-26 10:48:43
請編輯您的問題,以保持與答案的一致性。 – agstudy 2013-03-26 11:56:02