这是分开写代码:
global t inf l T u
t = input( 't = ' );
inf = input( 'inf = ' );
l = input( 'l = ' );
T = input( 'T = ' );
u = input( 'u = ' );
temp1 = 0;
for c1 = 0 : t
for m1 = 0 : inf
temp1 = temp1 + poisspdf( ( m1 + c1 ), l*T ) * poisspdf( m1, u*T);
end
end
temp11 = temp1 - poisspdf( 0, l*T ) * poisspdf( 0, u*T );
我主要是考虑到修改的便利性,运行的结果是 【 t = 20, inf = 100,l = 0.5,T = 2,u = 0.5,>> temp11 = 0.5189】
但是我又觉得这样得到的结果误差会很大,因为自己设置的“inf”不可能达到无穷大,因此我把以上的代码写成下面的形式:
global t l T u
sym m1 c1;
t = input( 't = ' );
l = input( 'l = ' );
T = input( 'T = ' );
u = input( 'u = ' );
temp1 = double( symsum( symsum( poisspdf( (m1 + c1), l*T )*poisspdf(m1, u*T), 0, inf ), 0, t ) );
temp11 = temp1 - double( poisspdf( 0, l*T ) * poisspdf( 0, u*T ) );
一样的参数设置,但是会报错:
Error using mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function instead.
Error in sym/double (line 514)
Xstr = mupadmex('symobj::double', S.s, 0);
Error in poisspdf (line 39)
x = double(x);
Error in Untitled2 (line 7)
temp1 = double( symsum( symsum( poisspdf( (m1 + c1), l*T )*poisspdf(m1, u*T), 0, inf ), 0, t ) );
请问这些问题怎么解呀,我觉得应该是求和函数用的不对,到我没有思路,请大神指点迷津,先行谢过!!!
![Matlab中关于泊松分布函数的二重函数求和的问题]()
1.jpg
![Matlab中关于泊松分布函数的二重函数求和的问题-1]()
2.jpg
![Matlab中关于泊松分布函数的二重函数求和的问题-2]()
3.jpg |