Matlab 如何编程包含和和和组合的递归关系?
我试图用MATLAB来解决一个问题。 递归关系如下所示: f(1,r,N)=(0.5)^N*NCr 这就是我做的函数: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);
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你会认为你至少可以接受你的救世主