2017-04-13 22 views
0

この式をRの非線形ソルバーに実装しようとするのが最も困難です。nleqslvBBの両方のパッケージを試していますが、私は目を覚ますまで文書を検索して読んでいますが、私の脳を包むことはできません。式自体は次のように動作:Rの和を含む非線形方程式R

s2s2.bar、及び priceは等しい長さのベクトルを知られている

The Equation

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

。私は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]はベクトルの1つの要素ですが、長さ(s2)に等しい長さのベクトル全体を割り当てようとしています。あなたはs2とs2.barの代わりにs2 [n]とs2.bar [n]を使用しているのですか?あなたが指数を取った後にベクトル全体を合計しているので、価格は問題を引き起こさない。 – 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としてのベクトルをある記述する必要があります。

データを入力していないので、私たちはテストできません。私はs2prices2.barの値をランダムに生成してテストを試みました。場合によっては、nleqslvBBの両方の解決策が得られることもありますが、必ずしもそうとは限りません。

パッケージnleqslvの場合、デフォルトの方法が常に機能するとは限りません。 パッケージにはさまざまな方法があるので、パッケージにはtestnslvという関数を使用して、提供されている方法で解決策が見つかるかどうかを確認する必要があります。

+0

:私が解決しようとしている実際の式はこれですこの。これはうまくいくと思われますが、それはまったく別の問題です。ありがとうございました! – Lompoc42

+0

解決策が見つかったかどうかを確認するために 'nleqslv'と' 'BBsolve'終了コードをテストすることを忘れないでください。 upvoteを与える? – Bhas

+0

ええ、私はそれが収束した解決策を投げ返すことを確認するためにループの中に小さなテストを書く必要がありました。うまくいけば私は正しい道にある。 upvoteしようとしましたが、少なくとも15の評判のポイントがなければ私をさせません。 – Lompoc42

関連する問題