2017-04-13 86 views
0

我正在嘗試在R中實現這個方程到非線性求解器中最困難的時候。我正在嘗試nleqslvBB程序包,但到目前爲止只能得到錯誤。我已經搜索並閱讀文檔,直到我的眼睛流血,但我無法將我的大腦包裹在它周圍。公式本身是這樣的:包含求和的非線性方程R

The Equation

s2 * sum(price^(2*x+2)) - s2.bar * sum(price^(2*x)) = 0

s2s2.bar,和price是已知的相等長度的向量。

BB嘗試的最後一次嘗試是這樣的:

gamma = function(x){ 
     n = len(x) 
     f = numeric(n) 
     f[n] = s2*sum(price^(2*x[n]+2)) - s2.bar*sum(price^(2*x[n])) 
     f 
     } 

g0 = rnorm(length(price)) 
results = BBsolve(par=g0, fn=gamma) 

任何幫助是極大的讚賞

+0

f [n]是一個矢量的一個元素,但是你試圖給它分配一個長度等於長度(s2)的整個矢量。你的意思是使用s2 [n]和s2.bar [n]而不是s2和s2.bar?價格不會引起問題,因爲您在指數後對整個向量進行求和。 – psychometriko

+0

讓我再試一次: 我可能會從一開始就錯了。我試圖解決的實際公式是這樣的: http://i1330.photobucket.com/albums/w561/lompoc421/CodeCogsEqn%201_zpsrwocvotk.gif – Lompoc42

回答

0

從你你似乎已經糊塗了公式中的功能所使用的各種部件的描述。

你的功能gamma應該最有可能從你的描述寫爲

gamma <- function(x){ 
    f <- s2*sum(price^(2*x+2)) - s2.bar*sum(price^(2*x)) 
    f 
} 

s2prices2.bar是矢量,所以你給的公式將返回一個向量。

由於您尚未提供任何數據,因此我們無法測試。我曾嘗試使用隨機生成的s2price,s2.bar的值進行測試。有時候可以通過nleqslvBB獲得解決方案,但並非總是如此。

在包nleqslv的情況下,默認方法不會總是工作。 由於軟件包具有不同的方法,因此應使用軟件包中的函數testnslv來查看提供的任何方法是否找到解決方案。

+0

我不能相信它最終是一樣簡單這個。這似乎工作,雖然不總是,但這完全是另一個問題。謝謝! – Lompoc42

+0

不要忘記測試'nleqslv'和'BBsolve'終止代碼來檢查是否找到解決方案。並給予upvote? – Bhas

+0

是的,我不得不在while循環中編寫一個小測試,以確保它回退了收斂的解決方案。希望我在正確的軌道上。 試圖upvote,但它不會讓我沒有至少15聲望點。 – Lompoc42