代码之家  ›  专栏  ›  技术社区  ›  Shika93

积分和标量积函数处理matlab

  •  0
  • Shika93  · 技术社区  · 6 年前

    我需要计算这种积分

    I defined the two f(x,y) and g(x,y) inside a single function

    h=@(x,y)f,@(x,y)g_
    < /代码> 
    
    

    其中fg是之前定义的公式。这样我就有了一个1x2单元,我想把标量积计算为

    f=@(x,y)dot(h,e)
    

    其中,e是向量2x1,然后进行积分

    int=integration2(f,a,b,c,d);
    < /代码> 
    
    

    给我这个错误

    'cell'类型的输入参数的未定义函数'conj'。 点错误(第37行) c=总和(conj(a).*b); tm_np>@(r,phi)点错误(e_n_偶数,e) 积分2计算错误>积分2 t/张量(第228行) z=乐趣(x,y);nfe=nfe+1; 积分2计算错误>积分2(第55行) [qsub,esub]=张量(thetal,thetar,phib,phit); 积分2计算错误(第9行) [q,errbnd]=积分2t(fun,xmin,xmax,ymin,ymax,optionstruct); 积分错误2(第106行) Q=积分2计算(fun、xmin、xmax、yminfun、ymaxfun、opstruct); < /代码>

    我不明白为什么会给我这个错误。作为积分的结果,我应该有一个2x1向量

    我定义了这两个f(x,y)g(x,y)在单个函数内

    h = {@(x,y) f, @(x,y) g};
    

    在哪里?fg是以前定义的公式。这样我就有了一个1x2单元,我想把标量积计算为

    F = @(x,y) dot(h,E)
    

    在哪里?E是向量2x1,然后积分

    int = integral2(F,a,b,c,d);
    

    给我这个错误

    Undefined function 'conj' for input arguments of type 'cell'.
    
    Error in dot (line 37)
            c = sum(conj(a).*b);
    
    Error in tm_np>@(R,PHI)dot(e_n_even,E)
    
    Error in integral2Calc>integral2t/tensor (line 228)
            Z = FUN(X,Y);  NFE = NFE + 1;
    
    Error in integral2Calc>integral2t (line 55)
    [Qsub,esub] = tensor(thetaL,thetaR,phiB,phiT);
    
    Error in integral2Calc (line 9)
        [q,errbnd] = integral2t(fun,xmin,xmax,ymin,ymax,optionstruct);
    
    Error in integral2 (line 106)
        Q = integral2Calc(fun,xmin,xmax,yminfun,ymaxfun,opstruct);
    

    我不明白为什么会给我这个错误。作为积分的结果,我应该有一个2x1向量

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ander Biguri    6 年前

    问题在于数据的生成。 integral2 只接受获取 @(x,y) 作为 矢量 输入并返回相同的大小。以你为例 h 已经不是那样了,而且 F 没有 @(x,y) 输入(嗯,它有,但你决定不把它们传递给 H !!!!).

     % sample data
     f=@(x,y)x.^2+y;
     g=@(x,y)y.^2+x+3;
     E=[3 1];
     % Create auxiliary fucntion
     mydot=@(x,y)(f(x,y).*E(1)+g(x,y).*E(2));
     % work
     int = integral2(mydot,0,3,1,5);