matlab问题,求大神指教

matlab问题,求大神指教这个integral3哪里用错了
2024-11-16 21:54:52
推荐回答(1个)
回答1:

问题出在自定义函数上,点运算符不完整,而导致错误使用  *(内部矩阵维度必须一致)。 

完整的自定义函数为

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 的约束函数是否正确