使用向量计算积分2

时间:2013-11-29 20:06:10

标签: matlab

我是MATLAB的新手。想要使用integral2如下

function num = numer(x)
fun=@(p,w) prod((p+1-p).*(1-w).*exp(w.*x.*x/2))
num= integral2(fun ,0,1,0,1)
end

我从

开始出现了几个错误
Error using  .* 
Matrix dimensions must agree.

Error in numer>@(p,w)prod(p+(1-w).*exp(w.*x.*x/2)) (line 5)
fun=@(p,w) prod(p+(1-w).*exp(w.*x.*x/2))
你能告诉我我做错了吗? 感谢

1 个答案:

答案 0 :(得分:2)

来自integral2的帮助:

  

所有输入功能必须接受数组作为输入并操作
  按元素。函数Z = FUN(X,Y)必须接受
的数组X和Y.   相同的大小并返回一组相应的值。

x为非标量时,您的函数fun未执行此操作。通过将所有内容包装在prod中,函数始终返回标量。假设您的prod位于正确的位置并利用指数的属性,我相信此版本将执行向量x所需的操作:

x = [0 1];
lx = length(x);
fun = @(p,w)(p+1-p).^lx.*(1-w).^lx.*exp(w).^sum(x.*x/2);
num = integral2(fun,0,1,0,1)

或者,可以使用fun = @(p,w)(p+1-p).^lx.*(1-w).^lx.*exp(sum(x.*x/2)).^w;

相关问题