问题出在自定义函数上,点运算符不完整,而导致错误使用 *(内部矩阵维度必须一致)。
完整的自定义函数为
fun3=@(x,y,z)z.^2.*log(x.^2+y.^2+z.^2+1)./(x.^2+y.^2+z.^2+1)
另外还存在的问题是
1、自定义函数fun3,后面附带约束条件是不正确的,可以去掉。
2、变量z的积分区间,应该为约束函数,即
zmin = 0;
zmax = @(x,y) sqrt(1 - x.^2 - y.^2);
3、处理后的代码
fun3=@(x,y,z)z.^2.*log(x.^2+y.^2+z.^2+1)./(x.^2+y.^2+z.^2+1) %.*(z>=0 & z<=sqrt(1-x.^2-y.^2));
xmin = -1;xmax = 1;
ymin = -1;ymax = 1;
zmin = 0;zmax = @(x,y) sqrt(1 - x.^2 - y.^2);
I=integral3(fun3,xmin,xmax,ymin,ymax,zmin,zmax)
4、最后,你还得检查一下,ymin,ymax ;zmin ,zmax 的约束函数是否正确