2016-11-27 6 views
1

問題を解決するためにMATLABを使用しようとしています。合計と組み合わせを含む反復関係をプログラムするにはどうすればよいですか?

だからpicture

、この関数Iで

F(1、R、N)=(0.5)^ N *のNCr: 漸化式は次のようなものですmade:

function [ f ] = fxprb(n,r,g) 
%UNTITLED Summary of this function goes here 

if n==1 
    f=(0.5^g)*nchoosek(g,r) 
else 
    i=1:g-1 
    x=fxprb(n-1,i,g); 
    f=nchoosek(g,r)*sum(x.*((i/N)^r)*((1-i/N)^r)); 
end 

end 

コード化する方法がわかりません。私は固執しています。代わりに、私はこのようなエラーメッセージを取得、f(1,0,3)が正常に動作しますが、nが2より大きいとき、私はすべての結果を取得していない午前:

を??? ==>nchoosek at 24を使用しているエラー
2番目の入力は負でない整数でなければなりません。 6
f=(0.5^g)*nchoosek(g,r);

で==> fxprbで

エラー==でエラーが発生しました> 9
x=fxprb(n-1,i,g);

fxprbあなたは私を助けることはできますか?

+0

を 'NCr'は二項係数を意味しますか?そして 'k == i == n'?そして 'g == N'?関数は3つの引数を取るが、画像のように2つではない。そして、コード中の最後の項に指数部「r」があり、画像中の「N-r」は正しいですか? ...素直になるためには、たぶん汚れはここの問題の一つでしょう... –

答えて

0

再帰呼び出しで引数i = 1:g-1fxprb()に渡すと、nchoosek()がベクトル入力のために複数の出力を生成すると仮定しています。

これはありません。

だから、あなただけループする必要があります:私はそれを取る

function f = fxprb(n,r,N) 

    if n==1 
     f = (0.5^N) * nchoosek(N,r); 

    else 

     f = 0; 
     for k = 1:N-1 
      f = f + fxprb(n-1,k,N) * (k/N)^r * (1 - k/N)^(N-r) ; 
     end 

     f = f * nchoosek(N,r); 

    end 

end 
+0

私はあなたが大好きです。あなたは私の救い主です。そして私は全く誇張していません。 – min

+0

@min少なくともあなたの救い主に受け入れてもらえると思うでしょう。 ;)http://stackoverflow.com/help/someone-answers – beaker

関連する問題