matlab函数编写的问题

这个式子中N=K=100, TS=TP=10 ,以p1为自变量,E1(tsu)为因变量,试给出函数代码并画出x-y坐标图。

参考代码:

N=100; K=N;
Ts=10; Tp=10;
E1=@(p)sum(arrayfun(@(i)nchoosek(K-2+i,i)*p^i*(1-p)^(K-1)*(Ts+i*Tp),0:N));
p=0:0.02:1;
plot(p,arrayfun(E1,p))
xlabel p_1; ylabel E_1(t_{su})

 

说明两点:

 

1、从感觉上,这种二项形式的公式,p1的指数是i,(1-p1)的指数应该是K-i才比较符合常理。另,既然Tp=Ts,最后一项完全可以写成(1+i)*Ts。当然,这些只是猜测,公式的正确性应该由题主自行保证,我这里只是提醒一下而已。

 

2、使用nchoosek函数,当结果比较大时会有如下精度警告:

Warning: Result may not be exact. Coefficient is greater than 1.000000e+015 and is only accurate to 15 digits.

可以忽略这个警告,一般来说它对结果的影响并不大。也可以使用符号运算来避免这样的警告:

N=100; K=N;
Ts=10; Tp=10;
Cnk=@(n,k)double(sym(sprintf('%i!/%i!/%i!',n,k,n-k)));
E1=@(p)sum(arrayfun(@(i)Cnk(K-2+i,i)*p^i*(1-p)^(K-1)*(Ts+i*Tp),0:N));
plot(p,arrayfun(E1,p))
xlabel p_1; ylabel E_1(t_{su})

追问

好像我问的有点出入,能和你百度私信吗?

追答

有问题可以追问或者私信,但我不一定能及时答复。

温馨提示:答案为网友推荐,仅供参考
相似回答