我将设计2D函数作为概率密度函数,它是两个变量的函数,即f = f(x,n)
。然后,当目标正在绘制概率变化时,应考虑与参数x
相关的积分。 t
参数是计划为集成上限的变量。只需说n
是另一个调整因子就足够了。最后,在适当注意所考虑的meshgrid
的情况下,应该绘制概率曲面。
我对集成过程的选择是符号int
功能。但是有一个错误:Error using mupadmex
这是我的代码:
clear;
syms x;
syms n;
syms t;
sigma = 1;
mu = 0;
[t,n] = meshgrid(0:0.01:20, 1:1:100);
f = (n./(2*sigma*sqrt(pi))).*exp(-((n.*x)./(2.*sigma)).^2);
ff = int(f, x, -inf, t);
mesh(n,t,ff);
错误跟踪:
Error using mupadmex
Error in MuPAD command: The argument is invalid. [Dom::Interval::new]
Error in sym/int (line 153)
rSym = mupadmex('symobj::intdef',f.s,x.s,a.s,b.s,options);
Error in field (line 14)
ff = int(f, x, -inf, t);
请你帮我克服这个关系?!
PS。我知道有一些想法可以通过integral
函数以数字方式更多地执行此操作,但如果可能的话,我很容易通过int
函数来处理这种情况。因为此代码应该被其他代码段用作服务,并且生成的ff
参数是完全值得的,但它不会是一个封闭的表单函数。
提前致谢。
答案 0 :(得分:1)
我已经更改了代码中的一些细节,我试着解释所有这些细节。
无需定义不符号的符号变量。
代码:
clear;
syms x;
sigma = 1;
mu = 0; % This is never used!
只是做:
t=(0:1:20);
n=(1:10:100);
% are you sure you dont want ((n.*x)-mu) here?
f = (n./(2*sigma*sqrt(pi))).*exp(-((n.*x)./(2.*sigma)).^2);
int
不接受符号函数网格! (或者我还没设法让它发挥作用......)。 所以放一些就好了!
for ii=1:length(n)
for jj=1:length(t)
ff(ii,jj) = int(f(ii), x, -inf, t(jj));
end
end
像这样:
[t,n] = meshgrid(t, n);
double()
将符号转换为数字:情节:
mesh(n,t,double(ff));
结果(由于需要明显的计算工作量而得分较少)