参数积分和2D函数的数字绘图

时间:2015-05-18 13:32:03

标签: matlab matlab-figure

我将设计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参数是完全值得的,但它不会是一个封闭的表单函数。

提前致谢。

1 个答案:

答案 0 :(得分:1)

我已经更改了代码中的一些细节,我试着解释所有这些细节。

  1. 无需定义不符号的符号变量。

  2. 代码:

    clear;
    
    syms x;
    
    sigma = 1;
    mu = 0; % This is never used!
    
    1. 您想要为不同的n集成函数f(n,x)dx。如果你创建一个n的网格网格(而不是一个向量),你将有大量重复的f(ni,x)你将不会使用。
    2. 只是做:

      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);
      
      1. int不接受符号函数网格! (或者我还没设法让它发挥作用......)。
      2. 所以放一些就好了!

        for ii=1:length(n)
            for jj=1:length(t)
                ff(ii,jj) = int(f(ii), x, -inf, t(jj));
            end
        end
        
        1. 现在我们想要一个网格的网格!
        2. 像这样:

          [t,n] = meshgrid(t, n);
          
          1. 并且您想要绘制数值,因此请使用double()将符号转换为数字:
          2. 情节:

            mesh(n,t,double(ff));
            

            结果(由于需要明显的计算工作量而得分较少)

            enter image description here