我是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))
你能告诉我我做错了吗?
感谢
答案 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;
。