Matlab 如何编程包含和和和组合的递归关系?

Matlab 如何编程包含和和和组合的递归关系?,matlab,relation,recurrence,Matlab,Relation,Recurrence,我试图用MATLAB来解决一个问题。 递归关系如下所示: ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ f(1,r,N)=(0.5)^N*NCr 这就是我做的函数: 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);

我试图用MATLAB来解决一个问题。 递归关系如下所示:

‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ ‍‍‍‍‍‍ f(1,r,N)=(0.5)^N*NCr

这就是我做的函数:

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时,我根本没有得到结果,而是得到如下错误消息:

???在24时使用==>
nchoosek
时出错
第二个输入必须是非负整数

在6处==>fxprb中出错
f=(0.5^g)*nchoosek(g,r)

在9处==>
fxprb
出现错误
x=fxprb(n-1,i,g)


您能帮我一个忙吗?

在递归调用中将参数
i=1:g-1
传递给
fxprb()
,您假设
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

通过在递归调用中将参数
i=1:g-1
传递给
fxprb()
,您可以假定
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

我认为它
NCr
意味着二项系数?和
k==i==n
?和
g==N
?函数接受三个参数,而不是像图中那样的两个。在代码的最后一项中有一个指数
r
,在图像中有一个指数
N-r
,哪一个是正确的。。。坦率地说,草率可能是这里的问题之一……我认为它
NCr
意味着二项系数?和
k==i==n
?和
g==N
?函数接受三个参数,而不是像图中那样的两个。在代码的最后一项中有一个指数
r
,在图像中有一个指数
N-r
,哪一个是正确的。。。坦率地说,草率可能是这里的问题之一……我太爱你了。你是我的救世主。我一点也不夸张。@min你会认为你至少可以接受你的救世主我非常爱你。你是我的救世主。我一点也不夸张。@min你会认为你至少可以接受你的救世主